Page 234 - 《软件学报》2021年第7期
P. 234

2152                                     Journal of Software  软件学报 Vol.32, No.7,  July 2021

                 等人 [21] 提出了指针生成网络(pointer-generator network).指针生成网络是 Ptr-Net   [41] 和传统 seq2seq 模型的混合,
                 Ptr-Net 由 Vinyals 等人 [41] 提出,利用 Attention 机制得到的每一步对于输入序列元素的注意力分配,生成一个指
                 针指向注意力分配最高的元素,直接从输入序列中复制对应的元素作为输出,指针生成网络将其与生成式模型
                 seq2seq 进行结合,相当于在解码的每一步都有两种模式:一种是根据解码器的输出从词库中选择某个单词作为
                 当前的输出,一种是根据 Attention 机制得到的指针直接从输入中复制作为当前的输出.指针生成网络通过一个
                 可学习的概率 p gen 在两个模式之间进行软切换(soft switch),t 时刻的 p gen 由当前时刻的 Attention 机制得出的上
                 下文向量 c t 、输入解码器的隐藏状态 s t 和解码器的输入 y t 共同计算而出,具体公式如下:
                                             p    sigmoid(W c   W s   W y   b  )                 (12)
                                              gen        ct   s t  y t  gen
                 其中,W c 、W s 、W y 和 b gen 均为权重矩阵或偏置矩阵,均为可学习的参数,sigmoid 为 sigmoid 激活函数.
                    为了使模型可以知道哪些单词可能需要被复制,我们对于每一个样本,定义扩展词库(extended vocabulary)
                 为输出端的词库再加上一些 OOV 词,在本文中,最可能被复制的单词就是在代码和注释中都出现的标识符,因
                 此我们要求这些 OOV 词同时出现在源代码和注释中,并且都不在两者的词库中,扩展词库可以使这些共同的
                 OOV 词和“UNK”标签区别开来,以让模型学习这种复制关系,解码阶段的每个时刻,对于扩展词库中的每一个
                 词 w,其条件概率 P(w)为
                                               () 
                                              Pw   p P  ()w   (1  p gen   iw : i   w a ti        (13)
                                                                  )
                                                    gen vocab
                 其中,P vocab (w)表示 w 在注释词库中的概率,即公式(6)得出的概率,a ti 表示在当前 t 时刻对于输入序列中第 i 个单
                 词的 Attention 权重,i 为在词库中 w 单词的下标,大多数情况下只有一个值.注意到,如果 w 是扩展出的 OOV 词,
                 那么 P vocab (w)则为 0,而 w 如果在注释词库中但没有出现在源代码词库中,那么                  iw   a 为 0.由此得出的 P(w)
                                                                                     ti
                                                                                  : i w
                 代替公式(6)得出的 P vocab (w),成为解码器在每一步进行输出选择的依据.



































                      Fig.3    The model in Fig.2 is able to generate OOV words after introduced pointer-generator network
                                    图 3   在图 2 中的模型引入指针生成网络后,可以生成 OOV 词
   229   230   231   232   233   234   235   236   237   238   239