BLEU提出最开始是在用于评估机器翻译的结果,但是现在也可以广泛运用在测量输出序列质量上,其具体公式如下,注意输出的结果越大,说明序列质量越好
BLEU_output=exp(min(0,1−lenlabellenpred))∏n=1kpn1/2n BLEU\_output = \exp\left(\min\left(0, 1 - \frac{\mathrm{len}_{\text{label}}}{\mathrm{len}_{\text{pred}}}\right)\right) \prod_{n=1}^k p_n^{1/2^n}BLEU_output=exp(min(0,1−lenpredlenlabel))n=1∏kpn1/2n
前面的指数部分做为一个惩罚项控制着较短的预测序列,其中lenlabellen_{label}lenlabel代表标签序列中的词元数,而lenpredlen_{pred}lenpred代表预测序列中的词元数
如果预测序列过短,那么1-大于1的数最终将会小于0,而指数函数在负数区间内是一个很小的值,可以有效降低序列质量(小的预测集不加这项惩罚的话往往会虚高,达不到想要的效果)
式子中的K代表的是可以匹配的语法个数,而后面的 pn ~p_n~ pn 就定义了预测序列中的任意 𝑛 元语法(n-grams), BLEU的评估都是这个 𝑛 元语法是否出现在标签序列中(概率),下面用例子解释一下
举个例子
假设我们预测序列是 A B C C D D ,而标签序列是 A B C D E F
- p1 ~p_1~ p1 就是 4/6 ,因为一共有六个样本,我们只是match到了四个,两个重复的没有在标签中显现!!
- p2 ~p_2~ p2 就是 3/5 ,每次看两个词元,不断往下传,可以发现CC和DD没有在标签中match
- p3 ~p_3~ p3 就是 1/4 ,每次看三个词元,跟上面一样的,只考虑顺序,发现只有ABC可以match
- p4 ~p_4~ p4 就是 0 ,此时四个词元已经无法在标签序列中match到了,所以结果为0,不再继续向下计算(因为结果都是0)
此时根据指定的K值,我们就可以计算出相对于的K元BLEU值
BLEU是一种评估机器翻译和文本生成模型输出序列质量的方法,通过惩罚短预测序列和计算n-gram匹配概率来确定分数。K值影响语法匹配的重要性。
407

被折叠的 条评论
为什么被折叠?



