Page 269 - 《软件学报》2024年第4期
P. 269
王尚文 等: 基于指针神经网络的细粒度缺陷定位 1847
嵌入模块 全连接层 编码器 隐藏状态 解码器 隐藏状态 指针网络
编码后的
子令牌流 子令牌流
...
LSTM LSTM
IFStmt PrefixExp MdInvoc
W 1
Softmax
基于 LSTM 的 AST 路径编码器
W 2
UPDATE/DELETE/INSERT
编码后的
编辑操作 编辑操作 预测结果
连接后向量
图 4 BEEP 模型结构图
抽象语法树路径由多个抽象语法树节点组成. 在对抽象语法树路径进行编码时, 我们先使用了一个编码矩阵
对每一个节点进行编码, 随后为了捕获抽象语法树路径中相邻节点所蕴含的结构特征, 我们需要利用路径中的序
列信息. 因此我们使用双向长短期记忆网络 (BiLSTM) 对整个路径进行编码, 神经网络最终的输出为对抽象语法
树路径进行编码的结果. 该过程可表示为:
( )
V p = LSTM E p (n 1 ),E p (n 2 ),...,E p (n l ) ,
其中, E p (·) 是用于编码节点的嵌入矩阵, LSTM 代表我们采用的双向 LSTM 模型, V p 代表抽象语法树路径 p 最终
的向量表示.
op 中 3 部分的向量表示后, 我们将 3 部分的向量表示连接在一起作为该操作路径的向量
在得到了操作路径
[
]
V op = V t ;V p ;V o .
表示:
• 利用编码器-解码器网络提取特征. 假定输入的操作路径共有 k 条, 即 {op ,op ,...,op } , 在对每条操作路径
1 2 k
进行编码后, 为了提取更多的隐藏信息, 我们将其输入一个全连接层, 随后再利用基于 LSTM 的编码器-解码器结
构捕获特征, 这一过程可被表示为:
( [ ])
z i = tanh W in V t ;V p ;V o ,
(e 1 ,...,e k ) = LSTM encoder (z 1 ,...,z k ),
(b 1 ,...,b k ) = LSTM decoder (e 1 ,...,e k ),
( )
其中, W in 是维度为 d t +2d p +d o ×d hidden 的全连接层权重矩阵, (e 1 ,...,e k ) 与 (b 1 ,...,b k ) 分别是编码器与解码器的隐
藏层状态.
(b 1 ,...,b k ) 后, 我们能够
• 利用指针网络获得输出. 在得到了编码器隐藏层状态 (e 1 ,...,e k ) 与解码器隐藏层状态
利用下式计算注意力向量:
(
)
T
u j = v tanh W 1 e j +W 2 b j ,
j
,
其中, j ∈ (1,...,k) v W 1 W 2 均为在模型训练过程中需要学习的参数. u j 的数值即被用作第 个输入的注意力
, ,
权重:
)
( )
(
p op j | op 1 ,...,op k = Softmax u j .
u = [u 1 ,...,u k ] 归一化为输入的操作路径的概率分布. 模型最终的输出为依据分布权重由
Softmax 函数将向量
高到低排列的操作路径列表.
• 模型训练. 我们使用交叉熵损失函数 [60] 对模型进行训练:
∑ ∑
[ ( ) ( ) ( )]
Loss = − Y op ·log P op + 1−Y op ·log 1− P op ,
y i ∈Y op∈y i