导航:首页 > 网络共享 > 软件缺陷检测图神经网络

软件缺陷检测图神经网络

发布时间:2022-11-04 01:32:06

‘壹’ 软件缺陷度量方法简述

1.原则上来讲,我们更希望一种规范化开发的体系来规正这个命题,不需要为此伤脑筋。但在里程碑或计划的截止时间点能结束测试对大多数的软件项目仅仅是一种期望,而不是既定的现实。理想的情况下,我们可以严格执行计划,然后在计划要求的deadline或者里程碑点上提交交付件,以确认该里程碑是否达到要求,是否可以进行下一阶段的工作——但正如前提所言,这个仅仅是理想情况
2.现在让我们现实一点。我们为什么会有这样的问题(一个软件如何确定测试结束点)?往往就是因为我们不知道何时可以结束一个软件的测试。不管教科书上如何说明一个软件只要还在生命周期内,就无法结束测试,但现实要求我们在某一个时间点上,结束对软件某一阶段的测试。那么,这个问题实际上就已经转化为确定该阶段测试的结束点的方法了。这个方法可能是一种规范,一套流程,一些交付件,一些评审,一些由统计学原理得出的收敛曲线或者仅仅只是一些确认而已。而个人认为,无论这个方法是何种形式的,其基本的要求就是能达成一种协议,确认该协议生效——那么这个阶段的测试就结束了,至于这个点在什么时间,我想就是完成所有要求的这些确认的时间而已。
在软件消亡之前,如果没有测试的结束点,那么软件测试就永无休止,永远不可能结束。软件测试的结束点,要依据自己公司具体情况来制定,不能一概而论!个人认为测试结束点由以下几个条件决定::
1.基于“测试阶段”的原则:
每个软件的测试一般都要经过单元测试、集成测试、系统测试这几个阶段,我们可以分别对单元测试、集成测试和系统测试制定详细的测试结束点。每个测试阶段符合结束标准后,再进行后面一个阶段的测试。举个例子来说:单元测试,我们要求测试结束点必须满足“核心代码100%经过Code Review”、“功能覆盖率达到100%”、“代码行覆盖率不低于80%”、“不存在A、B类缺陷”、“所有发现缺陷至少60%都纳入缺陷追踪系统且各级缺陷修复率达到标准”等等标准。集成测试和系统测试的结束点都制定相关的结束标准,当然也是如此。
2.基于“测试用例”的原则:
测试设计人员设计测试用例,并请项目组成员参与评审,测试用例一旦评审通过,后面测试时,就可以作为测试结束的一个参考标准。比如说在测试过程中,如果发现测试用例通过率太低,可以拒绝继续测试,待开发人员修复后再继续。在功能测试用例通过率达到100%,非功能性测试用例达到95%以上,允许正常结束测试。但是使用该原则作为测试结束点时,把握好测试用例的质量,非常关键。
3.基于“缺陷收敛趋势”的原则:
软件测试的生命周期中随着测试时间的推移,测试发现的缺陷图线,首先成逐渐上升趋势,然后测试到一定阶段,缺陷又成下降趋势,直到发现的缺陷几乎为零或者很难发现缺陷为止。我们可以通过缺陷的趋势图线的走向,来定测试是否可以结束,这也是一个判定标准。
4.基于“缺陷修复率”的原则:
软件缺陷在测试生命周期中我们分成几个严重等级,它们分别是:严重错误、主要错误、次要错误、一般错误、较小错误和测试建议6种。那我们在确定测试结束点时,严重错误和主要错误的缺陷修复率必须达到100%,不允许存在功能性的错误;次要错误和一般错误的缺陷修复率必须达到85%以上,允许存在少量功能缺陷,后面版本解决;对于较小错误的缺陷修复率最好达到60%~70%以上。对于测试建议的问题,可以暂时不用修改。
5.基于“验收测试”的原则:
很多公司都是做项目软件,如果这种要确定测试结束点,最好测试到一定阶段,达到或接近测试部门指定的标准后,就递交用户做验收测试。如果通过用户的测试验收,就可以立即终止测试部门的测试;如果客户验收测试时,发现了部分缺陷,就可以针对性的修改缺陷后,验证通过后递交客户,相应测试也可以结束。
6.基于“覆盖率”的原则:
对于测试“覆盖率”的原则,个人觉的只要测试用例的“覆盖率”覆盖了客户提出全部的软件需求,包括行业隐性需求、功能需求和性能需求等等,只要测试用例执行的覆盖率达到100%,基本上测试就可以结束。如“单元测试中语句覆盖率最低不能小于80%”、“测试用例执行覆盖率应达到100%”和“测试需求覆盖率应达到100%”都可以作为结束确定点。如果你不放心,非得要看看测试用例的执行效果,检查是否有用例被漏执行的情况,可以对常用的功能进行“抽样测试” 和“随机测试”。对于覆盖率在单元测试、集成测试和系统测试,每个阶段都不能忽略。
7.基于“项目计划”的原则:
大多数情况下,每个项目从开始就要编写开发和测试的Schele,相应的在测试计划中也会对应每个里程碑,对测试进度和测试结束点做一个限制,一般来说都要和项目组成员(开发,管理,测试,市场,销售人员)达成共识,团队集体同意后制定一个标准结束点。如果项目的某个环节延迟了,测试时间就相应缩短。大多数情况下是所有规定的测试内容和回归测试都已经运行完成,就可以作为一个结束点。很多不规范的软件公司,都是把项目计划作为一个测试结束点,但是如果把它作为一个结束点,测试风险较大,软件质量很难得到保证。
8.基于“缺陷度量”的原则:
这个原则也许大家用的不是很多,了解比较少。我们可以对已经发现的缺陷,运用常用的缺陷分析技术和缺陷分析工具,用图表统计出来,方便查阅,分时间段对缺陷进行度量。我记得以前zhuzx在这个论坛上提出过缺陷分析技术这个问题,我不再重复讲述。我们也可以把 “测试期缺陷密度”和 “运行期缺陷密度”作为一个结束点。当然,最合适的测试结束的准则应该是“缺陷数控制在一个可以接受的范围内”。比如说:一万行代码最多允许存在多少个什么严重等级的错误,这样比较好量化,比较好实施,成为测试缺陷度量的主流。
9.基于“质量成本”的原则:
一个软件往往要从“质量/成本 /进度”三方面取得平衡后就停止。至于这三方面哪一项占主要地位,就要看是什么软件了。比如说是:人命关天的航天航空软件,那还是质量重要些,就算多花点钱、推迟一下进度,也要测试能保证较高质量以后才能终止测试,发布版本。如果是一般的常用软件,由于利益和市场的原因,哪怕有bug,也必须得先推出产品,没办法呀。一般来说,最主要的参考依据是:“把找到缺陷耗费的代价和这个缺陷可能导致的损失做一个均衡”。具体操作的时候,可以根据公司实际情况来定义什么样的情况下算是“测试花费的代价最划算、最合理”,同时保证公司利益最大化。如果找到bug的成本比,用户发现bug的成本还高,也可以终止测试。
10.基于“测试行业经验”的原则:
很多情况下,测试行业的一些经验,也可以为我们的测试提供借鉴。比如说测试人员对行业业务的熟悉程度,测试人员的工作能力,测试的工作效率等等都会影响到整个测试计划的执行。如果一个测试团队中,每个人都没有项目行业经验数据积累,拿到一个新的项目,自然是一头雾水,不知道从何处开始,测试质量自然不会很高。因此通过测试者的经验,对确认测试执行和结束点也会起到关键性的作用

‘贰’ 软件缺陷的分类标准

1.缺陷标识(Identifier): 缺陷标识是标记某个缺陷的一组符号。每个缺陷必须有一个唯一的标识。
2.缺陷类型 (Type): 缺陷类型是根据缺陷的自然属性划分的缺陷种类。
3.缺陷严重程度 (Severity) :缺陷严重程度是指因缺陷引起的故障对软件产品的影响程度。
4.缺陷优先级(Priority): 缺陷的优先级指缺陷必须被修复的紧急程度。
5.缺陷状态(Status) :缺陷状态指缺陷通过一个跟踪修复过程的进展情况。
6.缺陷起源(Origin) :缺陷来源指缺陷引起的故障或事件第一次被检测到的阶段。
7.缺陷来源(Source): 缺陷来源指引起缺陷的起因。
8.缺陷根源(Root Cause): 缺陷根源指发生错误的根本因素。 F- Function :影响了重要的特性、用户界面、产品接口、硬件结构接口和全局数据结构。并且设计文档需要正式的变更。如逻辑,指针,循环,递归,功能等缺陷。
A- Assignment: 需要修改少量代码,如初始化或控制块。如声明、重复命名,范围、限定等缺陷。
I- Interface: 与其他组件、模块或设备驱动程序、调用参数、控制块或参数列表相互影响的缺陷。
C- Checking: 提示的错误信息,不适当的数据验证等缺陷。
B Build/package/merge :由于配置库、变更管理或版本控制引起的错误。
D- Documentation: 影响发布和维护,包括注释。
G- Algorithm :算法错误。
U-User Interface:人机交互特性:屏幕格式,确认用户输入,功能有效性,页面排版等方面的缺陷。
P-Performance:不满足系统可测量的属性值,如:执行时间,事务处理速率等。
N-Norms:不符合各种标准的要求,如编码标准、设计符号等。 软件测试错误严重程度
1.Critical:不能执行正常工作功能或重要功能。或者危及人身安全。
2.Major:严重地影响系统要求或基本功能的实现,且没有办法更正。(重新安装或重新启动该软件不属于更正办法)
3.Minor:严重地影响系统要求或基本功能的实现,但存在合理的更正办法。(重新安装或重新启动该软件不属于更正办法)
4.Cosmetic:使操作者不方便或遇到麻烦,但它不影响执行工作功能或重要功能。
5.Other:其它错误。
同行评审错误严重程度
1.Major:主要的,较大的缺陷
2.Minor:次要的,小的缺陷 1.Resolve Immediately:缺陷必须被立即解决。
2.Normal Queue:缺陷需要正常排队等待修复或列入软件发布清单。
3.Not Urgent:缺陷可以在方便时被纠正。 1.Submitted: 已提交的缺陷
2.Open :确认“提交的缺陷”,等待处理
3.Rejected: 拒绝“提交的缺陷”,不需要修复或不是缺陷
4.Resolved :缺陷被修复
5.Closed :确认被修复的缺陷,将其关闭 1.Requirement:在需求阶段发现的缺陷
2.Architecture:在构架阶段发现的缺陷
3.Design:在设计阶段发现的缺陷
4.Code:在编码阶段发现的缺陷
5.Test:在测试阶段发现的缺陷 1.Requirement: 由于需求的问题引起的缺陷
2.Architecture: 由于构架的问题引起的缺陷
3.Design: 由于设计的问题引起的缺陷
4.Code: 由于编码的问题引起的缺陷
5.Test: 由于测试的问题引起的缺陷
6.Integration: 由于集成的问题引起的缺陷

‘叁’ 有缺陷图和无缺陷图在神经网络中的作用

加快学习速度、集中注意力。在神经网络中,缺陷并不会影响低层次的统计特征,如图像的垂直翻转,同时对性能并没有持久的影响,以及最终可以通过进一步的训练来克服。在神经网络中,有缺陷的图像能够增加自身的活跃性,使学习能力的速度更快,而无缺陷的图像有集中注意力的作用,提高自制力。

‘肆’ suakit工作原理

工作原理:连续可变气门正时技术,根据发动机的不同工作状态,通过调节气门关闭的时机,从而提高发动机的动力性能,提高燃油经济性。 被吸入发动机气缸的空气因惯性,进气过程结束后保留进入气缸的趋势。此时如果延迟气门关闭时间,气缸可吸入更多的空气,可以提高体积效率。其结果是延迟气门关闭时间越长,高转速下的性能就越高;反之越是提前关闭气门,低转速下的运转越稳定,扭矩越大。

‘伍’ 求软件测试大神解释下这张流程图什么意思

首先从流程图上看,该图是问题跟踪流程图。
1.新提交的:一般由测试人员提交问题,主要是描述问题现象,然后提交给对应开发;
2.已解决的:开发人员收到问题后,开始对问题进行分析,判断该问题是否为软件缺陷,如果是,则需要修改程序,如果不是,则需要将问题退回给测试人员;
3.已验证的:开发人员确认问题为软件缺陷后,修改问题,将“已解决的”的问题通过版本更新的形式或其他提交到测试人员,此时问题成为待验证问题,“已验证的”由测试人员操作,确定开发修改正确后,问题将关闭。
4.已关闭的:从上面的描述,一种是开发人员认为问题不属于软件缺陷,因此将问题退回给测试人员,一种测试人员验证问题通过后,问题可以关闭了。
5.未解决的:如果前面开发认为不是软件缺陷的问题,测试认为是软件缺陷,此时则不会将问题关闭,则是重新提交,成为未解决的,另外一种是验证的时候仍存在问题,验证不通过,也会成为未解决。需要开发重新修改软件,成为“已解决的”。
从上图来看,该流程图明显不够完善,很难看得问题在各个阶段的状态,建议以问题状态作为跟踪依据更好。

‘陆’ 推荐系统论文阅读(十)-基于图神经网络的序列推荐算法

论文:

论文地址: https://arxiv.org/abs/1811.00855

论文题目:《Session-based Recommendation with Graph Neural Networks》SR-GNN

github: https://github.com/CRIPAC-DIG/SR-GNN

基于会话的推荐一般是将序列会话建模,将整个session进行编码,变成一个隐向量,然后利用这个隐向量进行下一个点击预测。但是这种方法没有考虑到item直接复杂的转换(transitions)关系,也就是item之间在点击的session中除了时间顺序外还有复杂的有向图内的节点指向关系,所以之前的方法不足以很好的对点击序列进行建模。

现有基于会话的推荐,方法主要集中于循环神经网络和马尔可夫链,论文提出了现有方法的两个缺点:

1)当一个session中用户的行为数量十分有限时,这些方法难以获取准确的用户行为表示。如当使用RNN模型时,用户行为的表示即最后一个单元的输出,论文认为只有这样并非十分准确。

2)根据先前的工作发现,物品之间的转移模式在会话推荐中是十分重要的特征,但RNN和马尔可夫过程只对相邻的两个物品的 单向转移关系 进行建模,而忽略了会话中其他的物品。

为了克服上述缺陷,本文提出了用图神经网络对方法对用户对session进行建模:

下面具体介绍怎么进行图序列推荐

V = {v1,v2...vm}为全部的item,S = { }为一个session里面按时间顺序的点击物品,论文的目标是预测用户下一个要点击的物品vs,n+1,模型的任务是输出所有item的预测概率,并选择top-k进行推荐。

我们为每一个Session构建一个子图,并获得它对应的出度和入度矩阵。

假设一个点击序列是v1->v2->v4->v3,那么它得到的子图如下图中红色部分所示:

另一个例子,一个点击序列是v1->v2->v3->v2->v4,那么它得到的子图如下:

同时,我们会为每一个子图构建一个出度和入度矩阵,并对出度和入度矩阵的每一行进行归一化,如我们序列v1->v2->v3->v2->v4对应的矩阵如下:

这个矩阵里面的值是怎么计算的呢?下面讲一下:

看左边的出度矩阵,第一行为 0 1 0 0 ,代表着v1->v2,因为v1,只有一个指向的item,所以为1;看第二行,0 0 1/2 1/2,因为v2有指向v3和v4的边,所以进行归一化后每一个值都变成了1/2。入度矩阵的计算方法也是一样的,就不再说了。

本文采用的是GRU单元进行序列建模,将图信息嵌入到神经网络中,让GRU充分学习到item之间的关系,传统的GRU只能学到相邻的两个物品之间的关系,加入图信息后就能学到整个session子图的信息。

计算公式如下:

为了刚好的理解这个计算过程,我们还是使用之前那个例子:v1->v2->v3->v2->v4来一步步分析输入到输出的过程。

(1) 是t时刻,会话s中第i个点击对应的输入, 是n✖️2n的矩阵,也就是会话子图的完整矩阵,而 是其中一行,即物品vi所对应的那行,大小为1✖️2n,n代表序列中不同物品的数量。

如果按照例子来看,如果i取2,那么 为 [0 0 1/2 1/2 1/2 0 1/2 0]

进一步的,可以把 :拆解为[ , ]

(2) 可以理解为序列中第i个物品,在训练过程中对应的嵌入向量,这个向量随着模型的训练不断变化,可以理解为隐藏层的状态,是一个d维向量。

   (3)  H是d*2d的权重向量,也可以看作是一个分块的矩阵,可以理解为H=[Hin|Hout],每一块都是d*d的向量。

那么我们来看看计算过程:

1)[ ..., ] ,结果是d * n的矩阵,转置之后是n*d的矩阵,计作

2) : H相当于[   ],即拆开之后相乘再拼接,因此结果是一个1 * 2d的向量。

上面就是完整的第i个点击的输入的计算过程,可以看到,在进入GRU计算之前,通过跟As,i矩阵相乘,把图信息嵌入到了神经网络中取,加深了神经网络学习到的item之间的交互信息。

此外,就是GRU的计算过程了,跟原始的GRU不一样的地方在于输入从xt变成了嵌入了图信息的as,i。

通样也有更新门和重置门,计算方法跟原始GRU一模一样。

这里的 其实就是相当于原始gru中的 ,只不过在SR-GNN里面,进行一轮运算的时候i是没有变化,相当于每个物品单独进去GRU进行计算,得到自己的向量,也就是说在GRU的计算过程中, 是不断变化的,看一下源码更易于理解:

hidden就是公式里面的 ,在gru的每一个step计算中都会进行更新,这里我有个疑问,如果所有item的hidden都更新的话,那么应该是整个序列中所有的item并行进入GRU中进行计算,每一个step都得到自己的vector,当每个item的vector更新后,下一个step就重新根据新的 计算 ,接着计算下一个step。

计算过程大概就是下面这样:

这里有四个GRU并行计算,没次更新自己的hidden状态,输入则考虑所有的hidden和图信息。

从上面的图看来,每一个item都要进行T个step得到自己的item-vec,所以经过T个step后,我们就得到了序列中所有item的向量,即:

图中用蓝色框框画出来的向量,有了这些向量后,我们怎么得到预测结果呢?这就引入了下一个问题。

观察上面的模型结构,我们看到attention,没错,我们认为一个session中的这些item-vec并不都对预测结果产生影响,有些item对结果影响很大,有些影响很小,所以我们进行了加权求和。同时,论文认为session对最后一个item-vec,s1=vn是重要的,所以单独拿出来:

公式(6)就是简单的attention操作,其实从公式上来看就是计算每个vi跟最后一个向量vn的权值,然后进行加权求和。

在最后的输出层,使用sh和每个物品的embedding进行内积计算,这里vi应该是item的embedding层出来的向量,而不是后面一直更新的hidden:

最后通过一个softmax得到最终每个物品的点击概率:

损失函数为交叉熵损失函数:

从数据上来看,SR-GNN超过了经典的GRU4REC,这也说明了图信息的嵌入能带来更好的推荐效果。

本论文很巧妙的将图信息嵌入的神经网络中,更高地让GRU学习到每个item之间的关系,不再局限于相邻的物品之间进行学习。近年来,图神经网络的思想和方法屡屡被用在推荐系统中,学好图神经网络应该是推荐系统的下一个热潮。

‘柒’ 缺陷检测算法

基本两个步骤:
1、缺陷检出,算法较多,本人认为是不变矩阵法和主成分分析法;
2、缺陷识别和分类,多数使用BP神经网络进行训练,提高识别率。

‘捌’ 软件缺陷分类标准

软件缺陷(software defect)分类标准缺陷属性属性名称 描述 缺陷标识(Identifier) 缺陷标识是标记某个缺陷的一组符号。每个缺陷必须有一个唯一的标识 缺陷类型 (Type) 缺陷类型是根据缺陷的自然属性划分的缺陷种类。 缺陷严重程度 (Severity) 缺陷严重程度是指因缺陷引起的故障对软件产品的影响程度。 缺陷优先级(Priority) 缺陷的优先级指缺陷必须被修复的紧急程度。 缺陷状态(Status) 缺陷状态指缺陷通过一个跟踪修复过程的进展情况。 缺陷起源(Origin) 缺陷来源指缺陷引起的故障或事件第一次被检测到的阶段。 缺陷来源(Source) 缺陷来源指引起缺陷的起因。 缺陷根源(Root Cause) 缺陷根源指发生错误的根本因素。缺陷类型(Type)缺陷类型编号 缺陷类型 描述 10 F- Function 影响了重要的特性、用户界面、产品接口、硬件结构接口和全局数据结构。并且设计文档需要正式的变更。如逻辑,指针,循环,递归,功能等缺陷。 20 A- Assignment 需要修改少量代码,如初始化或控制块。如声明、重复命名,范围、限定等缺陷。 30 I- Interface 与其他组件、模块或设备驱动程序、调用参数、控制块或参数列表相互影响的缺陷。 40 C- Checking 提示的错误信息,不适当的数据验证等缺陷。 50 B Build/package/merge 由于配置库、变更管理或版本控制引起的错误。 60 D- Documentation 影响发布和维护,包括注释。 70 G- Algorithm 算法错误。 80 U-User Interface 人机交互特性:屏幕格式,确认用户输入,功能有效性,页面排版等方面的缺陷。 90 P-Performance 不满足系统可测量的属性值,如:执行时间,事务处理速率等。 100 N-Norms 不符合各种标准的要求,如编码标准、设计符号等。缺陷严重程度(Severity)1.3.1 软件测试错误严重程度 # 缺陷严重等级 描述 1 Critical 不能执行正常工作功能或重要功能。或者危及人身安全。 2 Major 严重地影响系统要求或基本功能的实现,且没有办法更正。(重新安装或重新启动该软件不属于更正办法) 3 Minor 严重地影响系统要求或基本功能的实现,但存在合理的更正办法。(重新安装或重新启动该软件不属于更正办法) 4 Cosmetic 使操作者不方便或遇到麻烦,但它不影响执行工作功能或重要功能。 5 Other 其它错误。1.3.2 同行评审错误严重程度 # 缺陷严重等级 描述 Major 主要的,较大的缺陷 Minor 次要的,小的缺陷缺陷优先级(Priority)# 缺陷优先级 描述 1 Resolve Immediately 缺陷必须被立即解决。 2 Normal Queue 缺陷需要正常排队等待修复或列入软件发布清单。 3 Not Urgent 缺陷可以在方便时被纠正。缺陷状态(Status)缺陷状态 描述 Submitted 已提交的缺陷 Open 确认“提交的缺陷”,等待处理 Rejected 拒绝“提交的缺陷”,不需要修复或不是缺陷 Resolved 缺陷被修复 Closed 确认被修复的缺陷,将其关闭缺陷起源(Origin)缺陷起源 描述 Requirement 在需求阶段发现的缺陷 Architecture 在构架阶段发现的缺陷 Design 在设计阶段发现的缺陷 Code 在编码阶段发现的缺陷 Test 在测试阶段发现的缺陷缺陷来源(Source)缺陷来源 描述Requirement: 由于需求的问题引起的缺陷 Architecture: 由于构架的问题引起的缺陷Design: 由于设计的问题引起的缺陷 Code: 由于编码的问题引起的缺陷Test: 由于测试的问题引起的缺陷 Integration: 由于集成的问题引起的缺陷

‘玖’ 图神经网络是怎么炼成的:GNN基本原理简介

此文算是对Google Research这篇 A Gentle Introction to Graph Neural Networks 神作的阅读笔记.

十多年来,研究人员开发了一种称之为图神经网络(Graph Neural Networks,GNNs)的技术,旨在将如今在深度学习的诸多任务中摧枯拉朽的神经网络,应用到图结构之上,从而让神经网络捕捉到更错综复杂的交叉特征,以期待在一些任务上取得更佳的效果。鉴于操作图数据结构的复杂性,尽管已经发展了十几年,它在实际应用中却刚刚起步,即时是google也才开始研究将其被应用到药品研发、物理模拟、假新闻检测、交通预测和推荐系统等领域。

尽管GNN是一个新兴的研究领域,但图结构的数据其实在我们身边无处不在。那么什么是图呢?

这个理科生应该都清楚,图有点(Vertex)和边(Edge)两部分组成,一个图就代表了各个实体节点(node)之间的关系(edge):

每个节点或者边都可以包含它的一些属性信息,比如如果一个节点表示一个人,那么就可以包含这个人的姓名、性别、身高、体重之类的..我们研究需要的信息。
而这些信息,都可以用通用的向量的形式存入其中:

还有别忘了一点,边是可以有方向的,按此我们还能分为有向图或是无向图。边的方向代表了信息的传递方向,例如a是b的微信好友,那b也是a的微信好友,好友关系自然是没方向的,而比如a是b的爹,那显然b就不是a的爹,此时叫爹的关系就是有有方向的。

图结构的构建是非常灵活的,可以根据个人的设计构建出各种不一样的图。而作为开发者显然要结合实际解决的问题来构建合适的图。

正如前面所提到的,图无处不在。你可能已经熟悉例如知识图谱、社交网络之类的图数据。当时显然,图是一种极其强大的通用数据表示,传统神经网络中用到的欧式空间的数据,同样可以用图来表示,例如可以将图像和文本建模为图结构数据。

比如,我们可以将一张图片的每个像素作为图的节点,再将相邻的像素用边连接起来,就构造了一个该图像的图。

如上图展示了一个5*5的图片的邻接矩阵表示和图表示。

我们将每个单词作为节点,并将每个节点连接到下一个节点,就得到了一个文本的图:

当然,在实践中我们并不会这样来编码文本和图像,因为所有的图和文本都是非常规则的结构,表示成图就多此一举了。
我们再来看一些例子,这些数据的结构更加复杂,除了图之外很难用其他方式来表达。

分子是构成物质的基石,我们可以用节点来表示它的原子和电子,用边来表示共价键,这样便将一个分子表示成了一个图:

不同的图可以表示出不同的分子结构:

都说社会是一个大熔炉,身处其中的人和事物之间会发生极其复杂的关系。这种关系的表示用普通的表格数据是很难表示的,而图却能很好的展现。

下图是将莎士比亚歌剧《奥赛罗》中的任务关系表示成图:

怎么样,如果没看过歌剧能推测出那些是主角吗?

下面是将一个空手道竞标赛的对战关系构建为图:

类似的可以表示为图的数据还有很多很多,比如论文的引用之类统统都可以表示为图,下面是现实世界中不同规模的数据图表示的统计数据:

可见,各种各样规模的数据都可以轻松的用图来表示。

在上面我们列举了这么多的图,那么我们该对这些图数据执行什么任务呢?

图上的预测任务一般分为三类:

下面我们通过具体的示例来说明GNN怎么来解决上述的三个级别的预测问题。

在图级别的任务中,我们的目标是预测整个图的属性。例如我们通过分子图,来预测该分子的气味或是者它是否是与某些疾病有关的受体。
它的输入是完整的图:

输出是图的分类:

节点级任务一般就是预测每个节点的类型。
一个经典的例子就是Zach的空手道俱乐部。该数据集市一个单一的社交网络图,犹豫政治分歧,讲师Hi先生和管理员John之间不和导致空手道俱乐部分裂,其中的学员一部分效忠于Hi先生,一部分效忠于John。每个节点代表空手道联系着,边代表空手道之外这些成员的互动,预测问题就是判断这些节点是效忠于谁的。

边级任务其实就是预测每个边的属性.
在目标检测的语义分割任务中,我们也许不止要识别每个目标的类型,还需要预测各个目标之间的关系.我们可以将其描述为边级别的分类任务:给定表示图像中的对象的节点,我们希望预测哪些节点共享一条边,或者该边的值是多少。如果我们希望发现实体之间的连接,我们可以考虑图是完全连通的,并根据它们的预测值修剪边来得到一个稀疏图。

用图表示就是这样的过程:

那么我们要如何使用神经网络来处理上述各种类型的任务呢?

首先要考虑的是如何将图结构数据适配到神经网络.
回想一下啊,传统的神经网络输入的往往是矩阵形式的数据,那么要如何把图作为输入呢?
图表示有四种类型的信息:节点(nodes),边(edges),全局上下文(global-context),联通性(connectivity).对于前三种信息,有一个非常简单的方案,比如将节点排序,然后每个节点表示为一个向量,所有节点就得到了一个节点的矩阵,同理,边和上下文也可以这么搞.
但是要标识连通性就没有这么简单了,也许你会想到用临街矩阵来表示,但是这样表示会有明显的缺陷,因为节点数的规模往往是巨大的,对于一个数百万节点的图,那将耗费大量的空间,而且得到的矩阵往往也十分的稀疏,可以说空间利用率会很低.
当然,你也许会想,可以用稀疏矩阵来存储,这样就只需要存储连通的情况,空间利用率将大大提升,但是我们还要考虑到一点,就是稀疏矩阵的高性能计算一直是个艰难的,尤其是在用到GPU的情况.
并且,使用邻接矩阵还有一个问题就是各种不同的邻接矩阵可以标识相同的连通性,而这些矩阵并不能保证在神经网络中取的相同的效果.比如,同样的连通性,通过调换列的顺序,就能得到不同的邻接矩阵:

现在,我们成功的将图结构成功表示成了置换不变的矩阵格式,终于可以使用图形神经网络(GNN)来做图形预测任务了。
GNN是对保持图对称性(置换不变性)的图的所有属性(节点、边、全局上下文)的可优化变换。
我们将使用Gilmer等人提出的“消息传递神经网络”框架构建GNN,并使用Battaglia等人介绍的图网络网络架构示意图。GNNS采用“图输入,图输出”架构,这意味着这些模型类型接受图作为输入,其中包含节点,边和全局上下文的信息,并逐步地转换这些图嵌入,而不会更改输入的连接图结构。

我们使用最开始提到的那个图来构建一个最简单的GNN,输入的图是相应节点,边,全局信息的向量,我们针对每个向量使用一个MLP层来作变换,于是得到一个新的图.

针对上述构建的最简单的GNN,我们如何在上面描述的任何任务中进行预测呢?这里我们仅仅考虑二进制分类的情况,但这个框架可以很容易地扩展到多类或回归的情况。
如果是对节点分类,我们只要在最后一层接一个线性类器就可以了:

但是上面的预测过程有点过于简单了,完全没有用到图的结构信息,我们在此基础上增加一个pooling操作,以增加它的边缘信息:

具体操作是把待预测节点的邻居节点以及全局的信息进行聚合再做预测,即将这些embedding向量加到一起得到一个新的向量,再输入到最后的线性分类器.

同理,如果我们只有节点相应边的信息的话,也可以用类似的方式pooling,然后得到节点的向量表示再输入分类器:

反之,如果我们只有节点的信息,那么也可以用边所连接的两个节点来pooling出边的向量,然后将器输入到分类器预测边的类型:

显然,不管是哪种任务,整个GNN的推理过程都是一样的,可以表示为这样一个端到端的过程:

不过,显而易见的,这个简单的GNN在分类前只是对每个向量进行了一个变换,而没有用到图结构的任何信息,虽然在最后做预测的时候做了一些pooling的聚合,但也始终没有用到adjacency的信息,因此这个GNN的作用相当有限,但是它为我们提供了一个图结构层变换和堆叠的基本思路.

针对上面最简单GNN的不足,我们可以在其中根据连通性增加更加复杂的变换从而引入整个图结构的信息,我们将这个过程称之为信息传递.
信息传递包含三个步骤:

这个过程有点类似于卷积操作,每个节点汇聚了其邻居的节点,经过多个层的变换,它将涵盖全图的信息.
于是我们可以将这个节点信息传递应用到上述的图变换过程中:

然后,我们发现它并没用用上边的信息,于是可以把边信息也加上,变成这样:

既然把边的信息加上了,那怎么可以漏掉全局信息呢,于是完整的信息传递就可以表示成这样:

以上,我们梳理了最简单的GNNs是怎么完成的,你应该已经对GNN有了一个基本的了解,就像学会了传统神经网络中最简单的全连接网络类似,关于GNN还有更多不同种类的更复杂的图需要取了解和学习,但你只要掌握了以上的思想,学习起来也是十分容易的.

‘拾’ SSOS项目的软件缺陷预防过程有哪几个阶段

SSOS项目的软件缺陷预防过程有以下4个阶段:

第1阶段:确定缺陷的技术原因并改正;

第2阶段:确定并改正缺陷的过程原因;

第3阶段:改正遗漏缺陷的缺陷检测活动;

第4阶段:检查产品中别处的类似缺陷。

发现软件缺陷后,要尽快修复缺陷。其原因在于错误并不只是在编程阶段产生,需求和设计阶段同样会产生错误。也许一开始,只是一个很小范围内的错误,但随着产品开发工作的进行,小错误会扩散成大错误,为了修改后期的错误所做的工作要大得多,即越到后来往前返工也越远。如果错误不能及早发现,那只可能造成越来越严重的后果。缺陷发现或解决的越迟,成本就越高。

(10)软件缺陷检测图神经网络扩展阅读:

软件缺陷的表现形式不仅体现在功能的失效方面,还体现在其他方面。主要类型有:软件没有实现产品规格说明所要求的功能模块;软件中出现了产品规格说明指明不应该出现的错误;软件实现了产品规格说明没有提到的功能模块;软件没有实现虽然产品规格说明没有明确提及但应该实现的目标;软件难以理解,不容易使用,运行缓慢,或从测试员的角度看,最终用户会认为不好。

阅读全文

与软件缺陷检测图神经网络相关的资料

热点内容
网络学习12讲等于多少个学时 浏览:857
江门企业网络营销策划方案制作 浏览:428
失忆有种网络用语叫什么 浏览:703
苹果8p网络差短接 浏览:525
家庭网络共享什么意思 浏览:150
高七蓝牙连接电话显示无网络 浏览:184
构建网络安全校园手抄报内容 浏览:407
广州密码与网络空间安全研究所 浏览:428
计算机网络技术简历求职岗位 浏览:445
手机信号强度正常网络不行 浏览:981
苹果146网络差 浏览:698
户外手机网络游戏 浏览:658
中国移动现在网络信号慢 浏览:252
云南高速通网络异常 浏览:524
俄罗斯有wifi网络吗 浏览:778
计算机网络分片是第几章 浏览:287
网络安全法漫画 浏览:976
无锡移动网络服务创新服务 浏览:374
如何在中小学生网络云平台上课 浏览:734
装修时网络宽带线如何入户 浏览:204

友情链接