评估指标(Metric)(四)

BLUE

BLEU (BiLingual Evaluation Understudy) 最早用于机器翻译任务上,用于评估机器翻译的语句的合理性。具体来讲,BLEU通过衡量生成序列和参考序列之间的重合度进行计算的。下面我们将以机器翻译为例,进行讨论这个指标。

假设当前有一句源文 s ​ s​ s​​​​​,以及相应的译文参考序列 r 1 , r 2 , . . . , r n r_1,r_2,...,r_n r1,r2,...,rn​​​​​​。机器翻译模型根据源文 s ​​​​​​ s​​​​​​ s​​​​​​ 生成了一个生成序列 x x x​​​​​​​​​,且 W ​​​​​​ W​​​​​​ W​​​​​​ 为根据候选序列 x x x ​​​​​​生成的 N​​​​​​​​ 元单词组合,这些 N元组合的精度为: P N ( x ) = ∑ w ∈ W m i n ( c w ( x ) , m a x k = 1 n c w ( r k ) ) ∑ w ∈ W c w ( x ) P_N(x)=\displaystyle \frac {\sum_{w \in W} min(c_w(x),max^n_{k=1}c_w(r_k))} {\sum_{w \in W}c_w(x)} PN(x)=wWcw(x)wWmin(cw(x),maxk=1ncw(rk))其中, c w ( x ) c_w(x) cw(x)​为 N​ 元组合词 w w w​ 在生成序列 x x x ​中出现的次数, c w ( r k ) c_w(r_k) cw(rk) ​为 N​ 元组合词 w w w ​在参考序列 r k ​ r_k​ rk ​中出现的次数。N 元组合的精度 P N ( x ) P_N(x) PN(x) 即为生成序列中的 N 元组合词在参考序列中出现的比例。

从以上公式可以看出, P N ( x ) P_N(x) PN(x) ​的核心思想是衡量生成序列 x ​ x​ x 中的 N ​元组合词是否在参考序列中出现,其计算结果更偏好短的生成序列,即生成序列 x x x ​越短,精度 P N ( x ) P_N(x) PN(x) ​​​​会越高。这种情况下,可以引入长度惩罚因子,如果生成序列 x x x​ 比参考序列 r k r_k rk短,则会对该生成序列 x x x 进行惩罚。 b ( x ) = { 1 if  l x > l r exp ⁡ ( 1 − l s / l r ) if  l s ≤ l r b(x)=\begin{cases} 1 & \text{if } l_x \gt l_r \\ \exp(1-l_s/l_r) &\text{if } l_s \le l_r \end{cases} b(x)={ 1exp(1ls/lr)if lx>lrif lslr其中, l x ​ l_x​ lx 表示生成序列 x ​ x​ x 的长度, l r l_r lr ​表示参考序列 l r l_r lr ​的最短长度。

前边反复提到一个概念–N​​​ 元组合词,我们可以根据生成序列 x x x ​​构造不同长度的 N 元组合词,这样便可以获得不同长度组合词的精度,比如 P 1 ( x ) ​, P 2 ( x ) ​, P 3 ( x ) P_1(x)​,P_2(x)​,P_3(x) P1(x)P2(x)P3(x)​等等。BLEU算法通过计算不同长度的N​​​​​​元组合的精度 P N ( x ) P_N(x) PN(x) N = 1 , 2 , 3... N=1,2,3... N=1,2,3...​,并对其进行几何加权平均得到,如下所示。 BLUE-N ⁡ ( x ) = b ( x ) × exp ⁡ ( ∑ N = 1 N ′ α N log ⁡ P N ) \operatorname {BLUE-N}(x)=b(x) \times \exp(\displaystyle \sum^{N'}_{N=1} \alpha_N \log P_N) BLUE-N(x)=b(x)×exp(N=1NαNlogPN)其中, N ′​ N′​ N′​ 为最长 N​ 元组合词的长度, α N ​ α_N​ αN 为不同 N ​元组合词的权重,一般设置为 1 N ′ ​ \frac {1} {N′}​ N1,BLEU算法的值域范围是 [0,1]​,数值越大,表示生成的质量越好。

BLEU算法能够比较好地计算生成序列x​​​的字词是否在参考序列中出现过,但是其并没有关注参考序列中的字词是否在生成序列出现过。即BLEU只关心生成的序列精度,而不关心其召回率。

ROUGE

由于BLEU算法只关心生成序列的字词是否在参考序列中出现,而不关心参考序列中的字词是否在生成序列中出现,这在实际指标评估过程中可能会带来一些影响,从而不能较好评估生成序列的质量。

ROUGE (Recall-Oriented Understudy for Gisting Evaluation)算法便是一种解决方案,它能够衡量参考序列中的字词是在生成序列中出现过,即它能够衡量生成序列的召回率。下面还是以机器翻译为例,来探讨一下ROUGE的计算。

假设当前有一句源文 s s s,以及相应的译文参考序列 r 1 , r 2 , . . . , r n r_1,r_2,...,r_n r1,r2,...,rn。机器翻译模型根据源文 s s s 生成了一个生成序列 x x x,且 W W W 为根据候选序列 x x x 生成的 N 元单词组合,则ROUGE算法的计算方式为: ROUGE-N ⁡ ( x ) = ∑ k = 1 n ∑ w ∈ W m i n ( c w ( x ) , c w ( r k ) ) ∑ k = 1 n ∑ w ∈ W c w ( r k ) \operatorname {ROUGE-N}(x)=\displaystyle \frac {\sum_{k=1}^n \sum_{w \in W} min(c_w(x),c_w(r_k))} {\sum^n_{k=1}\sum_{w \in W}c_w(r_k)} ROUGE-N(x)=k=1nwWcw(rk)k=1nwWmin(cw(x),cw(rk))其中, c w ( x ) c_w(x) cw(x) 为N元组合词 w w w 在生成序列 x x x 中出现的次数, c w ( r k ) c_w(r_k) cw(rk)为 N 元组合词 w w w 在参考序列 r k r_k rk 中出现的次数。

从公式可以看到,ROUGE算法能比较好地计算参考序列中的字词是否在生成序列出现过,但没有关注生成序列的字词是否在参考序列中出现过,即ROUGE算法只关心生成序列的召回率,而不关心准确率。

猜你喜欢

转载自blog.csdn.net/weixin_49346755/article/details/127344594