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

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

                 关的超参数如下所示.
                      编码器使用维度为 256 的双向 GRU,解码器使用相同维度的单向 GRU,词嵌入的维度同样为 256;
                      批处理大小(batch size)为 32,每轮都对数据集进行了打乱处理;
                      优化器为 Adam  [42] ,学习率为 0.001,虽然 Adam 已经实现自动调整学习率,但是 Loshchilov 等人         [43] 的实验
                 结果表明,在 Adam 上使用学习率衰减(learning rate decay)可以改善 Adam 的表现,因此使用了学习率衰减;
                      为了防止曝光误差(exposure bias),训练时使用了 teacher forcing,比率为 0.5;
                      使用了梯度裁剪,梯度最大值设置为 5;
                      使用了集束搜索(beam search),宽度(beam width)为 5.

                 3.3    评估方法
                    我们使用了机器翻译领域常用的评价指标作为本次实验的评估方法,这些指标在代码注释自动生成领域
                 也经常被广泛使用,分别为 corpus-level BLEU、sentence-level BLEU 和 METEOR.
                 3.3.1    BLEU
                    BLEU(bilingual evaluation understudy,双语评估替补),这项指标最初是 Papineni 等人   [44] 为翻译而发明的,但
                 渐渐广泛用于评估各种 NLP 任务生成的文本.BLEU 可以评估模型生成的句子,也称为候选(candidate)和参考
                 (reference)句子之间的相似度,取值范围在 0 和 1 之间,1 表示两者完全匹配,0 表示完全不匹配.BLEU 作为 NLP
                 领域的评价指标,具有计算复杂度小、与语言无关等优点,因此被广泛采用.
                    BLEU 通过计算 candidate 和 reference 的 n-gram 模型,然后统计其匹配的个数来计算得出.例如,对于目标
                 句子“sets the gravity for the drawer”和候选句子“sets the gravity for the pixels”.使用 1-gram 时,查看候选句子中
                 的每个单词是否出现在目标句子中,可以看到,候选句子中的“sets”“the”“gravity”“for”和“the”这 5 个词出现在了
                 目标句子中,而候选句子的长度为 6,因此,1-gram 的精度分数为 5/6.再以 4-gram 举例,如图 4 所示.









                                        Fig.4    Example for 4-gram precision score for BLEU
                                             图 4   BLEU 的 4-gram 精度分数的例子

                    从图中可以看出,候选句子共可分为 3 个 4-gram 词组,其中 2 个在目标句子中出现,因此,该例子的 4-gram
                 精度分数为 2/3.然而,这种计算方法存在一种缺陷,例如,若将上述例子中的候选句子变为“the the the the the”,则
                 根据上述计算方法,可以得到 1-gram 的精度为 1,这显然是不合理的.因此,BLEU 在对 n-gram 匹配次数计数时设
                 置了上限,即
                                            Count  clip    min(Count ,Max _ Ref  _Count )           (14)
                 其中,Count 是 n-gram 在候选句子中出现的次数,Max_Ref_Count 是该 n-gram 在目标句子中最大的出现次数,该
                 例子中“the”在目标句子中出现了 2 次,因此“the”的最大计数为 2,可以得出该例子的 1-gram 精度分数为 2/5.形
                 式化地说,计算 n-gram 的精度分数 P n 的公式为
                                                          Count clip (n gram  )
                                                      
                                             P    n gram candidate  (n   gram                     (15)
                                                     
                                              n
                                                       
                                                   n gram candidate Count  )
                 其中,P n 中的 n 表示 n-gram 下的精度,而 candidate 表示候选句子.因此可以看出,该式的分母为 candidate 中 n-
                 gram 的个数,分子为 candidate 中所有 n-gram 出现在 reference 中的个数.
   231   232   233   234   235   236   237   238   239   240   241