当前位置: 首页 > article >正文

【大模型基础_毛玉仁】1.5 语言模型的评测


【大模型基础_毛玉仁】1.5 语言模型的评测

    • 1.5 语言模型的评测
      • 1.5.1 内在评测
      • 1.5.2 外在评测
        • 1)基于统计指标的评测
        • 2)基于语言模型的评测


1.5 语言模型的评测

评测语言模型生成能力的方法可以分为两类。

  • 内在评测(IntrinsicEvaluation):不依赖具体任务,通过模型输出评测模型的生成能力。

  • 外在评测(ExtrinsicEvaluation):通过具体任务,如机器翻译、摘要生成等,评测模型处理具体生成任务的能力。


1.5.1 内在评测

在内在评测中,测试文本通常由与预训练中所用的文本独立同分布的文本构成,不依赖于具体任务。

  • 同分布 :指多个随机变量具有相同的概率分布。

最为常用的内部评测指标是困惑度(Perplexity)。其度量了语言模型对测试文本感到“困惑”的程度。

设测试文本为 s t e s t = w 1 : N s_{test} =w_{1:N} stest=w1:N。语言模型在测试文本 s t e s t s_{test} stest上的困惑度PPL可由下式计算:

P P L ( s t e s t ) = P ( w 1 : N ) − 1 N = ∏ i = 1 N 1 P ( w i ∣ w < i ) N PPL(s_{test}) = P(w_{1:N})^{-\frac{1}{N}} = \sqrt[N]{\prod_{i=1}^{N} \frac{1}{P(w_i | w_{<i})}} PPL(stest)=P(w1:N)N1=Ni=1NP(wiw<i)1

可以看出,如果语言模型对测试文本越“肯定”(即生成测试文本的概率越高),则困惑度的值越小。而语言模型对测试文本越“不确定”(即生成测试文本的概率越低),则困惑度的值越大。

对困惑度进行改写,其可以改写成如下等价形式:

P P L ( s t e s t ) = exp ⁡ ( − 1 N ∑ i = 1 N log ⁡ P ( w i ∣ w < i ) ) PPL(s_{test}) = \exp\left(-\frac{1}{N} \sum_{i=1}^{N} \log P(w_i | w_{<i})\right) PPL(stest)=exp(N1i=1NlogP(wiw<i))

左边是条件概率的熵,右边是交叉熵。因为 P ( w i ​ ∣ w < i ​ ) ≤ 1 P(w_i​∣w_{<i​})≤1 P(wiw<i)1,所以 l o g P ( w i ​ ∣ w < i ​ ) ≤ 0 logP(w_i​∣w_{<i}​)≤0 logP(wiw<i)0,这意味着交叉熵总是大于或等于熵。

− 1 N ∑ i = 1 N P ( w i ∣ w < i ) log ⁡ P ( w i ∣ w < i ) ≤ − 1 N ∑ i = 1 N log ⁡ P ( w i ∣ w < i ) -\frac{1}{N} \sum_{i=1}^{N} P(w_i | w_{<i}) \log P(w_i | w_{<i}) \leq -\frac{1}{N} \sum_{i=1}^{N} \log P(w_i | w_{<i}) N1i=1NP(wiw<i)logP(wiw<i)N1i=1NlogP(wiw<i)


1.5.2 外在评测

在外在评测中,测试文本通常包括该任务上的问题和对应的标准答案,其依赖于具体任务。

通过外在评测,我们可以评判语言模型处理特定任务的能力。

外在评测方法可分为:

  • 基于统计指标的评测方法,

  • 基于语言模型的评测方法。

1)基于统计指标的评测

基于统计指标来评测语言模型的输出与标准答案间的契合程度,以此为评测模型生成能力的依据。

(1)BLEU(Bilingual Evaluation Understudy)

用于评估机器翻译(MachineTranslation,MT)的质量,其在词级别上计算生成的翻译与参考翻译间的重合程度。

原始的n-gram 精度的定义如下:

P r ( g n ) = ∑ i = 1 ∣ S g e n ∣ ∑ g n ∈ S g e n i C o u n t m a t c h ( g n , S r e f i ) ∑ i = 1 ∣ S g e n ∣ ∑ g n ∈ S g e n i C o u n t ( g n ) Pr(g_n) = \frac{\sum_{i=1}^{|S_{gen}|} \sum_{g_n \in S_{gen}^i} Count_{match}(g_n, S_{ref}^i)}{\sum_{i=1}^{|S_{gen}|} \sum_{g_n \in S_{gen}^i} Count(g_n)} Pr(gn)=i=1SgengnSgeniCount(gn)i=1SgengnSgeniCountmatch(gn,Srefi)

  • S g e n S_{gen} Sgen: 生成的翻译文本集合。 S r e f S_{ref} Sref: 对应的参考翻译集合。 S g e n i S_{gen}^i Sgeni S r e f i S_{ref}^i Srefi: 第 i 对生成的翻译和参考翻译。

  • g n g_n gn: 一个n-gram。

  • C o u n t m a t c h ( g n , S r e f i ) Count_{match}(g_n, S_{ref}^i) Countmatch(gn,Srefi): 生成的n-gram g n g_n gn 在参考翻译 S r e f i S_{ref}^i Srefi 中出现的次数。

  • C o u n t ( g n ) Count(g_n) Count(gn): 生成的n-gram g n g_n gn 在生成的翻译 S g e n i S_{gen}^i Sgeni 中出现的次数。

  • 分子部分:表示所有生成的n-gram在参考翻译中匹配的总次数。

  • 分母部分:表示所有生成的n-gram的总次数。

示例:MT模型将“大语言模型”翻译成英文,生成的翻译为“biglanguagemodels”,而参考文本为 “large language models”。当 n = 1 时,Pr(g1) = 2/3 。当 n = 2时,Pr(g2) = 1/2 。

基于n-gram精度,BLEU取N个n-gram精度的几何平均作为评测结果:

B L E U = ∏ n = 1 N P r ( g n ) N = exp ⁡ ( ∑ n = 1 N log ⁡ P r ( g n ) ) BLEU = \sqrt[N]{\prod_{n=1}^{N} Pr(g_n)} = \exp\left(\sum_{n=1}^{N} \log Pr(g_n)\right) BLEU=Nn=1NPr(gn) =exp(n=1NlogPr(gn))

例如,当N =3时,BLEU是unigram精度,bigram精度,trigram精度的几何平均。

在以上原始BLEU的基础上,我们还可以通过对不同的n-gram精度进行加权或对不同的文本长度设置惩罚项来对BLEU进行调整,从而得到更为贴近人类评测的结果。

(2)ROUGE(Recall-Oriented Understudy for Gisting Evaluation)

用于评价模型在摘要生成(Summarization)任务上的效果。

常用的ROUGE 评测包含:

  • ROUGE-N 是基于 n-gram 的召回指标。

  • ROUGE-L 是基于最长公共子序列 (Longest CommonSubsequence, LCS)的召回指标。

  • ROUGE-W 是在ROUGE-L的基 础上,引入对LCS的加权操作后的召回指标。

  • ROUGE-S 是基于Skip-bigram的召回指标。

ROUGE-N的定义如下:

R O U G E - N = ∑ s ∈ S r e f ∑ g n ∈ s C o u n t m a t c h ( g n , s g e n ) ∑ s ∈ S r e f ∑ g n ∈ s C o u n t ( g n ) ROUGE\text{-}N = \frac{\sum_{s \in S_{ref}} \sum_{g_n \in s} Count_{match}(g_n, s_{gen})}{\sum_{s \in S_{ref}} \sum_{g_n \in s} Count(g_n)} ROUGE-N=sSrefgnsCount(gn)sSrefgnsCountmatch(gn,sgen)

ROUGE-L 的定义如下:

R O U G E - L = ( 1 + β 2 ) R r g R g r R r g + β 2 R g r ROUGE\text{-}L = \frac{(1 + \beta^2) R_r^g R_g^r}{R_r^g + \beta^2 R_g^r} ROUGE-L=Rrg+β2Rgr(1+β2)RrgRgr

其中,

R r g = L C S ( s r e f , s g e n ) ∣ s r e f ∣ R_r^g = \frac{LCS(s_{ref}, s_{gen})}{|s_{ref}|} Rrg=srefLCS(sref,sgen)

R g r = L C S ( s r e f , s g e n ) ∣ s g e n ∣ R_g^r = \frac{LCS(s_{ref}, s_{gen})}{|s_{gen}|} Rgr=sgenLCS(sref,sgen)

L C S ( s r e f , s g e n ) LCS(s_{ref}, s_{gen}) LCS(sref,sgen)是模型生成的摘要 s g e n s_{gen} sgen 与参考摘要 s r e f s_{ref} sref 间的最大公共子序列的长度, β = R g r R r g \beta = \frac{R_g^r}{R_r^g} β=RrgRgr

基于统计指标的评测方法通过对语言模型生成的答案和标准答案间的重叠程度进行评分。这样的评分无法完全适应生成任务中表达的多样性。

为解决此问题, 可以在评测中引入一个其他语言模型作为“裁判”,利用此“裁判”在预训练阶段掌握的能力对生成的文本进行评测。

2)基于语言模型的评测

目前基于语言模型的评测方法主要分为两类:

  • (1)基于上下文词嵌入(Contex tual Embeddings)的评测方法;

  • (2)基于生成模型的评测方法。

典型的基于上下文词嵌入的评测方法是BERTScore。

典型的基于生成模型的评测方法是G-EVAL。与BERTScore 相比,G-EVAL无需人类标注的参考答案。

(1)BERTScore

BERTScore 在BERT 的上下文词嵌入向量的基础上,计算生成文本 s g e n s_{gen} sgen和参考文本 s r e f s_{ref} sref 间的相似度来对生成样本进行评测。

设生成文本包含 ∣ s g e n ∣ |s_{gen}| sgen 个词,即 s g e n = { w g i } i = 1 ∣ s g e n ∣ s_{gen} = \{w_g^i\}_{i=1}^{|s_{gen}|} sgen={wgi}i=1sgen。设参考文本包含 ∣ s r e f ∣ |s_{ref}| sref 个词,即 s r e f = { w r i } i = 1 ∣ s r e f ∣ s_{ref} = \{w_r^i\}_{i=1}^{|s_{ref}|} sref={wri}i=1sref

利用 BERT 分别得到 s g e n s_{gen} sgen s r e f s_{ref} sref 中每个词的上下文词嵌入向量,即 v g i = B E R T ( w g i ∣ s g e n ) v_g^i = BERT(w_g^i|_{s_{gen}}) vgi=BERT(wgisgen) v r i = B E R T ( w r i ∣ s r e f ) v_r^i = BERT(w_r^i|_{s_{ref}}) vri=BERT(wrisref)

利用生成文本和参考文本的词嵌入向量集合 v g e n = { v g i } i = 1 ∣ v g e n ∣ v_{gen} = \{v_g^i\}_{i=1}^{|v_{gen}|} vgen={vgi}i=1vgen v r e f = { v r i } i = 1 ∣ v r e f ∣ v_{ref} = \{v_r^i\}_{i=1}^{|v_{ref}|} vref={vri}i=1vref 便可计算 BERTScore。

BERTScore从精度(Precision),召回(Recall)和 F1 量度三个方面对生成文档进行评测。其定义分别如下:

P B E R T = 1 ∣ v g e n ∣ ∑ i = 1 ∣ v g e n ∣ m a x v r ∈ v r e f v g i ⊤ v r i P_{BERT} = \frac{1}{|v_{gen}|} \sum_{i=1}^{|v_{gen}|} max_{v_r \in v_{ref}} v_g^i \top v_r^i PBERT=vgen1i=1vgenmaxvrvrefvgivri

R B E R T = 1 ∣ v r e f ∣ ∑ i = 1 ∣ v r e f ∣ m a x v g ∈ v g e n v r i ⊤ v g i R_{BERT} = \frac{1}{|v_{ref}|} \sum_{i=1}^{|v_{ref}|} max_{v_g \in v_{gen}} v_r^i \top v_g^i RBERT=vref1i=1vrefmaxvgvgenvrivgi

F B E R T = 2 P B E R T ⋅ R B E R T P B E R T + R B E R T F_{BERT} = \frac{2 P_{BERT} \cdot R_{BERT}}{P_{BERT} + R_{BERT}} FBERT=PBERT+RBERT2PBERTRBERT

BERTScore依 赖于人类给出的参考文本。这使其无法应用于缺乏人类标注样本的场景中。

(2)G-EVAL

G-EVAL利用GPT-4在没有参考文本的情况下对生成文本进行评分。G-EVAL通过提示工程(PromptEngineering)引导GPT-4输出评测分数。

图1.10: G-EVAL 评测流程
在这里插入图片描述

如图所示,G-EVAL的Prompt分为三部分:

  • (1) 任务描述与评分标准;

  • (2) 评测步骤;

  • (3) 输入文本与生成的文本。

第一部分:任务描述指明需要的评测的任务(如摘要生成),评分标准给出评分范围、考虑的因素等内容。

第二部分:是在第一部分内容的基础上由GPT-4自己生成的思维链(Chain-of-Thoughts, CoT)

第三部分:输入文本与生成的文本是源文本和待评测模型生成的文本。

将上述三部分组合在一个 prompt 里面然后输入给GPT-4,GPT-4 便可给出对应的评分。

.


其他参考:【大模型基础_毛玉仁】系列文章


声明:资源可能存在第三方来源,若有侵权请联系删除!


http://www.kler.cn/a/573995.html

相关文章:

  • 冯诺依曼体系结构的理解和操作系统的极简介绍【Linux操作系统】
  • 【五.LangChain技术与应用】【28.LangChain Agent添加记忆:智能代理的长期学习能力】
  • 解决DeepSeek繁忙办法一:本地部署(完整篇)
  • 自学Linux系统软件编程第八天
  • 数据结构 常见的排序算法
  • python爬虫:python中使用多进程、多线程和协程对比和采集实践
  • 【C++】5.4.3 范围for语句
  • maven高级-02.继承与聚合-继承关系实现
  • 算阶,jdk和idea的安装
  • 程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<12>
  • Python中的常用库
  • Java中的集合
  • 国产ARM主机安装Ansible
  • vue3的npm配置修改源
  • DeepSeek携手防爆对讲机,大胆探索石化行业智能化升级
  • c#实现Modbus TCP/IP与RS 485数据交换的实例
  • 深入理解设计模式中的单例模式(Singleton Pattern)
  • 人工智能之数学基础:伴随矩阵
  • redis菜鸟教程
  • 【Linux篇】版本控制器-Git