第 5 讲:LLM 的自动评估

Large Language Models: Methods and Applications · Lecture 05。个人学习讲义与配套实验,按主题整理并持续修订。

课程源码 ZIP ↓

个人整理的学习笔记,非官方讲义;课程来源与整理说明见课程介绍。配套示例未逐一运行验证。

本篇目录

对应原课:CMU 11-667 Fall 2025 · Lecture 5 · Tue 9-Sep-2025 · Automatic evaluation of LLMs(Yubin Kim、Jaromir Savelka) 原课 slides:Automatic Evaluation of LLMs(课表上标为 automatic evaluation) 阅读材料:Gehrmann et al. (2021), The GEM Benchmark;Srivastava et al. (2022), Beyond the Imitation Game(BIG-bench)第 1–2 章;Liang et al. (2022), Holistic Evaluation of Language Models(HELM);Novikova et al. (2017), Why We Need New Evaluation Metrics for NLG 配套代码:code/lecture05/(2 个模块 + 5 个演示脚本,全部只做评估,最长约 20 秒) 本讲的写法:骨架来自原课 slides;花园世界上”标准答案已知”的评估实验是补充的——被评估的是第 1、2、4 讲训练过的 7 个模型。所有数字都来自配套代码的实际输出。


目录


0. 本讲导读

0.1 这一讲要回答的问题

slides 开门见山地问:怎样判断一个模型比另一个更好?

前四讲我们一直在用测试集困惑度回答这个问题,也一直撞到它的边界:第 2 讲里四种神经网络的困惑度都在 3.81~3.85,真正的差别藏在”窗口外的物主代词”里;第 3 讲里屏蔽词让方言的困惑度从 4.28 涨到 7.45,而标准测试集上完全看不出来;第 4 讲里从原版改到 Llama 配方,困惑度分不出高下,差别在稳定性和推理效率上。

LLM 能做几乎任何语言任务,评估它就更难了。这一讲把评估当成一门需要设计的学问:

  1. 自动评估在”测量”什么?指标和我们真正在乎的东西是什么关系?
  2. 困惑度、BLEU、ROUGE、BERTScore、COMET、nDCG……每个指标在奖励什么、惩罚什么、漏掉什么?
  3. 用语言模型做多选题时,“评估代码”的一个小选择能让分数差多少?
  4. 一个分数有多可信?一张排行榜是怎样排出来的?

0.2 学完这一讲你应该能

  • 区分构念(construct)、操作化(operationalization)和指标(metric),区分内在 / 外在评估、离线 / 在线评估;
  • 正确地比较不同分词的模型的困惑度,说出困惑度的几种误用;
  • 手算 WER、BLEU、ROUGE、BERTScore,解释它们和”真正正确”之间的落差,以及 COMET 的思路;
  • 说出多选题评估里打分方式、提示格式的影响;
  • 解释 RR、AP、nDCG、ESL 背后的用户模型;
  • 用自助法估计置信区间、用配对比较判断差别是否显著,并知道它们回答不了什么;理解 HELM 的多维度成绩单和 Chatbot Arena 的两两投票。

0.3 本讲的实验平台

被评估的是前几讲训练过的 7 个模型(garden_eval.py 把它们包装成同一个接口):第 1 讲的窗口 MLP;第 2 讲的 Transformer,以及它的 NoPE、1 层、只训练 1 遍的三个变体;第 4 讲的原版 2017 配方和 Llama 式配方。花园世界的好处在这一讲最明显:每一个评估问题都有精确的标准答案——一句话合不合语法、意思对不对、真实概率是多少,都可以算出来。于是我们能直接测量”指标”和”真相”之间的距离。


1. 什么是自动评估

1.1 构念、操作化、指标

slides 用三个概念定义评估:

  • 构念(construct):我们想测量的系统属性——质量、信息量、毒性,或者”提高用户忠诚度”;
  • 操作化(operationalization):用来量化构念的度量方法——困惑度、自动毒性分数、某个任务上的准确率、点击率;
  • 指标(metric):一个标量,我们期望它和构念单调相关。人通常理解构念,能给出准确的评分或标签。

关键在”期望”二字:指标只是构念的代理。困惑度是”语言能力”的代理,BLEU 是”翻译质量”的代理,点击率是”用户满意”的代理。代理和真相之间的落差,就是这一讲的主题。

1.2 内在与外在、离线与在线

  • 外在评估(extrinsic):把技术当作对一个更大流程的干预,端到端地评估整个流程或任务;内在评估(intrinsic):只评估某个组件。好的内在指标应该和下游的构念相关、和多个下游构念相关、或者和某个重要的子任务相关。slides 说,理解不同指标之间的关系是评估的根本问题。
  • 离线评估:不用上线就能算的指标(准确率、精度……);在线评估:上线系统的表现,通常是业务指标(收入、点击率),用 A/B 测试比较——一半流量给系统 A、一半给系统 B,指标高的赢。离线指标和在线 A/B 结果之间的相关性是一个巨大的挑战:生产系统里模型之间相互作用,一个模型变好可能让整个系统变差。

1.3 为什么不都用人工评估

对很多构念来说,人工评估是理想的。但 slides 引用 Karpinska et al. (2021) 提醒:在众包平台上评估开放式文本生成充满陷阱——评估者的资质、任务说明、是否真的认真读了文字,都会严重影响结论。而且问法本身就会改变答案:slides 举了一个例子,让人判断”两个商品搜索系统的结果哪个更相关”,问题出在”相关”这个词没有定义清楚、评估者的意图和真实用户不同、看到的结果顺序会影响判断……

自动评估的理由(slides):

  • 人工评估贵:时间(招募、培训、打分)和金钱;
  • 人工评估难以扩展:每个新系统都要重新评估;两两比较 nn 个系统需要 O(n2)O(n^2) 次比较;
  • 自动评估常常”够好”:很多情况下有和构念高度相关的自动指标。

所以设计自动评估的目标是:一个可复用的离线指标,要么直接建模我们关心的构念,要么建模可靠的人工标签。


2. 评估的任务模板

slides 把常见的评估任务分成几类(xx 是输入,yy 是输出):

模板xxyy例子
分类:给一个决定问题、文档标签情感分类、多选题
序列生成:给一串决定前缀、问题、文档后续的词、答案、摘要续写、问答、翻译、摘要
排序:给一个排好序的列表前缀、问题、文档、查询候选词、答案、摘要、文档的列表搜索、自动补全
多任务以上任意以上任意GLUE、HELM

下面按这个顺序:先讲序列生成(§3 困惑度、§4 生成指标),再讲分类的一种重要形式(§5 多选题),再讲排序(§6),最后是多任务的基准(§7)。


3. 困惑度

3.1 定义与用途

困惑度衡量”模型对一段文字有多意外”(第 1 讲 §2.4):

PPL(y)=exp⁡(−1T∑t=1Tlog⁡p(yt∣y<t))\text{PPL}(y) = \exp\left(-\frac{1}{T}\sum_{t=1}^{T} \log p(y_t \mid y_{<t})\right)

slides 对它的评价:优点是放宽了精确匹配(不要求模型的输出和参考一字不差);缺点是它是逐 token 的决定、依赖词表和模型;而且——困惑度根本不使用模型预测出来的序列,它只看模型给一段既定文字的概率。

两种典型用途:

  • 内在评估:衡量语言模型对人类语言建模得有多好;最常见的是训练时每隔 kk 步画一次验证集困惑度曲线;
  • 外在评估:在我们相信模型能较好地模拟人类语言的前提下,用它衡量一段文字有多”像人写的”——过滤垃圾文字(第 3 讲的数据清洗里就有这种做法)、检测机器生成的文字。

3.2 困惑度只能在同一个分词下比较

第 1 讲练习 9 已经提过这个问题,代码 01 §1 把它变成数字。同一个测试集(1000 篇文档、24,832 个词、108,185 个字符),三个模型:

模型token 单位每 token 困惑度总 NLL(nat)比特 / 字符
真实分布词3.65532,1830.429
Transformer(第 2 讲)词3.85133,4800.446
字符级 7-gram(插值)字符1.46341,1530.549

字符级模型的”困惑度”只有 1.46,看起来比词级模型的 3.85 好得多——但它每一步只需要猜一个字符,当然更容易。两个模型都给同一段文字分配了概率,总 NLL 才是可以比的:字符级模型的总 NLL 更大,它其实更差。

换成和分词无关的单位就能公平比较:每字符比特数(bits per character,BPC)或每字节比特数(bits per byte)。只要两个模型都定义了”整段文字”上的概率分布,总 NLL 就不依赖分词,除以字符数(或字节数)、换成以 2 为底,就是 BPC。不同词表的 LLM 之间比较语言建模能力时(例如 The Pile 上的评估),都应该用 bits per byte。

3.3 词表的把戏

代码 01 §2:把最罕见的 kk 个词并成一个 <unk>,用真实分布(完美的模型)计算困惑度——<unk> 的概率就是这 kk 个词的概率之和:

并成 <unk> 的词这些词占测试 token真实分布的困惑度
无0%3.655
最罕见的 10 个1.1%3.600
最罕见的 20 个2.5%3.469
最罕见的 40 个8.7%2.919

同一个完美的模型、同一段文字,只是不再区分 40 个罕见词,困惑度就从 3.655 降到 2.919。模型没有变强,只是任务变容易了。比较困惑度之前,必须确认词表、对 <unk> 的处理、对特殊符号(如 <eos>)是否计分都完全相同。

3.4 困惑度低 ≠ 文字好

代码 01 §3 用第 2 讲的 Transformer 计算几种文字的困惑度:

文字Transformer 下的困惑度真实分布下每词 NLL不同的句子
真实的测试句子3.6841.26493%
温度 0.7 采样的 500 句3.4001.23385%
温度 0.5 采样的 500 句3.2991.20771%
贪心解码的那一句(I eat the apple .)3.2301.157—
贪心那一句重复 12 遍3.7281.223—

温度越低,困惑度越低、在真实分布下也越”常见”,但句子越来越单调;贪心只会说同一句话。困惑度低意味着平庸,不等于好——这正是第 1 讲 §7.8 说的”太高概率的文本反而不好”。

两个与预想不同的细节值得一提:

  • “同一句话重复 12 遍”在这个小模型下困惑度并没有更低(3.728):它从没学会”照抄前文”。大模型会——在大模型里,前文出现过的句子会被赋予越来越高的概率,复读会自我强化(Xu et al. 2022),这正是贪心解码陷入循环的原因。
  • 让模型贪心地连写 60 个词(禁止结束),前 48 个词都在重复 I eat the apple .,第 49 个词起写出了不合语法的 I eat my friend grows the carrot:训练文档平均只有 25 个词,模型在这么靠后的位置上已经不可靠了(第 4 讲 §4.5 的长度外推问题)。

3.5 用困惑度检测机器文字

slides 提到困惑度的外在用途之一是检测 LM 生成的文字。代码 01 §4:从真实分布采样 1000 句当作”人写的”,从 Transformer 采样 1000 句当作”机器写的”,用 Transformer 自己的每词 NLL 打分(越低越像机器写的):

机器的采样方式平均每词 NLL:机器 / 人AUC(按句)AUC(每 5 句一段)
温度 1.01.358 / 1.3740.5150.539
top-p 0.91.284 / 1.3740.5580.665
温度 0.71.299 / 1.3740.5420.630
温度 0.51.271 / 1.3740.5630.676

按句判断几乎是瞎猜;拼成 5 句一段后,低温度、top-p 的机器文字好认了一些,但离”可靠”还差得远。温度 1.0 的采样始终和”人写的”难以区分——这个模型已经很接近真实分布。GLTR、DetectGPT 等检测器都利用了”机器偏爱高概率的词”这个特点;反过来,高温度采样、改写就能骗过它们,短文字更是几乎无法判断。把”困惑度低”当作”机器写的”证据,对短文字和高温度文字都不可靠——这在学术诚信等场景里是一个现实的风险。


4. 生成任务的指标

4.1 术语

slides 为序列生成定义了术语:模型的输出(hypothesis,也叫候选)y^\hat{y},一个或多个参考答案(reference)y∗y^*,指标 μ(y^,y∗)\mu(\hat{y}, y^*)。下面的指标大都是”比较输出和参考有多像”。

4.2 词错误率(WER)

WER=S+D+INref\text{WER} = \frac{S + D + I}{N_{\text{ref}}}

SS、DD、II 是把输出改成参考最少需要的替换、删除、插入次数(编辑距离),NrefN_{\text{ref}} 是参考的词数。slides 的评价:放宽了精确匹配;但对所有变换一视同仁,语义相近的词被忽略,和”理解了没有”的相关性存疑(Favre et al. 2013 研究了 WER 能不能预测语音识别系统对人的实际用处)。主要用于语音识别和机器翻译。

4.3 BLEU

BLEU(Papineni et al. 2002)的核心是裁剪的 n-gram 精度。代码 02 §1 复现了 slides 的例子:

参考 1:He picked up the ball from the ground .
参考 2:He took the book off the floor .
输出:  He picked the He sphere off the the the floor .
词在输出中任一参考中最多裁剪后
He211
picked111
the422
sphere100
off、floor、.各 1各 1各 1

裁剪后的总数是 7,输出共 11 个词,1-gram 精度 7/11=0.6367/11 = 0.636。“the”在输出里出现了 4 次,但任何一个参考里最多只有 2 次,所以只算 2 次——裁剪防止靠重复刷分。2、3、4 阶的裁剪精度分别是 4/10、1/9、0/8。

完整的 BLEU 是 1~4 阶精度的几何平均,再乘一个简短惩罚(brevity penalty):

BLEU=BP⋅exp⁡(14∑n=14log⁡pn),BP={1c>re1−r/cc≤r\text{BLEU} = \text{BP} \cdot \exp\left(\frac{1}{4}\sum_{n=1}^{4} \log p_n\right), \qquad \text{BP} = \begin{cases} 1 & c > r \\ e^{1 - r/c} & c \le r \end{cases}

cc 是输出长度,rr 是最接近的参考长度。精度只看”说出来的对不对”,不管”漏了多少”,只输出一个”the”也能拿到满分精度——BP 就是为此设的。句子级 BLEU 常有某一阶 0 命中、几何平均变成 0,所以通常做平滑(我们对 n≥2n \ge 2 加 1),这个例子的句子级 BLEU 是 0.283。实际报告的通常是语料级 BLEU:把所有句子的命中数和总数分别加起来再算,更稳定。

slides 总结 BLEU:放宽了精确匹配;能处理多个参考;在机器翻译上和人的偏好相关(原论文的图)——但 Reiter (2018) 的综述显示,它和人的偏好的相关性在机器翻译上比在其他自然语言生成任务上强得多。缺点是语义相近的词被忽略。

4.4 ROUGE

BLEU 衡量精度:输出里的词有多少在参考里。ROUGE(Lin 2004)是它的补充,衡量召回:参考里的 n-gram 有多少出现在输出里。用户模型是摘要任务:参考摘要的要点,机器摘要覆盖了多少。实践中常用 k=1,2k = 1, 2(ROUGE-1、ROUGE-2),固定输出长度,扩展到多个参考;在多文档摘要上和人的偏好相关(slides)。ROUGE-L 用最长公共子序列(LCS)代替 n-gram,多考虑了一点词序。

4.5 从重叠到语义:BERTScore 与 COMET

上面的指标都基于词的重叠:一个答案意思对、但和参考用词不同,它们就失效了。BERTScore(Zhang et al. 2020)借助预训练模型的上下文嵌入做”软匹配”:

PBERT=1∣y^∣∑y^j∈y^max⁡yi∈y∗cos⁡(yi,y^j),RBERT=1∣y∗∣∑yi∈y∗max⁡y^j∈y^cos⁡(yi,y^j)P_{\text{BERT}} = \frac{1}{|\hat{y}|}\sum_{\hat{y}_j \in \hat{y}} \max_{y_i \in y^*} \cos(\mathbf{y}_i, \hat{\mathbf{y}}_j), \qquad R_{\text{BERT}} = \frac{1}{|y^*|}\sum_{y_i \in y^*} \max_{\hat{y}_j \in \hat{y}} \cos(\mathbf{y}_i, \hat{\mathbf{y}}_j)

输出的每个词去参考里找最像的词(精度),参考的每个词去输出里找最像的词(召回),再合成 F 值;实践中还可以用 idf 给罕见词更高的权重(slides)。它和人的判断相关性更高,但依赖嵌入模型:嵌入认为相近的两个词,即使意思不同也会被当成匹配。

slides 接着指出:到目前为止的所有指标都是”未观测的构念”或”人的偏好”的模型,但它们都没有直接建模这些东西。有了一批人工评分,能不能直接建模?COMET(Rei et al. 2020)就是这样做的:用预训练编码器表示源句、输出和参考,然后要么回归人工打分,要么学一个排序模型,让人更偏好的输出排得更高。直接建模人工评分的效果好,建模人的偏好(排序)往往更好。代价是依赖嵌入模型,也依赖针对任务的人工标注。

4.6 实验:一个”标准答案已知”的生成任务

代码 02 §2–§4 构造了一个”数据到文字”的任务:给定意思(主语、动词、名词、形容词、尾巴),写出一句话。从 400 句测试句子出发,每句造出 9 类”系统输出”,每类输出”意思对不对”由构造方式决定,“合不合语法”由真实状态机检查。参考答案只给一个(原句)——真实任务里,参考答案永远列不全所有正确的说法。

输出类别意思对合语法BLEUROUGE-1ROUGE-L1 − WERBERTScoreLM 流畅度
原句100%100%1.0001.0001.0001.0001.000−1.268
换一种限定词(the ↔ her)100%100%0.6330.8730.8730.8730.994−1.278
名词换成同类的另一个0%100%0.6330.8730.8730.8730.996−1.349
名词换成别类的0%18%0.6330.8730.8730.8730.987−2.042
主谓不一致100%0%0.7240.8730.8730.8730.982−2.325
漏掉形容词或尾巴0%100%0.5180.8450.8450.7410.926−1.503
打乱词序0%0%0.3001.0000.5800.3590.863−8.112
名词重复两遍100%0%0.7720.9410.9410.8730.998−2.211
物主代词和主语不一致0%0%0.6330.8730.8730.8730.991−2.153

(BERTScore 用第 2 讲 Transformer 最后一层的隐藏状态做嵌入;LM 流畅度是同一个模型给输出的平均每词 log 概率,不需要参考答案。)

读这张表:

  • “换一种限定词”完全正确,却和”名词换成同类的另一个”(意思全错)拿到一模一样的 BLEU、ROUGE、WER——两者都只和参考差一个词。基于重叠的指标分不出”换了一个合法的词”和”换了一个错的词”。
  • BERTScore 甚至更偏爱错的那个(0.996 vs 0.994):在嵌入空间里 plum 和 pear 很近,the 和 her 反而远一些。
  • ROUGE-1 对打乱词序完全不敏感(1.000):它只数词,不看顺序。
  • 不看参考的 LM 流畅度能抓住语法错误(打乱词序 −8.1、主谓不一致 −2.3),却几乎抓不住”通顺但意思错”的输出(名词换成同类的 −1.349,和原句的 −1.268 很接近)。

用 AUC 衡量每个指标”把好输出排在坏输出前面”的能力(随机取一个好输出和一个坏输出,指标给好输出更高分的概率,0.5 = 瞎猜):

指标意思对且合语法意思对合语法参考给全两种说法时
BLEU0.7610.8900.5351.000
ROUGE-10.6450.6210.4450.929
ROUGE-L0.7510.7940.6251.000
1 − WER0.8050.7420.6491.000
BERTScore0.8030.7510.6771.000
LM 流畅度0.8620.5990.9630.862

最后一列是一个”作弊”的对照:如果参考答案恰好列全了所有正确说法(原句 + 换一种限定词),基于重叠的指标都是 1.000——正确的输出和某个参考一字不差。这在真实任务里不可能:一个意思永远有更多种说法。多参考能缓解问题,但永远列不全。

COMET 的思路(代码 02 §4):在 200 个”意思”的输出上,用”意思对且合语法”的真实标签训练一个逻辑回归,特征就是上表的 6 个指标;在另外 200 个”意思”的输出上测,学出来的指标 AUC = 0.922,高于任何单个指标(最好的 LM 流畅度 0.863)。权重最大的是 LM 流畅度(+4.42,管语法)和 1 − WER(+3.00,管意思)。直接拟合你在乎的判断,能把各个指标的长处结合起来——前提是有可信的标注(在真实世界里,就是成本高昂的人工评分)。


5. 多选题:同一个模型,不同的评估代码

5.1 怎样用语言模型做多选题

很多 LLM 基准(HellaSwag、ARC、MMLU)是多选题。用一个只会给文字打分的语言模型答题,最常见的做法是:把题干当提示,计算每个选项作为续写的概率,选概率最高的。可是”概率”有好几种算法:

  • 选项所有 token 的 log 概率之和(EleutherAI lm-evaluation-harness 报告的 acc);
  • 除以 token 数(平均每 token);
  • 除以字符数或字节数(harness 的 acc_norm)。

另一种做法是把选项写进提示(“A. … B. …”),让模型输出字母——这要求模型能理解题目格式,通常只对较大的、指令微调过的模型有效(第 6 讲)。

代码 03 出了 600 道”续写”题:题干是主语 + 动词,4 个选项是不同长度的续写,其中只有一个和题干拼起来合语法,干扰项取自其他句子。例如:

题干:you pick ……
  A. the tomato .
  B. the carrot in the morning .
  C. the grape from your own garden .   ← 正确
  D. our rose from our own garden .

选项长 3~8 个词。真实分布下三个干扰项的概率都是 0,用真实分布答题任何算法都是 100%。

5.2 三种打分,三个分数

模型log 概率之和÷ token 数÷ 字符数
窗口 MLP(第 1 讲)96.8%89.3%83.2%
Transformer·只训 1 遍85.3%81.5%73.7%
Transformer·1 层98.5%95.0%89.5%
Transformer·NoPE97.7%94.0%88.0%
Transformer(第 2 讲)98.3%94.7%90.7%
原版 2017(第 4 讲)98.3%95.2%90.5%
Llama 式(第 4 讲)98.5%95.2%90.3%

同一个模型,三种打分可以差 5~15 个百分点。在这个任务上**“log 概率之和”反而最好**:干扰项只错在一个词上,那个词的概率极小;按长度归一化之后,这一个错词的代价被摊薄到整个选项上,长的错误选项就可能胜出。

两种打分各有自己的长度偏差。把题目按”正确选项是不是最长 / 最短的”分开(第 2 讲 Transformer):

题目子集题数log 概率之和÷ token 数÷ 字符数
正确选项是唯一最长的8895.5%98.9%100.0%
正确选项是唯一最短的104100.0%91.3%79.8%

求和偏爱短选项(每多一个词就多乘一个小于 1 的概率),正确答案最长时它就失分;归一化偏爱长选项,正确答案最短时它就失分。哪种打分”对”,取决于题目里长度和正确与否是怎样相关的——在 HellaSwag 这类选项都通顺、长短不一的任务上,acc_norm 通常更好;在这里,求和更好。这也是 harness 两种都报告的原因。

另一个要检查的是**“不看内容的捷径”**:总选最短的选项能得 27.0%,总选最长的 21.5%,和随机的 25% 相差不大——这个任务的长度几乎不泄露答案。真实基准里常常没这么幸运,有的基准里”最长的选项往往是正确的”,模型(和人)可以利用这种统计痕迹拿分。

5.3 提示格式

代码 03 §3 在题干前面加上 1 句或 3 句完全无关的话(真实分布下正确答案不变),按 ÷ 字符数打分:

模型只有题干前加 1 句前加 3 句
窗口 MLP(第 1 讲)83.2%82.2%82.3%
Transformer·只训 1 遍73.7%65.2%56.3%
Transformer·1 层89.5%88.5%87.2%
Transformer·NoPE88.0%87.3%85.8%
Transformer(第 2 讲)90.7%90.0%87.7%
原版 2017(第 4 讲)90.5%89.0%89.0%
Llama 式(第 4 讲)90.3%90.3%89.8%

弱模型受影响最大(73.7% → 56.3%);排名的前几位也会互换:只有题干时第 2 讲的 Transformer 第一,加了无关的话之后 Llama 式第一。窗口模型几乎不受影响——它只看最近 5 个词,前面加什么都看不见。真实的基准评估里,换一个提示模板、换一种选项写法、换一个分隔符,分数变化几个百分点很常见;Sclar et al. (2024) 报告某些任务上格式的差别可达几十个百分点。报告分数时必须写清楚打分算法和提示模板,否则不同论文的数字没法比较。


6. 排序任务的指标

6.1 每个指标背后都有一个用户模型

很多语言任务给用户的是一个列表:搜索结果、候选答案、自动补全的建议。LLM 既可以从一个目录里挑选列表的元素(例如搜索),也可以生成它们(例如问答、补全)。slides 把排序指标逐个和”用户怎样浏览列表”对应起来:

指标用户模型适用场景
期望搜索长度 ESL(Cooper 1968)按顺序往下看,凑够 kk 个有用的就停;数跳过了多少个没用的很好解释,但现在很少用
倒数排名 RR按顺序往下看,看到第一个有用的就满意只有一个正确答案、没耐心的用户(TREC-8 问答);工业界更常用它的推广 ERR
平均精度 AP按顺序往下看,要收集所有有用的多个正确答案、有耐心的用户;“所有召回水平上的平均精度”
nDCG(Järvelin & Kekäläinen 2002)按顺序往下看,收集所有有用的,越往下越打折扣;相关度分级网页搜索

nDCG 的公式:DCG@k=∑i=1k2gi−1log⁡2(i+1)\text{DCG@}k = \sum_{i=1}^{k} \frac{2^{g_i} - 1}{\log_2(i+1)},gig_i 是第 ii 位结果的分级相关度;除以理想排序的 DCG 得到 nDCG。

代码 04 §1 在一个例子上把四个指标各算一遍:列表 · ● · ◐ ● · · ◐ · ·(● 相关度 2,◐ 相关度 1)的 RR = 0.500,AP = 0.525(第 2、4、5、8 位的精度 1/2、2/4、3/5、4/8 的平均),nDCG@10 = 0.652,ESL:凑够 1 个要跳过 1 个,凑够 3 个要跳过 2 个。

6.2 指标意见不一致时

代码 04 §2:系统 A 的结果是 ● · · · · · ● · ● ·,系统 B 是 · ● ● ● · · · · · ·。

指标AB谁更好
RR1.0000.500A
AP0.5400.639B
nDCG@100.7670.733A
ESL(kk=3)61B

四个指标分成两派。RR 只在乎第一个结果,A 把一个相关结果放在第 1 位,赢了;nDCG 的对数折损让第 1 位的分量特别重(第 1 位权重 1,第 2 位 0.63,第 4 位 0.43),所以它也站在 A 这边。AP 和 ESL 在乎”把相关结果都找到”,B 把三个相关结果都放在前 4 位,赢了。“哪个系统更好”取决于用户想要什么——先想清楚用户模型,再选指标。

slides 还引用了一系列”元评估”研究(Sanderson et al. 2010;Chen et al. 2017;Radlinski & Craswell 2010):在实验室里测的指标和在线实验里用户的真实偏好并不总是一致,不同指标对系统差异的灵敏度也不同。

6.3 一个检索任务

代码 04 §3 在 400 句测试句子上做检索:查询是 43 个名词(“找关于 plum 的句子”),相关度分三级——句子里有这个名词本身 = 2,有同一类的别的名词 = 1(找 plum 时找到 pear 也算有点用),否则 0。四个系统:

系统MRR(只算 2)MAP(只算 2)nDCG@10(分级)前 10 名里同类句子的比例
随机0.0610.0340.12825.1%
按词匹配1.0001.0000.90210.0%
按嵌入相似度0.7550.4900.74761.2%
混合(词匹配 + 0.5 × 嵌入)1.0001.0000.99535.6%

按词匹配把含查询词的句子排在最前(MRR、MAP 满分),但之后全是并列的 0 分,同类的句子靠运气;按嵌入相似度(第 2 讲模型的词嵌入)学到了”同一类的名词彼此相近”,前 10 名里同类的句子多,但精确命中排得没那么靠前;混合两者,在分级相关度上最好。第 11 讲的 RAG 里,BM25(词匹配)+ 稠密检索(嵌入)的混合检索正是这个思路。


7. 基准、多维度成绩单与不确定性

7.1 为什么不只用一个指标

slides 指出:现代 LLM 支持多种任务(翻译、摘要、排序、对话),即使在一个任务内部也有多个子任务(检索、生成)。几十年来,生产系统一直用多维度的指标看板(访客数、点击、点击率、订阅……),LLM 也越来越如此。

基准多得数不过来:GLUE(Wang et al. 2018,自然语言理解的多任务基准)、GEM(Gehrmann et al. 2021,本讲阅读,自然语言生成的基准和评估方法)、BIG-bench(Srivastava et al. 2022,本讲阅读,200 多个由社区贡献的任务,“超越模仿游戏”)……slides 的建议是:去看最新一次 LLM 发布报告里列出的基准清单。

HELM(Liang et al. 2022,本讲阅读)的思路尤其值得一提:“整体评估”——在许多场景(任务 × 领域 × 语言)上,同时测量多个指标:准确率之外,还有校准、鲁棒性、公平性、偏见、毒性、效率。结果是一张完整的成绩单,而不是一个总分。

7.2 一张成绩单,三种排名

代码 05 §3 给 7 个模型打了一张小成绩单:

模型困惑度↓多选题多选题·加无关句窗口外物主代词生成合法率参数量↓
窗口 MLP(第 1 讲)3.8460.9680.9670.7000.95027,706
Transformer·只训 1 遍4.2700.8530.6850.8440.760106,496
Transformer·1 层3.8610.9850.9800.9720.95556,512
Transformer·NoPE3.8120.9770.9780.9860.960106,496
Transformer(第 2 讲)3.8510.9830.9780.9820.954106,496
原版 2017(第 4 讲)3.8220.9830.9820.9860.954106,368
Llama 式(第 4 讲)3.8480.9850.9870.9970.962106,560

(多选题按 log 概率之和打分;“加无关句”是题干前加 3 句无关的话;生成合法率是温度 1.0 采样 1000 句中合语法的比例。)

把成绩单汇总成一个排名,有不同的方式:HELM 用平均胜率(每个场景上打败了多少比例的其他模型,再平均);也可以用平均名次、或者把各列标准化后取平均。前四名:

汇总方式只看质量(前 5 列)质量 + 效率(加上参数量)
平均胜率Llama 式 > NoPE > 原版 2017 > 1 层Llama 式 > 原版 2017 > 1 层 > NoPE
平均名次Llama 式 > NoPE > 原版 2017 > 1 层Llama 式 > 原版 2017 > NoPE > 1 层
标准化分数平均Llama 式 > 原版 2017 > NoPE > 第 2 讲 Transformer1 层 > Llama 式 > 原版 2017 > NoPE

同一张成绩单,换一种汇总方式、加不加效率,排名就会变,连第一名都可能换人(标准化分数会放大”参数量只有一半”这一列的优势)。HELM 因此主张报告完整的成绩单,“平均胜率”只是方便浏览的摘要。

7.3 一个分数有多可信

测试集的大小。代码 05 §1 用自助法(从测试集里有放回地重抽同样多的样本,看分数的分布)估计 95% 置信区间:只训练 1 遍的 Transformer 在多选题上,用前 50 道题时 84.0%,区间 [74.0%, 94.0%];150 道 [79.3%, 90.0%];600 道 [82.3%, 88.0%]。区间宽度大约按 1/N1/\sqrt{N} 缩小。第 2 讲 Transformer 的测试集困惑度,100 篇文档时 3.893 [3.739, 4.051],1000 篇时 3.851 [3.801, 3.902]——第 2、4 讲里那些 0.01~0.03 的困惑度差别,都落在这个区间之内。

配对比较。可是”各自的区间重叠”不等于”差别不显著”。同一篇文档对两个模型来说难度相同,把两个模型在同一批文档上的得分配对相减,再对差值做自助法,就消掉了”文档难度”这个最大的波动(代码 05 §2):

比较困惑度 A / B平均差(nat / 词)重抽样中 A 不比 B 好的比例
结构不同:正弦位置编码 vs 不加3.851 / 3.812−0.00661.000
结构完全相同,只换随机种子 0 vs 13.851 / 3.817−0.00601.000

两组比较都”显著”:B 在这个测试集上确实好于 A。可是第二组的两个模型结构完全相同——差别来自训练的随机性,不来自结构。配对自助法只回答”在这个测试集上的差别是不是抽样噪声”,回答不了”换一次训练还成立吗”。要比较结构,必须用多个随机种子(第 2、4 讲都这样做了)。反过来,多选题上 Llama 式 98.5% vs 第 2 讲 Transformer 98.3%,配对比较中 Llama 式不比它好的比例是 0.36——不显著。

评估里至少有三种波动:测试集抽样(自助法管这个)、训练的随机性(多个种子管这个)、生成时的采样(同一个模型两次采样 1000 句和 3000 句,生成合法率分别是 95.4% 和 96.7%)。

7.4 自动指标之外

slides 引用 Diaz & Madaio (2023) 提醒,自动评估指标是”岌岌可危”的:

  • 不相容:不同指标、不同人群对”好”的定义可能互相冲突(第 3 讲的方言就是一例);
  • 非平稳:用户、数据、任务随时间变化,昨天的指标今天可能失效;
  • 依赖工程管线:分词、提示模板、打分代码的一个选择就能改变结果(§3.2、§5);
  • 子任务之间的差异:平均分会掩盖某些子任务上的失败;
  • 指标的”社会生命”:一个指标一旦成为大家追逐的目标,它就会被优化、被刷分,不再衡量原来想衡量的东西(古德哈特定律;第 16 讲的基准污染)。

所以自动指标要和其他传统互补:定性评估(真的去读模型的输出)、理解技术所处的社会情境。

7.5 在线的人工评估:Chatbot Arena

slides 最后提到 LMArena(原名 Chatbot Arena,Chiang et al. 2024):用户输入自己的问题,看两个匿名模型的回答,投票选更好的那个;用 Bradley-Terry 模型从成千上万次两两比较里估计每个模型的”实力”:

P(i 胜 j)=sisi+sjP(i \text{ 胜 } j) = \frac{s_i}{s_i + s_j}

log⁡si\log s_i 换成 Elo 式的分数(相差 400 分约等于胜率 10 : 1)。代码 05 §4 做了一个模拟:随机挑两个模型,各采样一句话,“用户”选合语法的那句(都合或都不合就算平局、不计):

模型100 票:分数 [95% 区间]1000 票:分数 [95% 区间]生成合法率
Llama 式(第 4 讲)+63 [−103, +265]+114 [+76, +164]97.3%
原版 2017(第 4 讲)+94 [−78, +331]+90 [+48, +132]97.2%
Transformer·1 层−16 [−225, +179]+61 [+27, +112]96.5%
Transformer(第 2 讲)+128 [−31, +536]+51 [+3, +106]96.7%
Transformer·NoPE+98 [−44, +329]+45 [+2, +88]96.3%
窗口 MLP(第 1 讲)+24 [−105, +174]−41 [−79, −5]93.8%
Transformer·只训 1 遍−390 [−615, −285]−321 [−358, −295]73.3%

100 票时,排在中间的几个模型区间大幅重叠,名次没有意义(第 2 讲 Transformer 排第一,只是运气);1000 票时区间收窄,但合法率只差一两个百分点的模型仍然分不开。真实的 Arena 每个模型要攒上千张票,排行榜才稳定;而且**“投票的人在乎什么”决定了排名**——这里的模拟用户只在乎合不合语法,真实用户在乎的东西多得多,也会被回答的长度、格式、语气影响(第 20 讲详细讨论人工评估)。

7.6 slides 的总结

  • 自动评估性能的方法多得很,各有优缺点——“所有模型都是错的,但有些是有用的”;
  • 重要的是学会质询指标、比较指标、迭代改进指标:指标应该和我们真正在乎的东西相关;
  • LLM 社区正在从”计算一个数字来优化”走向更细致的理解:理想的评估应该帮助我们对这项新技术形成细致入微的认识。

8. 小结、常见误区、练习

8.1 小结

  1. 指标是构念的代理:先想清楚要测什么(构念),再选操作化的方法,并检查指标和构念是否单调相关;区分内在 / 外在、离线 / 在线评估。
  2. 困惑度:只能在同一个分词、同一个词表下比较——跨分词要用每字符 / 每字节比特数或总 NLL;把罕见词并成 <unk> 会让困惑度”变好”;困惑度低意味着平庸,不等于好;用困惑度检测机器文字在短文字、高温度时几乎无效。
  3. 生成指标:WER、BLEU(裁剪精度 + 简短惩罚)、ROUGE(召回)基于词的重叠,分不出”换了一个合法的词”和”换了一个错的词”;BERTScore 用嵌入做软匹配,会被”意思相近的错词”骗过;不看参考的 LM 流畅度抓得住语法、抓不住意思。COMET 式的学出来的指标直接拟合人的判断,在我们的实验里 AUC 0.922,高于任何单个指标。
  4. 多选题:log 概率之和偏爱短选项,按长度归一化偏爱长选项,哪个更好取决于任务;提示格式会改变分数和排名;要检查”不看内容的捷径”。
  5. 排序:每个指标对应一种用户模型;两个系统的优劣可以随指标反转。词匹配擅长精确命中,嵌入擅长意思相近,混合最好。
  6. 基准与不确定性:多维度成绩单汇总成一个排名时,汇总方式会改变名次;测试集小时区间很宽;配对比较灵敏得多,但只换随机种子的两个模型也能”显著”不同;两两投票的排行榜需要大量票数。

8.2 常见误区

  • “困惑度更低的模型更好”:只有在分词、词表、评估文本完全相同时才成立;而且困惑度不衡量生成质量(§3)。
  • “BLEU 高说明翻译 / 生成得好”:BLEU 和人的判断在机器翻译上相关性较好,在其他生成任务上弱得多;它分不出合法的改写和错误的替换(§4.6)。
  • “BERTScore 理解了语义,所以没有这些问题”:它依赖嵌入的”相似”,而相似 ≠ 正确(§4.6)。
  • “多选题的准确率是一个客观的数”:同一个模型,打分方式不同可以差 5~15 个百分点,换一个提示格式还会变(§5)。
  • “两个模型的置信区间重叠,所以差别不显著”:在同一批样本上配对比较,常常能检测到区间重叠的差别(§7.3)。
  • “配对检验显著,所以 A 的结构比 B 好”:显著只说明在这个测试集上差别不是抽样噪声;训练的随机性要靠多个种子来排除(§7.3)。
  • “排行榜第一就是最好的模型”:排名依赖场景的选择、汇总方式、投票的人在乎什么,还有票数够不够(§7.2、§7.5)。
  • “可以用困惑度判断一段文字是不是 AI 写的”:对短文字、高温度采样、改写过的文字都不可靠(§3.5)。

8.3 练习

练习 1(WER):参考 the cat sat on the mat,输出 the cat sit on mat。算出 S、D、I 和 WER。

参考答案(用 eval_metrics.wer 验证)

把输出改成参考:sit → sat(替换 1 次),在 on 和 mat 之间补上 the(对输出来说是”少了一个词”,记为删除 D = 1)。S = 1、D = 1、I = 0,WER = 2 / 6 = 0.333。注意 WER 的分母是参考的长度,所以输出比参考长很多时 WER 可以超过 1。

练习 2(BLEU 的简短惩罚):参考 the cat sat on the mat,输出 the cat。算出 1~4 阶的裁剪精度和 BP。按本讲的实现(n≥2n \ge 2 加一平滑),句子级 BLEU 是多少?如果不做平滑呢?

参考答案(用 eval_metrics.bleu 验证)

1-gram:2/2;2-gram:1/1;3-gram、4-gram:输出里根本没有,0/0。加一平滑后 2、3、4 阶分别是 2/2、1/1、1/1,几何平均为 1。BP =e1−6/2=e−2=0.135= e^{1 - 6/2} = e^{-2} = 0.135,所以 BLEU = 0.135——精度满分,全靠简短惩罚把分数压下来。不做平滑时,3 阶和 4 阶是 0/0,几何平均没有定义(实现上通常当作 0),BLEU = 0。这说明句子级 BLEU 对平滑方式很敏感,报告时要写清楚(sacreBLEU 等工具把这些细节标准化了)。

练习 3(换算成每字符比特数):一个模型在一段 1000 个词、5500 个字符的文字上的困惑度是 20(按词算)。它的每字符比特数是多少?另一个字符级模型在同一段文字上的每字符困惑度是 1.8,谁更好?

参考答案

词级模型的总 NLL =1000×ln⁡20=2995.7= 1000 \times \ln 20 = 2995.7 nat =2995.7/ln⁡2=4321.9= 2995.7 / \ln 2 = 4321.9 比特,每字符 4321.9/5500=0.7864321.9 / 5500 = 0.786 比特。字符级模型每字符的 NLL 是 ln⁡1.8\ln 1.8 nat =log⁡21.8=0.848= \log_2 1.8 = 0.848 比特。词级模型的 0.786 更低,所以词级模型更好——尽管它的”困惑度”20 看起来比 1.8 糟糕得多。(严格地说,两者都要对同一个字符串定义概率;如果字符级模型还要预测一个结束符、词级模型不预测,就要把这一项也算进去。)

练习 4(每字符比特数为什么和分词无关):设一个语言模型对字符串 ss 定义了概率 p(s)p(s),分词是确定的(每个字符串只有一种切法)。证明:无论按词还是按子词切分,−log⁡2p(s)/∣s∣-\log_2 p(s) / |s| 都不变;而”每 token 困惑度”会变。

参考答案

分词确定时,字符串 ss 和它的 token 序列 (t1,…,tn)(t_1, \dots, t_n) 一一对应,链式法则给出 p(s)=∏ip(ti∣t<i)p(s) = \prod_i p(t_i \mid t_{<i})——这就是模型给这个字符串的概率,和怎样切无关(只要模型本身给出的 p(s)p(s) 不变)。−log⁡2p(s)-\log_2 p(s) 和 ∣s∣|s|(字符数)都与分词无关,所以每字符比特数不变。每 token 困惑度是 exp⁡(−ln⁡p(s)/n)\exp(-\ln p(s) / n),分母 nn 随分词变化:切得越细,nn 越大,同样的总 NLL 摊到更多 token 上,每 token 困惑度越低。§3.2 的字符级模型就是这样”看起来”很好的。

练习 5(手算 nDCG 和 AP):(a)排序列表的分级相关度是 [2, 0, 1],全部相关度也就是这三个。算 nDCG@3。(b)二元相关度列表 [1, 0, 1, 0],算 AP。

参考答案(用 eval_metrics 验证)

(a)DCG =22−1log⁡22+0+21−1log⁡24=3+0.5=3.5= \frac{2^2-1}{\log_2 2} + 0 + \frac{2^1-1}{\log_2 4} = 3 + 0.5 = 3.5;理想排序 [2, 1, 0] 的 DCG =3+1log⁡23=3+0.631=3.631= 3 + \frac{1}{\log_2 3} = 3 + 0.631 = 3.631;nDCG =3.5/3.631=0.964= 3.5 / 3.631 = 0.964。

(b)相关结果在第 1、3 位,那里的精度分别是 1/1 和 2/3,AP =(1+0.667)/2=0.833= (1 + 0.667)/2 = 0.833。

练习 6(Bradley-Terry):三个模型两两比较:0 对 1 是 7 胜 3 负,1 对 2 是 7 胜 3 负,0 对 2 是 8 胜 2 负。拟合 Bradley-Terry 模型,Elo 式分数是多少?模型预测的”0 胜 2”的概率是多少,和观察到的 0.8 一致吗?

参考答案(用 eval_metrics.bradley_terry 验证)

分数是 +131、0、−131(减去平均后)。预测的”0 胜 1”概率 =1/(1+10−131/400)=0.68= 1 / (1 + 10^{-131/400}) = 0.68(观察到 0.7),“0 胜 2” =1/(1+10−262/400)=0.82= 1 / (1 + 10^{-262/400}) = 0.82(观察到 0.8)。三组观察几乎完全符合一个”一维的实力”——这说明这组数据满足传递性。真实的 Arena 数据常常不完全满足:A 在编程题上赢 B、B 在闲聊上赢 C、C 又在某些题上赢 A,一维的分数只是一个近似。

练习 7(动手:给 BERTScore 加 idf):在 02_generation_metrics.py 里,用训练集文档统计每个词的文档频率,给 BERTScore 加上 idf 权重(bertscore(..., idf_hyp=..., idf_ref=...))。预测它对哪几类输出的分数影响最大,再运行验证。

参考答案(作者机器上的实际结果)

idf 让罕见的词权重更大、常见的词(the、.、主语代词)权重更小。名词比限定词罕见,所以”名词换成同类的另一个”会被更重地惩罚,“换一种限定词”会被更轻地惩罚。用训练集 8000 篇文档的文档频率算 idf(w)=log⁡N+1df(w)+1\text{idf}(w) = \log\frac{N+1}{\text{df}(w)+1},单参考下的平均分:

输出类别不加 idf加 idf
换一种限定词(正确)0.9940.995
名词换成同类的另一个(错)0.9960.989
名词换成别类的(错)0.9870.970
打乱词序(错)0.8630.886

加 idf 之后,正确的改写终于排在了”同类错词”前面;“意思对且合语法”的 AUC 从 0.803 升到 0.857。打乱词序的分数反而略升(idf 降低了被打乱位置上那些常见词的权重)。idf 改变的只是权重,嵌入里 plum 和 pear 仍然很近——它缓解了问题,但没有消除问题。

练习 8(思考:困惑度作为构念的代理):用第 3 讲 §6 的结果说明:为什么”在标准测试集上的困惑度”不足以衡量”模型对语言的掌握”?应该怎样设计测试集才能发现那类问题?

参考答案

第 3 讲里,含屏蔽词的流水线训练出的模型和不含的在标准测试集上几乎一样(3.950 vs 3.991),在方言测试集上却差了一大截(7.447 vs 4.283)。标准测试集只代表了一部分语言使用者,“平均困惑度”把方言使用者的损失完全掩盖了。这是 §7.4 说的”子任务之间的差异”和”不相容”:一个构念(“语言能力”)在不同人群上需要不同的操作化。办法是分组评估:按方言、领域、人群、语言把测试集切开,分别报告(这正是 HELM 在”公平性”维度上做的事,第 15 讲会继续讨论);以及构造针对特定能力的诊断集(例如第 2 讲的”窗口外物主代词”)。

练习 9(思考:多少道题才够):§7.3 里,两个模型在 600 道多选题上差 0.2 个百分点,配对比较不显著。粗略估计:如果两个模型真的差 0.2 个百分点、并且只在约 1% 的题目上意见不一致,大约需要多少道题才能检测出这个差别?

参考答案

配对比较的信息只来自”两个模型意见不一致”的题。设不一致的题占比 q=1%q = 1\%,其中 A 对 B 错的比例为 12+δ\frac{1}{2} + \delta。0.2 个百分点的总差别意味着 q⋅2δ=0.002q \cdot 2\delta = 0.002,δ=0.1\delta = 0.1——在不一致的题里 A 赢 60%、B 赢 40%。检验”60% 是否不等于 50%“:比例的标准误约为 0.5/n0.5 / \sqrt{n},要让 0.1 的差别在 5% 的显著性水平上刚好显著,需要 n≈(1.96×0.5/0.1)2≈96n \approx (1.96 \times 0.5 / 0.1)^2 \approx 96 道”不一致”的题;如果还要求 80% 的统计功效(真有差别时 80% 的概率能检测到),需要 n≈((1.96+0.84)×0.5/0.1)2≈196n \approx ((1.96 + 0.84) \times 0.5 / 0.1)^2 \approx 196 道。换算成总题数是 1 万到 2 万道。所以很多基准上零点几个百分点的差别,在几百、几千道题的测试集上根本测不出来——报告”SOTA 提升 0.3%“之前,先算一算统计功效。

8.4 延伸阅读

  • 原课阅读:Gehrmann et al. (2021), The GEM Benchmark;Srivastava et al. (2022), Beyond the Imitation Game(BIG-bench)第 1–2 章;Liang et al. (2022), Holistic Evaluation of Language Models(HELM);Novikova et al. (2017), Why We Need New Evaluation Metrics for NLG
  • 指标:Papineni et al. (2002)(BLEU);Lin (2004)(ROUGE);Zhang et al. (2020)(BERTScore);Rei et al. (2020)(COMET);Reiter (2018), A Structured Review of the Validity of BLEU;Post (2018), A Call for Clarity in Reporting BLEU Scores(sacreBLEU)
  • 排序:Järvelin & Kekäläinen (2002)(nDCG);Chapelle et al. (2009)(ERR);Sanderson et al. (2010), Do User Preferences and Evaluation Measures Line Up?
  • 人工评估与 Arena:Karpinska et al. (2021), The Perils of Using Mechanical Turk to Evaluate Open-Ended Text Generation;Chiang et al. (2024), Chatbot Arena
  • 评估的不确定性与脆弱性:Dror et al. (2018), The Hitchhiker’s Guide to Testing Statistical Significance in NLP;Sclar et al. (2024), Quantifying Language Models’ Sensitivity to Spurious Features in Prompt Design;Diaz & Madaio (2023), Scaling Laws Do Not Scale
  • 复读与检测:Xu et al. (2022), Learning to Break the Loop;Gehrmann et al. (2019)(GLTR);Mitchell et al. (2023)(DetectGPT)
  • 本仓库的相关内容:CS336 第 12 讲(评估);CMU17-630(提示工程课里的提示敏感性实验)

8.5 下一讲预告

前五讲讲的都是”预训练一个语言模型”:积木、结构、数据、改进、评估。第 6 讲进入第二单元”使用与适配”:一个预训练好的模型,怎样让它做我们想要的事?不改权重——上下文学习(在提示里给几个例子);改全部权重——面向任务的微调;只改很少的权重——参数高效微调(Adapter、Prompt Tuning、LoRA)。我们会在花园世界上第一次给模型”布置任务”。

← 返回课程目录