Page 92 - 《软件学报》2020年第11期
P. 92
3408 Journal of Software 软件学报 Vol.31, No.11, November 2020
特定的任务.例如:Chang 等人 [23] 提出了增强程序依赖图(enhanced procedure dependence graph,简称 EPDG),其根
据共享数据的依赖性,对 PDG 中的控制和数据依赖边进行增强,并通过启发式最大频繁子图挖掘算法从 EPDG
中挖掘规则,从而发现软件中由于条件被忽视而引起的软件缺陷;Yamaguchi 等人 [24] 提出了代码属性图(CPG),
其是一种综合了 CFG、AST 和 PDG 的联合数据结构,被用来解决不同类型漏洞的关键特征在单一的图结构中
无法充分体现的问题.例如,“缺少输入验证”类型漏洞在 CFG 中体现为缺少分支判断,但该特征在 PDG 中无法
体现;“除零错误”在 AST 中体现为除法的分母元素为零,但该特征在 CFG 中无法体现.该方法通过对不同类型的
漏洞定义漏洞模式,并根据该模式在代码属性图上执行图遍历,从而检查程序是否存在该类漏洞.由于其极大地
包含了程序不同视角的信息,因此其对不同类型漏洞的挖掘均具有较好的适应性.
1.3 注意力机制
近年来,在深度学习领域中提出的注意力机制(attention mechanism)极为流行,其在面临一些困难任务时(例
如细粒度图像分类),能有效地提高深度学习算法的准确率.注意力机制的灵感最初源自于人脑的注意力机制,
当人脑在接收外部输入的信息时,往往不会对全部信息进行处理,而是将注意力集中在部分关键的信息上,过滤
不重要的信息,从而提升信息处理的效率.目前,注意力机制在深度学习中的不同领域有着不同的实现,但总体
上都可以概括成对注意力权重向量的学习.该权重向量的作用可以是反映了当前元素与其他元素的关联程度,
也可以是反映了输入的每个元素在当前任务中的重要程度,其视具体的任务和注意力模型的实现方式而定 [25] .
在自然语言处理领域中,常使用注意力机制作为输出的目标序列和输入的源序列的对齐模型.如果将源序
列中的元素看做键和值构成的二元组〈Key,Value〉,那么对给定目标序列中的某个元素 Query,可以根据 Query 和
Key 的相关性计算得到权重系数,权重系数越大,说明 Key 所对应的信息 Value 对 Query 的重要性越强,从而指导
元素的对齐.在该模型中,如果使源序列与目标序列相同,就形成了自注意力(self attention),其可以反映序列中某
个元素与其他元素之间的关联,从而有效地理解序列中存在的句法结构.Vaswani 等人 [26] 提出的 Transformer 模
型是自注意力机制最具代表性的实现之一,其完全摒弃了先前机器翻译中广泛使用的 RNN 模型,而仅依赖注意
力机制挖掘输入与输出之间的关系,从而避免了基于 RNN 的模型无法并行计算的问题,在保证准确率的同时,
极大地提高了训练的效率.
在计算机视觉领域中,同样具有很多注意力机制的应用.注意力机制在该领域中的实现主要可以分为两类,
分别为柔性注意力(soft attention)和刚性注意力(hard attention) [27] .其中,
• 柔性注意力对整个输入计算注意力权重分布,该注意力权重反映了不同区域元素对当前任务的重要
程度.该模型通常是可微的,可以通过网络端到端的训练获得.柔性注意力具有很多具体的实现 [28−31] ,
其可以有效地捕获图片中的关系特征信息,从而提高图片分类的准确率,或对图片进行更加细粒度的
分类.例如,Wang 等人 [30] 提出的残差注意力网络(residual attention network)是柔性注意力的实现之一,
其在神经网络的主分支外引入了一个注意力分支,在该分支中,通过自下而上和自上而下的网络结构
对注意力权重进行学习,该权重反映图片中不同区域的重要程度,并指导神经网络对图片进行分类.
• 与柔性注意力不同的是,刚性注意力每次仅对输入的局部进行分析,其是一个随机预测过程,其重点在
于预测注意力在不同区域的变化并强调其动态性.该模型通常是不可微的,需要通过强化学习进行训
练.Mnih 等人 [32] 将注意力问题看作目标引导的序列决策过程,在每一个时间点,其智能体只能在局部
区域进行信息提取,并不断以试错的方式进行学习.通过与环境进行交互获得到奖赏对行为进行指导,
从而使注意力集中在具有更高奖赏的重要区域.
此外,由于图结构可以很好地表征数据之间的关联,在诸如材料分子工程、图像分析、软件工程等领域应
用广泛,并且很多基于图结构的神经网络模型被提出 [33] .目前,很多研究将注意力机制应用在与图结构相关的任
务中 [34−37] ,试图在庞大而复杂的图结构中更加有效地挖掘信息,从而针对具体任务做出更好的决策 [38] .例如,
Velickovic 等人 [39] 提出了图注意力网络(graph attention networks,简称 GAT),该网络模型由多个图注意力层组
成,在每个图注意力层中,对图节点的邻接节点的注意力权重进行学习,并根据该权重对图节点的向量表示进行
更新.该图注意力网络模型通过堆叠多个图注意力层实现对节点向量表示的迭代更新,得到节点的最终向量表