1. 背景介绍

我们训练大模型的时候,或者我们用RAG的时候,不知道我们的算法,或者我们的提示,或者我们的本地知识库是否已经整理得符合要求了。又或我们需要一个指标去评估我们目前的所有围绕大模型,向量数据库或外挂知识库是否是向着好的方向进展的。所以,一个符合或者体现目前查询质量的指标很重要。本文会先介绍Rogue指标,并先以不宣传渐进式的方式的发布。

1.1 LLM 评估- 指标

1.1.1 Rouge适用场合
  • 用于文本摘要。
  • 将摘要和一个或多个摘要进行比较。
1.1.2 Bleu 适用场合
  • 用于文本翻译
  • 与人翻译的进行比较

1.2 LLM 评估 - 指标 - 术语

unigram: 单个词基本单位

bigram:两个连接的词,两个连接的基本单位

n-gram:n个连续连接的词,n个连续连接的基本单位

2. Rogue (Recall-Oriented Understudy for Gisting Evaluation)

2.1 Rogue-1

2.1.1 例子:
2.1.1.1 范例1

人输出的句子:参考

外 面 是 冷

总共4个unigram

机器输出的句子:实际

外 面 真 是 冷

总共5个unigram

2.1.1.2 Recall

Recall 中文的含义是召回率。我们的下面表述中尽量包含英文的原词。

                                      LLM (Large language model)的指标参数-LMLPHP

                                                      图1 Recall / 召回率

图1中: 单个单元/unigram 相匹配的个数,就是人输出的句子(参考)和机器输出的句子(实际)有4个基本单元/unigram是相同的,分别是 外,面,是,冷,4个unigram。参考的文本unigram的个数就是人输出的句子的unigram的个数,是4个。所以:该示例中,

  • 单个单元/unigram 相匹配的个数:就是人输出的句子(参考)和机器输出的句子(实际)的重复单元个数:4
  • 参考的文本 unigram的个数:就是人输出的句子的unigram 个数:4

                                LLM (Large language model)的指标参数-LMLPHP

                                                                 图2 Recall / 召回率 的值

2.1.1.3 Precision

Precision 的中文翻译是精确率,我们在下述的表述中尽量包含英文的原词。

                                 LLM (Large language model)的指标参数-LMLPHP

                                                            图 3 precision/精确绿

图3 中,

  • 单个单元/unigram 相匹配的个数:就是人输出的句子(参考)和机器输出的句子(实际)的重复单元个数:4
  • 实际的文本 unigram的个数:就是机器输出的句子的unigram 个数:5

所以,我们有:

                                      LLM (Large language model)的指标参数-LMLPHP     

                                                            图4 precision/精准率的值

2.1.1.4 F1

F1 又称为Rouge的调和平均值。调和平均值的大小在 0,和1之间。 我们在下文的表述中,尽量保持英文的原词。

调和平均值/F1的公式是如图5所示:

                                         LLM (Large language model)的指标参数-LMLPHP

                                                           图5 F1/调和平均值的公式

我们根据本示例图2,图4,recall的值和precision的值,得出本示例F1的值:

                                        LLM (Large language model)的指标参数-LMLPHP

                                                          图6 F1的值

2.1.2 Rouge-1 概括:

不管是Rouge-1,还是Rouge-2,还是Rouge- L,一般而言,F1,就是调和平均值越接近1,表面模型表现越好。但Rouge-1有时会带来误导。让我们看示例2:

2.1.2.1 范例2:

人输出的句子 (参考)

外 面 是 冷。

总共4个unigram

机器输出的句子 (实际)

外 面 不 是 冷

总共5个unigram。

范例1和范例2中的参考例子,就是人输出的句子是完全一样的,但机器输出的句子只有一字之差,但意思完全两样,而recall,precision,F1值完全一样。所以,这个例子给出了Roue-1的不足之处。

2.2 Rouge-2

2.2.1 重复示例1中,

人输出的句子:参考

外 面 是 冷

总共3个bigram (外 面)(面 是)(是 冷)

机器输出的句子:实际

外 面 真 是 冷

总共4个bigram (外 面)(面 真)(真 是)(是 冷)

bigram 相匹配的个数是 2 (外 面)(是 冷)

这样,我们根据公示,得出 recall(召回率),precision(精准率),F1(调和平均值)

                     LLM (Large language model)的指标参数-LMLPHP

                                                          图 7 Rouge-2 指标

2.3 Rouge-L

那Rouge 1的指标有不足之处,我们看Rouge-L 指标,Rouge- L是指参考和实际输出中,最长的n个相同的基本单元(Longest common sequence),或者最长的n-gram的个数。

2.3.1 重复示例1中,

人输出的句子:参考

外 面 是 冷

总共4个unigram

机器输出的句子:实际

外 面 真 是 冷

总共5个unigram

LCS 最长的n个相同的基本单元是:

(外 面)(是 冷),个数是2个。

这样根据公示,我们算出Recall(召回率),precision(精确率),F1的值(调和平均值):        

                                 LLM (Large language model)的指标参数-LMLPHP

                                                  图8  Rouge-L 指标值

2.4 Rouge 概括

在大模型中,文本的长度一般是比较长的,实际测试中,Rouge-L 的F1值是更具有参考价值,越接近1,表面模型表现越好。

2.5 代码实例

from rouge_score import rouge_scorer

# 创建Rouge评分器
scorer = rouge_scorer.RougeScorer(['rouge1', 'rougeL'], use_stemmer=True)

# 定义参考摘要和生成摘要
reference = "The quick brown fox jumps over the lazy dog"
candidate = "The fast brown fox jumps over the lazy dog"

# 计算Rouge分数
scores = scorer.score(reference, candidate)

# 输出Rouge分数
print(scores)

3. Bleu

4. 其他

1. 

5. 参考资料

[1]. coursera.org:Generative AI with large language model

沈建军 于韩国Tongyeong,2024年2月23日第一版,仅限于Rouge指标

02-24 09:26