随着chatgpt的兴趣,目前大家对大模型已经不再陌生,许多公司内部也已经开始用大模型来落地,提升业务指标,其中应用比较直接也比较广泛的就是生成任务。随着技术的落地,越来越多人也开始关注一个问题: 如何评估模型生成的效果是符合预期的呢? 本文将从自动评估和业务评估两个角度来介绍评估方式。
自动评估方案大概可以分为三个大方面:
- 基于统计的文本评测方法
- 例如 blue、rouge、meteor、ter
- 基于语言模型和向量语义计算的评测方法
- 结构信息到文本的评测方法
基于统计的文本评测方法
BLEU
应用的评测任务
BLEU(Bilingual Evaluation Understudy) 是机器翻译任务中比较常见的一种评测指标,在之前的文章 生成模型(五):评价指标 BLEU 中,已经详细介绍过 bleu 的具体计算方法和改进的思路,因此这里只做简单的回顾,对指标感兴趣的同学可以移步之前的文章,详细了解。实际上下面介绍的几种方法大体思路和 BLEU也都类似。
基本思想
BLEU 指标的提出,是为了评估机器翻译任务中,模型生成的候选译文和参考的标准译文中 n-gram 片段的重合度。重合度越高,我们就认为翻译的质量越高。其中n-gram 中的 n,我们一般算 n在(1,4) 之间的重合度,取加权平均后的数作为最终结果。
- 算generate 和 reference 句子的重合度 pnp_n
-
思路: 算 generate 中 n-gram 片段,在 reference 中出现的比例
-
弊端: 按照上面的说法,只要 generate 的句子是 reference 的子集,那么 pnp_n 就会比较大,因此还需要加上一个 长度惩罚因子
-
划重点:0 < pnp_n < 1
-
- 算长度惩罚因子 bp
-
思路: 用指数函数,只要保证 generate 小于 reference 的长度时,乘以一个小于1的数字即可
-
算法: bp=exp(1−lr/lg),lg>lrbp = exp(1-l_r/l_g), l_g > l_r, 因此 bp的取值, 永远是小于1,大于0的,数据函数曲线图如下:
-
- 算 bleu值
- 最终的值,可以看做是 bp 和 pnp_n 的乘积, bleu 也是在 0-1 之间的数
- 简化版本的计算公式为:bleu=bp∗logwn∗logpnbleu = bp * log w_n * logp_n
- 实际计算的时候,上述公式需要对 n在1-4之间求平均, wn 一般为 1/n
Rouge
应用的评测任务
rouge 也比较常见于机器翻译任务,但不是传统机器翻译任务,而是神经网络机器人任务;因为 rouge 主要计算的是召回率,而不是像bleu 一样关注精准率。此外,还被用在谣言检测、文本摘要等生成任务中做评测。
基本思想
因为神经网络出现之后,机器翻译任务的流畅度都比较高,但是有可能会出现漏召回的情况,导致翻译的译文和原始句子有很大的gap。所以 rogue的计算方式也衍生出很多种类型: rogue-n(n-gram)、rogue-l(将n-gram 优化为公关子序列)
、rogue-s(skip,n-gram可以跳词)
其中 rogue-n 跟 bleu 类似,只是不是计算精准度,而是计算召回,这里优先对 rogue-s的计算方法做介绍:
- 思路:采用跳词的的方法,计算精度和召回率
- skip n-gram计算: 例如 “i have a cat”, skip-2-gram 就是(i,have),(i,a),(i, cat),(have,a),(have,cat),(a,cat)。
Meteor
应用的评测任务
Meteor 也是对 BLEU方法的一种改进,会同时关注 精准率和召回率,因此在各种生成任务中,都习惯于看 meteor 指标。
基本思想
Meteor 是 Lavir 在 2014 年提出的另一种衡量文本相似的指标,Lavir 的 研究结果表明,基于召回率的计算标准,要比基于精准度计算的标准(比如上 文介绍的 BLEU),和人工评测得到的结果相关性更高一些。Meteor 包含了一 些同义词匹配的功能,该功能基于给定的基于 WordNet 同义词库,进行校准。
- 思路:计算对应的生成句子和参考译文之间,准确率和召回率的调和平均
- 优化1:用 wordnet 做同义词匹配
- 优化2: 引入 chunk 的概念评价流畅度,chunk就是通过 beam search的方法,得到的候选译文和参考译文能对齐的连续排列的单词,显然,我们比较希望 chunk的数量少一点,这样表明两者的语序比较一致。
其中, p和 R 和 bleu 的计算思路一致,mm 表示 chunk 数目。
自动评测脚本
这个方法实现起来比较复杂,我在 github 上找到了一份可用的计算版本:
github.com/cmu-mtlab/m…
Ter
应用的评测任务
TER 是一种通过编辑距离来判断两个句子是否相似的方法,常用于机器翻译、语音识别领域。
基本思想
TER 整体的思想比较简单,理解了编辑距离,ter 的度量也就比较容易理解了。
- 思路: 计算译文到参考译文所需要的编辑距离,分母一般是参考译文的长度。
- 计算方法:
score=edit(g,r)/lrscore = edit(g, r) / l_r
总结
由于篇幅原因,本文先介绍了基于统计的集中评测方法: BLEU、Rogue、Meteor、TER,其中 rogue 和 Meteor 都是基于 BLEU 的算法思想,提出的改进方案。BLEU 主要是算 precision, rogue 考虑的是 recall,而 meteor 则兼顾了 precision 和 recall,算的是调和平均 F1-score,并且还融入了wordnet 做语义相似度。 TER 是一种基于编辑距离的方法,在语音识别领域应用较多。
下一篇文章中,将继续介绍基于语义、结合业务任务做评估。