内容概要
本篇文字稿整理自一堂关于评估生成式人工智能(Generative AI)能力的课程。内容首先阐述了评估 AI 能力对于模型使用者和开发者都至关重要。接着,详细探讨了评估方法,包括使用基准测试(Benchmark)和评估度量(Evaluation Metric),如精确匹配(Exact Match)、相似度计算(如 BLEU、ROUGE、BERTScore),以及在没有标准答案时采用的人工评估(如 MOS)和利用大型语言模型(LLM)作为裁判的方法。同时,文章也深入分析了各种评估方法存在的陷阱和偏见,例如过度相信评分可能导致的反效果(古德哈特定律)、评估指标本身的局限性、幻觉(Hallucination)问题、人类评估的主观性和偏见、LLM 评估的偏见等。此外,还讨论了评估时需要考虑的其他因素,如生成速度、成本、鲁棒性(对抗越狱和提示注入攻击)、数据污染以及模型偏见等。最后强调,评估方法需要根据具体应用场景选择,并且要警惕各种潜在问题。
目录
-
引言:为何评估生成式 AI 很重要?
-
如何评估:基准测试与评估指标
-
评估方法 1:精确匹配 (Exact Match)
-
评估方法 2:计算相似度
-
评估的陷阱:过度相信评估分数
-
评估的陷阱:幻觉 (Hallucination) 问题
-
没有标准答案时如何评估?
-
人类评估的挑战
-
用 LLM 作为裁判进行评估
-
LLM 评估的进阶思考与验证器
-
LLM 评估的潜在偏见
-
超越内容:评估的其他维度
-
平均值并非总是最佳指标
-
评估内容:我们到底要考 AI 什么?
-
提示词 (Prompt) 对评估的影响
-
数据污染:模型是否偷看过考题?
-
恶意使用:越狱 (Jailbreak) 与提示注入攻击
-
模型偏见与其他
-
结论
正文
引言:为何评估生成式 AI 很重要?
今天这堂课要讲的是生成式人工智能(Generative AI)的能力评估。这是一节比较轻松的课程,主要是想和大家分享在评估一个生成式 AI 的能力时,有哪些需要注意的事情,以及前人已经踩过的坑。
为什么要评估生成式 AI?这很重要吗?
对于模型使用者来说,一个常见的问题是:“市面上有这么多 AI 可用,如果我想让 AI 帮我完成某个特定任务,比如做论文摘要,哪一个 AI 做得最好呢?”很多人可能只是随便试了几个例子,就主观断定某个 AI 是最好的。这堂课会告诉你如何更系统地评估一个生成式 AI 在特定任务上的能力。
对于模型开发者而言,评估模型同样至关重要。从下一堂课开始,我们将学习如何训练模型,届时你将成为模型开发者。在开发过程中,你会面临很多选择,比如使用不同的训练数据、训练方法,甚至是不同的超参数(下一课会讲)。这些选择都会显著影响结果。开发完成后,你往往会得到多个模型,需要从中挑选出表现最好的模型用于实际部署。因此,学会正确评估模型对开发者来说非常关键。
如何评估:基准测试与评估指标
那么,如何评估一个 AI 的能力呢?我们以文章摘要为例。
直观的想法是:
-
收集大量文章(例如 N 篇)作为模型的输入。
-
将这些文章交给模型,让它为每篇文章生成一个摘要。
-
为每个生成的摘要打一个分数,代表其质量好坏。
-
将所有摘要的分数进行某种形式的汇总(比如平均),得到一个最终数值,代表该模型生成摘要的能力。(稍后会讨论“平均”是否是最佳做法)。
接下来的问题是,如何判断模型生成的摘要好不好?
假设我们有标准答案,即对于每篇文章,都有一个由人写的、高质量的摘要,这被称为“Ground Truth”。有了标准答案,我们可以定义一个评估函数(这里用 $e$ 表示)。这个函数 $e$ 用于比较模型的输出和标准答案,衡量它们之间的相似度或差异,并给出一个分数。然后,将所有文章得到的分数汇总起来(例如求平均),就得到了一个代表模型摘要能力的数值。这种代表模型在特定任务上能力的数值指标,我们称之为评估度量(Evaluation Metric)。
整个准备评估数据、执行评估过程并得到最终分数的过程,称为基准测试(Benchmark)。“Benchmark”这个词有时作动词,指评估过程;有时作名词,指用于评估的数据集(包括输入文章和标准答案摘要)。当我们说“对模型进行基准测试”时,就是在评估模型某方面的能力。
有了基准测试,就可以方便地比较不同模型(比如模型 A 和模型 B)在同一任务上的表现。你需要用相同的输入文章和标准答案来测试这两个模型。模型 A 和 B 会产生不同的输出摘要。分别用评估函数 $e$ 对比各自的输出和标准答案,得到各自的总分(比如 A 得 0.6,B 得 0.5)。分数越高通常代表表现越好,所以在这个例子中,模型 A 的摘要能力优于模型 B。
评估方法 1:精确匹配 (Exact Match)
如何定义评估函数 $e$ 来评判答案呢?
最简单直接的方法是精确匹配(Exact Match)。如果模型的输出与标准答案一字不差,就得 1 分;否则,哪怕只有一个字符不同,也得 0 分。
这种方法显然有很多问题。例如:
-
问:“三角形有几个边?” 模型答:“3”。标准答案:“三”。按 Exact Match 标准,模型算答错。
-
问:“玉山有多高?” 模型答:“玉山高 3952 米”。标准答案:“3952 公尺”。虽然信息正确,但按 Exact Match 标准,模型也算答错。
尽管问题多多,Exact Match 有时还是会被使用,特别是在答案可能性有限的情况下,比如选择题。
假设题目是:“台湾最高的山是哪座?A. 阿里山 B. 玉山 C. 雪山”。正确答案是 B。如果模型输出“B”,就算答对。
然而,即使是选择题,对生成式 AI 使用 Exact Match 仍然可能遇到问题。传统的分类模型只会输出 A、B、C 中的一个,用 Exact Match 没问题。但生成式 AI 是通过文字接龙产生答案,它可以输出任何内容。它可能回答“B 玉山”,或者直接回答“玉山”。按照严格的 Exact Match,这些都算错。
我们可以放宽标准,比如只要答案以 B 开头就算对。但如果模型直接输出“玉山”呢?
一个解决方法是在提示(Prompt)中明确指示模型:“答案只能是一个字母,请只输出一个字母。” 如果模型能完全理解并遵守这个指令,那么 Exact Match 就可以用来评估。
但这又引出了新问题:这种评估方式衡量的是模型执行任务(如地理知识)的能力,还是它理解和遵守指令的能力?很多在选择题基准测试上得分高的模型,可能并非特别擅长该领域的知识,而只是特别擅长遵循指令。因此,用 Exact Match 衡量生成式 AI 的能力充满挑战。
评估方法 2:计算相似度
另一种更常用的方法是计算模型输出与标准答案之间的相似程度。输出与标准答案越接近,得分就越高。
如何定义“相近”?有多种方式。
一种常见方法是看输出和标准答案共享了多少词汇。共享词汇越多,认为它们越接近。
-
在机器翻译任务中,常用的指标是 BLEU 分数。
-
在摘要任务中,常用的指标是 ROUGE 分数。
这些指标本质上都是在计算词汇重叠度(具体计算细节比较复杂,此处略过)。许多研究论文仍在使用这类指标。
但是,仅看词汇重叠度也有局限。例如,翻译“HUMOR”为简体中文。模型输出“诙谐”,而标准答案是“幽默”。两者意思相近但没有共同词汇,难道算完全错误吗?
为了解决这个问题,可以利用语义相似度。我们在之前的课程讲过 Token Embedding 和语境化嵌入(Contextualize Embedding)。语义相近但字面不同的词(如“诙谐”和“幽默”),它们的嵌入向量可能很接近。利用语言模型产生的上下文嵌入,可以更准确地衡量两个句子在语义上的相似度,即使它们没有共享词汇。
一种利用上下文嵌入计算相似度的技术叫做 BERTScore(基于早期的 BERT 语言模型)。它将标准答案和模型输出都输入 BERT 模型,得到它们的上下文嵌入,然后通过一系列计算(比如成对相似度计算和最大相似度匹配)得到最终的相似度分数。这比单纯看词汇重叠更关注语义。
评估的陷阱:过度相信评估分数
我们需要警惕,不要过度相信评估分数。经济学上的古德哈特定律(Goodhart's Law)指出:“当一个指标成为目标时,它就不再是一个好的指标。” 在 AI 评估中也是如此,过度优化某个评估指标可能会得到一个分数很高但在实际应用中表现并不理想的模型。
这里分享一个我们实验室早年(2019 年)关于“换句话说”(Paraphrasing)任务的研究故事。当时,毛弘仁同学研究如何让 AI 把一个句子(如 “This is important”)换成意思相同但表达不同的句子(如“这非常重要”)。
当时的评估方法是:提供一个输入句子和多个人工写的标准“换句话说”版本。模型生成一个输出,然后计算输出与每个标准答案的相似度(常用 BLEU、TER、METEOR 等指标),最后取平均分。METEOR 指标当时已经能考虑同义词,比只看字面相似的 BLEU 和 TER 更进一步。
有一天,毛同学兴奋地告诉我,他发明了一个叫 Parrot(鹦鹉)的方法,不需要任何训练数据,就能在多个基准测试上超越当时最先进的模型。这个方法非常简单:输入什么就输出什么。直接拿输入句子去和标准答案(它们本身就是输入的同义句)计算相似度,居然得到了非常高的分数,甚至在考虑语义相似度的 METEOR 指标上也表现优异。
这显然暴露了当时评估方法的漏洞——没有强制要求“换句话说”的输出必须与输入有所不同。于是我们增加了一条规则:输入和输出至少要有 X% 的差异才算有效。
毛同学接着又做了一个“愚笨的鹦鹉”:将输入句子前 X% 的词换成随机词汇,剩下的保持不变。这个方法在加入差异性要求后,仍然能在一些基准测试上达到先进水平。
这个故事说明,如果你完全相信评估分数,可能会选出一个像“愚笨鹦鹉”一样、指标分数高但实际上完全没有完成任务的模型。这个研究最终发表在了 EMNLP 2019。
评估的陷阱:幻觉 (Hallucination) 问题
过度相信评估分数的另一个例子与模型的幻觉(Hallucination)问题有关。幻觉指的是模型在不知道答案的情况下,仍然编造一个看似合理的答案。
例如,我问 GPT-5 (关闭网络搜索) 推荐几篇关于评估 LLM 的综述论文。它给出了作者、标题,甚至一个链接,但点击链接后发现内容完全不相关。这就是幻觉。
为什么模型倾向于产生幻觉,而不是在不知道时说“我不知道”呢?OpenAI 的一篇论文指出,一个可能的原因是,现有的评估机制并没有给“承认不知道”的模型带来优势。
通常评估时,模型输出与标准答案计算相似度。如果模型回答“我不知道”,或者编造一个错误答案,两者与标准答案的相似度可能都很低,得分都是 0。这样一来,模型没有动力去说“我不知道”。甚至,硬猜可能更有利,因为万一猜对了呢?只会硬猜的模型反而可能在评估中获得更高的平均分。
一个可能的解决方案是在评估时引入倒扣机制:答对得 1 分,答错得负分(比如 -1 分),回答“我不知道”得 0 分。这样,模型在不确定时,回答“我不知道”就比乱猜要好。OpenAI 也在研究类似方法,例如他们提出了 SimpleQA 基准测试,其中答错会受到严厉惩罚,而回答“我不知道”得 0 分,旨在引导模型减少幻觉。
没有标准答案时如何评估?
到目前为止,我们都假设有标准答案。但很多任务,如写小说、写诗,并没有唯一的标准答案。这时该如何评估模型的好坏呢?当你只有模型的输入和输出,或者想比较两个模型(A 和 B)各自的输出哪个更好时,该怎么办?
没有标准答案,就不能计算与标准答案的相似度。这时,终极方法就是请人来评估 (Human Evaluation)。
-
对于单个输出,可以找一群人来阅读/听取输出,并根据主观感受打分(例如 1-5 分),然后计算平均分。
-
对于两个模型的输出,可以找一群人来比较,判断哪个更好,或者两者相当/都差。
人工评估通常被认为是比较可靠的“黄金标准”,尤其是在发表论文时。
人类评估的挑战
然而,人工评估也并非完美,存在诸多问题。
Chatbot Arena 是一个著名的大型语言模型(LLM)能力评估平台。用户可以提问,平台会匿名展示两个不同模型的回答,然后让用户投票选择哪个更好(或平局/都差)。根据大量用户的投票结果,平台会计算出类似棋类比赛的 Elo 评分,并生成排行榜。
Chatbot Arena 团队发现,人类评估者有时更在意模型“怎么说”,而不是“说了什么”。
-
回答更长、使用 Markdown 格式化更漂亮、包含更多表情符号的模型,更容易获得用户的青睐,即使内容本身与另一个模型相同或相似。
-
例如,内容完全相同的两个回答,一个格式普通,另一个分段清晰、加了项目符号,用户很可能会选择后者。
这表明人类评估存在表面偏见。Chatbot Arena 团队尝试通过技术手段移除回答风格的影响,只关注内容本身。他们发现,移除风格影响后,模型排名发生了显著变化。例如,以严谨、有时略显无聊风格著称的 Claude 模型,排名上升了;而一些“mini”版本模型排名则下降了。这说明模型的外在表现会影响人类的主观判断。
另一个例子来自语音合成(Text-to-Speech, TTS)领域。评估 TTS 系统的好坏,通常不是比较输出音频与某个“标准答案”音频的相似度(因为不同人说同一句话声音也不同),而是请人类听众来打分。常用指标是平均主观评分(Mean Opinion Score, MOS),即多人评分(通常 1-5 分)的平均值。
我们实验室姜成翰同学的研究发现,人工评估的结果会受到评估设置的显著影响。例如:
-
评估者的母语背景不同,评分可能不同。
-
给评估者的指示不同(例如,“请评估自然度”、“请评估失真度”、“请做整体评估”),对同一组模型输出的评分和排名可能会完全不同。
这说明人工评估的结果可能不稳定,且受多种因素干扰。
此外,人工评估还有实际操作上的挑战:
-
耗时:组织人员进行评估需要时间。
-
成本:如果使用在线标注平台,需要支付费用。
-
可复现性差:不同时间找不同批次的人评估,结果可能不一致。
用 LLM 作为裁判进行评估
既然人工评估有诸多不便,而 LLM 又号称能取代人类的许多工作,那么能否用 LLM 来代替人类进行评估呢?这种方法被称为“LLM 作为裁判”(LLM-as-a-Judge)。
早在 ChatGPT 刚出现时,我们实验室就探索了这种可能性。例如,在评估摘要系统时,过去需要人类阅读摘要并打分,现在能否直接让一个强大的 LLM(如 GPT-4)阅读摘要,并给出与人类相似的评分?
实验表明,在很多任务上,LLM 的评分结果与人类评分结果具有相当高的一致性。如今,使用 LLM 进行评估已成为 NLP 领域一种被广泛接受的方法,并应用于许多基准测试中。微软等机构也发表了类似的研究(如 G-Eval)。
进一步的研究还探讨了如何让 LLM 的评分更有效。例如,姜成翰同学的研究比较了四种评分提示方式:
-
只输出分数。
-
自由评论。
-
先给分数,再解释原因。
-
先进行分析/推理,给出评分标准和理由,最后再给分数(类似 Chain-of-Thought)。
结果发现,要求 LLM 提供解释(无论是先给分再解释,还是先解释再给分)能使其评分结果与人类评分更接近。特别是先解释再给分的方式(类似推理),通常效果最好。
最近,他还尝试使用能听语音的多模态 LLM 来评估 TTS 系统的输出质量(包括是否符合特定风格指令,如“用生气的语调说”),发现其评估结果在一定程度上也能与人类评估保持一致。
LLM 评估的进阶思考与验证器
使用 LLM 评分时,可以考虑得更精细。LLM 的原始输出不是一个单一的分数(Token),而是一个在所有可能分数上的概率分布。例如,对于 1-5 分的评分,LLM 可能输出 {1分: 0.1, 2分: 0.2, 3分: 0.5, 4分: 0.15, 5分: 0.05}。简单地取概率最高的 3 分可能丢失了信息。
一个更精确的方法是计算期望值(加权平均):$1 \times 0.1 + 2 \times 0.2 + 3 \times 0.5 + 4 \times 0.15 + 5 \times 0.05 = 2.85$ 分。这个加权平均分数可能更能代表 LLM 的综合判断。
更进一步,既然评分如此重要,能否训练一个专门用于评分的 LLM?这类模型被称为验证器(Verifier)或奖励模型(Reward Model)。例如,Prometheus 就是一个专门为评分设计的模型。它的输入包括评分指令、评分标准、待评估的输出,以及可选的参考答案。输出则是分数和评分反馈(解释)。
训练这种验证器时,可以不仅仅是最大化标准答案分数的概率,而是优化使得模型输出的加权平均分数尽可能接近人类给出的标准分数。相关技术可以参考 Reft 和 Track 等论文。
一旦有了强大的通用验证器(Universal Verifier),它甚至可以用来指导其他模型的训练。让待训练模型生成输出,然后用验证器给这个输出打分(作为奖励信号),再通过强化学习(Reinforcement Learning, RL)等方法,让模型学习如何生成能获得更高分数的输出。OpenAI 创始人 Sam Altman 曾提到 GPT-5 的训练就使用了 Universal Verifier,这本质上就是利用奖励模型进行强化学习的概念。这种方法的假设是:评估好坏(批评)比直接生成好的内容(创作)更容易。
LLM 评估的潜在偏见
使用 LLM 作为裁判也并非没有问题,LLM 自身也可能存在偏见。一篇综述性论文探讨了 LLM 评估中的各种偏见:
-
自我偏袒 (Self-enhancement Bias): LLM 倾向于给自己的输出打更高的分数。例如,用 GPT-4 来评估不同模型的输出,它可能会不自觉地偏爱 GPT-4 自己的回答。因此,不建议用模型来评估自己。
-
位置偏见 (Position Bias): 如果同时给出两个模型的答案让 LLM 比较,LLM 可能倾向于选择第一个出现的答案。
-
啰嗦偏见 (Verbosity Bias): LLM 可能偏爱更长、更详细的回答,即使简洁的回答同样有效。
-
格式偏见 (Formatting Bias): 如前所述,LLM 可能像人类一样,偏爱格式更美观的回答。
-
有限认知和推理能力: LLM 可能无法完全理解复杂任务的细微差别,导致评分不准确。
-
对微小变化的敏感性: 提示词的微小改变可能导致评分结果的巨大差异。
-
改进偏见: 如果告诉 LLM 某个答案是经过改进后的版本,即使内容与未改进版完全相同,LLM 也可能给改进版打更高的分数。
-
引用偏见: 如果一个答案引用了来源(即使是假来源或无关来源),LLM 可能倾向于认为这个答案更可靠、质量更高。
因此,在使用 LLM 进行评估时,建议:
-
先进行小规模验证:抽取一部分数据,同时进行人工评估和 LLM 评估,比较两者的一致性。如果一致性高,再大规模使用 LLM 评估。
-
使用多个 LLM 进行评估,并综合结果。
-
设计清晰、无偏见的提示词。
超越内容:评估的其他维度
评估生成式 AI 不仅仅是看输出内容的质量,还需要考虑其他实际应用中的重要因素:
-
速度 (Latency/Throughput):
-
首个 Token 延迟 (Time to First Token, TTFT): 从输入完成到生成第一个 Token 需要多长时间。这个时间过长会给用户带来卡顿感。
-
生成速率 (Tokens per Second): 开始生成后,平均每秒能生成多少个 Token。这影响了生成长文本的总时间。
-
-
成本 (Cost): 使用商业模型的 API 是需要付费的,通常按输入和输出的 Token 数量计费。需要权衡模型性能提升带来的价值与增加的成本。
-
计算资源: 如果是自部署模型,需要考虑模型大小、推理所需的硬件(GPU 内存、算力)等。
-
思考的代价 (Cost of Thought): 一些模型通过复杂的推理过程(如 Chain-of-Thought)来提高准确率,但这会增加生成时间和 Token 消耗(成本)。需要判断这种代价是否值得。
在实际系统选型时,需要综合考虑这些因素。
平均值并非总是最佳指标
通常,我们计算评估指标时会将每个样本的分数取平均值。但这不一定是最好的方法,尤其是在某些应用场景下。
以语音合成为例,假设有两个系统:
-
系统 A: 99% 的情况下合成效果完美(得 5 分),但有 1% 的概率会“失控”(例如,输入“再见”,它输出“再见,下周继续锁定本频道”),失控时得分极低(比如 0 分)。
-
系统 B: 合成效果始终良好但有轻微失真(稳定得 4 分),从不失控。
如果计算平均分,系统 A 可能是 $0.99 \times 5 + 0.01 \times 0 = 4.95$ 分,系统 B 是 4 分。看起来系统 A 更好。
但对于某些应用(如地铁报站),稳定性远比音质完美更重要。用户宁愿接受音质稍差但从不出错的系统 B,而不是偶尔会报出奇怪内容的系统 A。
这就像木桶理论:木桶能装多少水取决于最短的那块木板,而不是木板的平均长度。在某些对可靠性要求极高的场景中,我们更关心模型的“下限”(最差表现),而不是“平均表现”。因此,评估指标的计算方式(是取平均值、最小值、还是某个分位数?)应根据具体应用需求来定。
评估内容:我们到底要考 AI 什么?
评估 AI 的哪些能力取决于你的具体需求。
-
单一任务: 如果你只需要模型做特定任务(如中译英),就专注于评估该任务的表现。
-
特定领域: 如果你关心模型在某个专业领域(如金融、医疗)的能力,就需要准备该领域的测试数据进行评估。
-
通用能力: 对于像 ChatGPT、Gemini、Claude 这样的通用大模型,开发者会宣称它们在广泛任务上都具备强大的能力。评估时就需要涵盖多种不同类型的任务,如:
-
编程能力 (Coding): 如 SWE-Bench, HumanEval。
-
数学能力 (Math): 如 MATH, GSM8K。
-
推理与知识 (Reasoning & Knowledge): 如 MMLU, GPQA (高难度专家级问题)。
-
多语言能力 (Multilingual): 评估跨语言理解和生成。
-
视觉能力 (Vision): 对于多模态模型,评估图像理解、图文推理等,如 MMMU。
-
工具使用/代理能力 (Tool Use / Agentic Capabilities): 如 ToolBench, WebArena (评估操作电脑), FinAgentEval (金融领域)。
-
事实性/抗幻觉能力 (Factuality / Hallucination): 评估模型产生虚假信息的倾向。
-
遵循指令能力 (Instruction Following): 评估模型理解和执行复杂指令的能力。
-
生产力任务 (Productivity Tasks): 如 OpenAI 的 GDP Eval,评估模型在现实世界工作任务(如制作时间表)中的表现,与行业专家对比。
-
特定领域应用: 如医疗健康建议 (MedQA)。
-
其他: 如常识推理、文本摘要、翻译、创意写作等。
-
最近甚至还有一些“奇葩”的测试,比如让 LLM 通过文字描述下国际象棋 (Chess),或者评估模型是否能根据情境(风险高低)调整决策行为(Risk-Aware Decision Making)。
提示词 (Prompt) 对评估的影响
在评估 LLM 时,你使用的提示词(Prompt)会对结果产生巨大影响。
-
大海捞针测试 (Needle in a Haystack): 这个测试用于评估模型处理长文本并从中提取信息的能力。它将一个关键信息(“针”)插入一篇很长的无关文本(“草堆”)中,然后提问相关问题。实验发现,模型对文章开头和结尾的信息记忆较好,中间部分容易遗忘。
-
早期有人测试 Claude 2.1,发现在长文本下其表现不佳。但 Claude 团队回应称,这是因为提示词不当。如果在提问时额外加一句“请找出最相关的句子”,Claude 的表现就会大幅提升。他们解释说,模型可能认为那根“针”与上下文无关而忽略了它,但加上额外指令后,模型就能找回信息。这说明提示词设计至关重要。
-
-
语音评估任务: 我们实验室测试 GPT-4o 比较两段语音哪个发音更准确时发现:
-
直接要求“比较”哪个更准确,模型出于伦理考虑(避免评价他人)大多拒绝回答,准确率极低 (2.78%)。
-
改为询问哪个“英语说得更流利”,并声明无伦理顾虑仅为研究,准确率提升到 61%。
-
进一步改为“听两段音频,哪段更流畅”,准确率达到 74%。
这表明模型对任务的措辞非常敏感,尤其是涉及潜在敏感话题时。
-
-
系统性研究: 有论文系统研究了提示词微小变动(如大小写、空格、换行符)对模型在标准 NLP 任务上表现的影响,发现即使是极小的改动也可能导致准确率发生巨大变化。
建议: 在比较模型能力时,不要只用单一提示词。应尝试多种不同的、表达相同意图的提示词,并将结果平均,以获得更鲁棒的评估。
数据污染:模型是否偷看过考题?
评估模型时,一个严重的问题是数据污染(Data Contamination),即用于评估的基准测试数据可能已经被模型在训练阶段“偷看”过。
-
GSM8K 实验: 有研究发现,如果将 GSM8K(数学应用题基准)中的人名或数字替换掉,许多模型的准确率会下降。这表明模型可能在训练中接触过原始题目并记住了答案模式。强模型(如 GPT-4o, Claude Opus)的下降幅度通常小于弱模型。
-
文字接龙实验: 更有力的证据是,当给某些模型(如 Qwen 1.8B)提供 GSM8K 题目的前半部分时,它们会通过文字接龙准确地补全题目的后半部分,甚至是题目中的特定数字。这强烈暗示模型在训练时见过这些题目。
-
ElasticBench 研究: 该研究通过大规模比对已知的训练数据集和常见的基准测试数据集,发现许多基准测试(如 MATH 测试集、SWE-Bench 的部分数据)的题目确实存在于公开的训练数据中。研究还证实,模型在被泄露的题目上表现通常更好。
数据污染使得基准测试分数可能无法真实反映模型的泛化能力。开发者和研究者需要更加关注这个问题,并开发新的、未被污染的评估集,或者采用能检测和缓解污染影响的评估方法。
恶意使用:越狱 (Jailbreak) 与提示注入攻击
在评估模型时,还需要考虑其对抗恶意使用的鲁棒性。恶意使用主要有两种形式:
-
越狱 (Jailbreak): 诱导模型生成其设计者明确禁止的内容(如违法、有害信息)。这通常是因为模型内部负责内容生成的部分和负责安全检测/拒绝回答的部分是相对独立的。攻击者试图绕过安全检测机制,让模型说出它“知道”但不该说的内容。
-
方法:
-
使用不熟悉的语言/编码: 早期有用特殊编码或冷门语言提问的方法,但现在多数模型已能识别。
-
文本扰动: Claude 团队发现,通过对问题进行微小的文本修改(如字母换位、大小写混用、添加噪声),并进行大量尝试(Best of N),有相当概率可以成功越狱当前最先进的模型。
-
多轮对话诱导: 通过一系列看似无害的问题,将模型引入特定情境,最后提出有害请求(例如,在讨论历史背景后询问如何制作武器)。
-
角色扮演/说服: 让模型扮演某个角色,或者提供一个看似合理的理由(如“仅用于研究”、“为了防止伤害需要了解如何伤害”),来说服模型执行有害指令。后一种方法对 GPT-5 仍有一定效果。研究表明,逻辑说服、权威背书、伪装研究目的等比直接威胁更有效。
-
-
-
提示注入攻击 (Prompt Injection Attack): 攻击者通过在输入中嵌入恶意指令,劫持模型的原始任务,使其执行非预期的操作。这不一定是生成有害内容,而是让模型“玩忽职守”。
-
例子:
-
AI 助教攻击: 在作业中隐藏指令,让 AI 助教给出错误的高分(这是本课程作业 4 的主题,但学生扮演防守方)。
-
AI 主播攻击: 在直播评论中输入指令,让 AI 主播做出奇怪行为(如学猫叫)。
-
论文审稿攻击: 在论文中(甚至用白色小字体隐藏)加入指令,要求 AI 审稿人给出好评。已有现实案例发生。
-
-
间接提示注入 (Indirect Prompt Injection): 攻击指令并非由用户直接输入,而是隐藏在模型处理的外部数据中(如网页、文件)。当 AI 代理(Agent)与环境交互并读取这些数据时,可能被诱导执行恶意操作(如泄露机密文件)。
-
评估模型抵御这些攻击的能力非常重要,已有专门的基准测试(如评估 Agent Attack 防御能力的研究)来衡量这方面的鲁棒性。
模型偏见与其他
除了上述问题,评估时还应关注模型的偏见(Bias)。这指的是模型对不同群体(基于性别、种族、年龄等)可能持有不公平的刻板印象或产生差异化对待。例如,对于同样的情境描述,仅改变主语的性别,模型的反应或建议可能截然不同。评估和减轻模型偏见是一个重要的研究方向。(详细内容请参考去年的课程录像)。
结论
总结今天的内容:
-
评估 AI 能力至关重要,方法包括基准测试、相似度计算、人工评估和 LLM 评估。
-
需要警惕评估陷阱:过度相信分数、指标局限性、幻觉、人类和 LLM 的偏见。
-
评估不仅要看内容质量,还要考虑速度、成本等实际因素。
-
平均分不一定是最佳汇总方式,有时需关注最差表现。
-
评估内容取决于需求,通用模型需进行广泛测试。
-
提示词设计对评估结果影响巨大。
-
数据污染是严重问题,需加以注意。
-
模型的鲁棒性(对抗恶意攻击)和偏见也是重要的评估维度。
评估生成式 AI 是一个复杂且持续发展的领域,需要我们保持批判性思维,结合具体应用场景,选择合适的评估方法,并清醒认识其局限性。
