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   模型训练
                    综合节点层面匹配策略和图层面匹配策略的得分结果, 应用如下的加权公式得到一对代码图和文本图最终的
   289   290   291   292   293   294   295   296   297   298   299