Page 294 - 《软件学报》2024年第6期
P. 294
2870 软件学报 2024 年第 35 卷第 6 期
( )
余弦函数衡量相似度得分: sim 1 = cos S p ,S q . 所得 sim 1 即为应用基于多视角匹配函数的节点层面匹配策略后的
相似度得分.
2.5 基于神经张量网络的图层面匹配策略
GraphSearchNet 的第 2 个不足是它虽然使用多头注意力机制获得代码和文本的全局信息, 但仍然没有进一步
对代码和文本的全局信息进行比较和匹配. 为了应对第 2 个不足, GraphCS 提出了基于神经张量网络的图层面匹
配策略, 将文本图和代码图送入神经张量网络衡量图对的相似性, 对代码图和文本图在多个维度上进行交互匹配,
能够有效捕捉到代码和文本的全局关系.
2.5.1 图全局上下文感知的嵌入表示
根据图神经网络的传播模型, 每个节点聚合的信息来自于自身和邻居的节点信息, 所以图中每个节点的信息
是局部的. 在池化操作后获得的整体嵌入表示, 能很好地表示整张图所有节点的信息汇总和全局结构信息. 但是在
图层面匹配策略中, 并没有采取池化操作获取图的整体嵌入表示. 本文提出了一种更有效的基于注意力的聚合方
M (M,d) { } N (N,d)
法. 并且图层面匹配策略使用的是文本图和代码图的初始节点嵌入 H q = {q i } i=1 ∈ R 和 H p = p j j=1 ∈ R . 节点
层面匹配策略得到的更新后节点嵌入含有两张图交互的信息, 这里应该使用它们的初始节点嵌入表示, 不受节点
∈ R . 这个向量在
匹配层的干扰.
以 代 码 图 为 例 , 初 始 节 点 嵌 入 为 { } N ∈ R (N,d) . 首 先 计 算 节 点 嵌 入 简 单 平 均 的 非 线 性 变 换 C =
H p = p j j=1 :
1 N ∑
W ∈ R d×d d C 可以
tanh p j W , 其中 是可学习的权重矩阵. 得到的 C ∈ R 表征了图的全局上下文信息. 基于
N
j=1
为每个节点计算一个注意力权重 a j . 先取节点嵌入 p j 与全局上下文向量 C 的内积, Sigmoid 函数的作用在于确保
权重值在 (0, 1) 范围内. 很容易想到, 与全局上下文向量更相似的节点嵌入获得了更大值的权重, 这样得到的图整
a j 后, 就可以通过公式 (11) 和公式 (12) 得到图的整体嵌入表示
体嵌入表示更有意义. 得到每个节点的关注权重
h p ∈ R .
d
( )
T
a j = Sigmoid p ·C (11)
j
j=1
∑
( )
h p = a j · p j (12)
N
对代码图和文本图分别应用上述相同的操作, 得到了它们全局上下文感知的整体嵌入表示 h p 和 h q .
2.5.2 相似度得分计算
在图层面匹配策略中, 我们应用神经张量网络 (NTN) [21] 探索文本图和代码图之间的全局关系. 与传统的线性
网络相比, 神经张量网络 (NTN) 的优势是它能够在多个维度上比较两个嵌入向量的相似关系. 给定两个向量 h i 和
h j , NTN 使用双线性张量计算两个嵌入之间的多维度关系.
( [ ] )
T
NTN ( h i ,h j) = σ h ·W [1:k] ·h j +V h i +b (13)
i
h j
其中, σ 是一个非线性激活函数, W [1:k] ∈ R d×d×k 是一个有 k 个切片的张量, V ∈ R k×2d 和 b 是标准神经网络的权重矩
k T [1:k] ·h j 计算得到的, 它的每个切片学习输入嵌入之间的不同相似
阵和偏置. 向量 S ∈ R 是通过双线性张量积 h ·W
i
h q 输入一层神经张量网络, 输出了代码图和文本
性模式. 将代码图和文本图全局上下文感知的整体嵌入表示 h p 和
图全局互动的相似向量表示 NTN ( h p ,h q) k k 个维度上衡量了两张图全局视角下的相似性关系.
k
要得到代码图和文本图的最终相似度得分 sim 2 , 还需要将 NTN ( h p ,h q) ∈ R 送入多层全连接神经网络以及相应
n . 输入神经张
的激活函数层. 全连接神经网络使用多层加权神经元乘法将维度 m 的输入映射到所需的输出维度
k
量 NTN ( h p ,h q) ∈ R , 从多层全连接神经网络的最后一层, 输出了分数值标量 sim 2 ∈ R . 这样就得到了衡量代码图和
文本图全局关系的相似性分数 sim 2 ∈ R .
2.6 模型训练
综合节点层面匹配策略和图层面匹配策略的得分结果, 应用如下的加权公式得到一对代码图和文本图最终的