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 中的个数.