想象一所顶尖中学的招生季。教务处不会只凭一张数学卷子就录取学生,而是要看语文、英语、物理等各科成绩,还要翻一翻品德记录、做一次心理测评,甚至安排“突击考官”专门来“找茬”,看看考生在压力下会不会失态、会不会说谎。对大型语言模型(AI 大模型)来说,真实世界就是这所严格的名校:MMLU 是横跨 57 个学科的通识考卷,MATH 是竞赛级别的数学加试,HumanEval 是现场写代码的上机考试,而红队测试则是那场专门设计陷阱的心理与品德评估。单科成绩再亮眼,安全考察不过关,模型就不能“入学”——也就是不能部署到真实业务中。这篇文章,我们就用一张“综合素质成绩单”的思路,把能力与安全联合评测的流程、指标和权重策略一次讲透。
掌握能力与安全的联合评测方法,是 AI 从业者在模型上线前守住最后一道关口的核心技能,它决定你能否对“这个模型到底能不能用”给出有说服力的答案。
目录
可视化演示
展示MMLU多任务知识评测、HumanEval代码生成pass@k及安全风险维度分类三种核心评测基准。
本节配有交互动效(进入视口后自动加载,约 3KB)。
MMLU多任务知识评测 STEM/人文/社科等多学科多选题准确率评测 57个子学科覆盖广泛知识理解能力 Acc=正确题数/总题数 MMLU衡量模型知识广度
评测整体框架:一张综合素质成绩单
招生办的墙上永远贴着一张“综合素质成绩单”:左边是各科分数,右边是品行评价,任何一栏缺失,评审老师都会皱眉头。对 AI 模型的评测也是这样——过去大家只盯着“答题正确率”,现在越来越多人意识到,一个能写出漂亮代码的模型,也可能被人三言两语“骗”出有害答案。所以评测的第一步不是急着出题,而是先把成绩单的栏目定义清楚:测什么、用什么测、怎么测。
这张“成绩单”在专业术语里叫作评测框架(Evaluation Framework)。它回答三个问题:评测目标是什么——能力还是安全;用什么基准测试——MMLU、MATH、HumanEval 还是安全红队;评测流水线怎么组织——能否把能力与安全放在同一条管道里高效运行。能力评测回答“模型聪明到什么程度”,安全评测回答“模型能不能被放心使用”,两者缺一不可。
在实际操作中,评测流水线通常包含四个环节:定义任务目标、选择匹配的基准测试、在受控环境中批量跑题、汇总并加权生成总报告。最常见的做法是把三个能力基准与安全红队测试封装成同一套模型接口,依次注入提示,最后输出一份“能力 + 安全”的联合报告,避免各测各的、互不背书。
这张成绩单上哪一科最重要并没有标准答案,但栏目必须齐全:缺了安全评测,就像招生只看分数不看品德,迟早会出乱子。接下来我们逐一认识三个能力考场和一个安全考场。
- 加权求和的含义每一科的得分 s_i 都要乘上它对应的权重 w_i,再累加起来,得到综合成绩 S,这与招生办算总分的方式一模一样。
- 权重非负约束权重必须是正数或零,不允许出现“负权重”这种反常识设定,保证每一科都只做加法贡献。
- 归一化约束所有权重之和等于 1,这样总分不会因人为主观放大而虚高,也方便不同模型之间横向比较。
MMLU 知识理解:横跨 57 个学科的文理综合卷
入学考试的第一卷是“文理综合卷”,语数外、史地生、理化政全在一张卷子上。MMLU 就是 AI 界的这张综合卷——它是 Massive Multitask Language Understanding(大规模多任务语言理解)的缩写,覆盖 57 个学科的知识问答,堪称“AI 版文理综”。
这张卷子不考现场推理,考的是知识面。题目以四选一的单选题形式呈现,涵盖人文、社科、STEM 与各类专业领域。模型就像一个没带任何参考资料的考生,拿到提示后必须凭预训练阶段“记住”的知识直接作答——这就是零样本(zero-shot)评估:不给示例、不给微调,考的就是模型的“底子”。
因为覆盖面极广,MMLU 是衡量模型通识能力的标尺。一个模型在 MMLU 上刷到高分,说明它“博闻强识”,但这只证明知识储备丰富,不等于会做数学竞赛题,更不等于写代码靠谱。就像综合卷满分的考生,奥数可能不及格,机考也可能手忙脚乱。
综合卷拿了高分,招生办会在成绩单的“知识面”一栏画上一颗星,但也只在这一栏画星——接下来还有一场数学加试等着呢。
- 正确性指示函数 δ预测答案 ŷ_i 与标准答案 y_i 相同时记为 1,否则记为 0,相当于给每道题打个对钩或叉。
- 求和统计正确题数把所有题目上的 0/1 判断加在一起,得到做对的总题数。
- 除以总题数求比例用正确题数除以总题数 N,得到 0 到 1 之间的正确率,这就是 MMLU 成绩。
MATH 数学推理:一步错、步步错的奥数加试
综合卷之外,还有一场数学奥赛级别的加试。MATH 基准测试收集了美国高中数学竞赛(如 AMC、AIME)级别的题目,包含约 5000 道题,每道题都需要分步推导、符号演算和严谨的逻辑推理。这就像招生办单独拉一场奥数,专门考察考生“剥洋葱”式的思考能力。
为什么要单独考数学?因为数学推理最能暴露模型的“单步可靠性”。解答一道数学题往往要经历提取条件、设定方程、化简计算、验证答案等多个步骤,而语言模型的每一次生成都带有随机的出错概率。第一步错,后面全盘演算都白费——这是模型的“阿喀琉斯之踵”。英语或常识题可以“蒙”对,数学题却几乎无法靠运气蒙对整条推理链。
评测时,MATH 会为每道题提供标准答案与解答过程。研究者不仅看最终答案,还会观察模型是否生成合理的中间推理链。题库按主题与难度分层,涵盖代数、几何、数论、概率等子领域,让分数能细致反映模型在不同数学分支上的强弱。
数学加试的分数揭示了“单科优秀不等于全科优秀”的真相:一个 MMLU 高分模型很可能在 MATH 上折戟沉沙。正因为如此,招生办还要为它安排第三场考试——上机编程。
- 单步正确概率 p_j设一道题需要 m 个推理步骤,第 j 步做对的概率记为 p_j,它是一个小于 1 的正数。
- 步骤正确率连乘全部步骤都正确,整题才算正确,因此把每步概率相乘,这就是“联锁”关系。
- 错误累积效应每一步的概率都小于 1,所以步骤越多,整体正确率下降得越快,这就是数学推理难的本质。
HumanEval 代码生成:当场写函数、机器自动判卷的机考
第三场考试是上机编程。HumanEval 是 OpenAI 发布的代码生成评测集,包含 164 道手写的函数级编程题。每道题给出函数签名、文档字符串(docstring)与若干单元测试用例,要求模型补全函数体。这就像招生办的电脑房里坐着一排考生,面对一套“补全代码并当场跑测试”的机考系统。
代码评测的特别之处在于判卷方式:机器自动运行单元测试,不靠人眼评估。模型生成代码后,评测系统把代码塞进测试用例里跑一遍,全部通过才算答对。由于大模型生成代码有随机性,同一个提示词可能产出不同代码,因此需要 pass@k 指标来衡量:让模型一次生成 k 个候选答案,只要其中有任意一个通过单元测试,这道题就算做对。
pass@k 的数学定义来自组合计数。设模型生成了 n 个候选样本,其中有 c 个能通过测试,那么对任意 k,全部 k 个候选都不通过测试的概率,等于从 n−c 个失败样本中选出 k 个的组合数,除以从 n 个样本中选出 k 个的组合数。用 1 减去这个比例,就是至少有一个候选通过的 pass@k。
机考分数漂亮,说明模型动手能力强。但招生办的考查还远没结束——真正让录取委员会头疼的,是那场有些“不近人情”的心理与品德评估。
- 从失败样本中选 k 个的组合数n−c 个失败候选中任选 k 个的全部选法,构成“全失败”的样本空间。
- 全失败概率的计算该组合数除以从全部 n 个候选中选 k 个的组合数,得到 k 个候选全部没通过的概率。
- 互补事件求通过率至少一个候选能通过,是全失败事件的补事件,概率用 1 相减得到。
安全红队测试:专门设局“找茬”的坏考官
前三场考试都在回答“模型会不会做题”,而红队测试回答的是一个更尖锐的问题:“模型会不会作恶?”红队(Red Team)一词借自军事演习,指专门扮演假想敌的团队。在 AI 评测中,红队成员像一群“坏考官”,想方设法用越狱提示、恶意指令、隐私探测等手段,诱导模型输出有害内容。
想象招生办请来几位心理学专家,专门扮演“激怒型考官”:他们故意挑衅、设套、诱导,观察考生在压力下是否会失态、会不会泄露不该说的话。红队测试的本质就是这种主动对抗——不是检查模型“有没有安装过滤器”,而是主动发起攻击,看模型能不能顶住压力守住防线。
红队测试产出的核心指标是攻击成功率(Attack Success Rate, ASR):统计攻击次数中模型“失守”的比例。评测维度包括有害内容生成(暴力、歧视等)、越狱行为(绕过安全对齐机制)、隐私信息泄露、角色误导等。ASR 越低,说明模型的防线越稳固,越值得信赖。
心理评估不过关的“天才考生”,招生办会毫不犹豫地把档案放进待定区。能力与安全两条线,至此已经在成绩单上聚齐——最后一步,就是招生委员会开会商量权重、划定录取线。
- 失守次数 N_success在全部对抗提示中,模型输出有害内容或绕开拒绝的累计次数,是攻击方的“战果”。
- 攻击成功率的定义失守次数除以攻击总次数,取值在 0 到 1 之间,数值越高越危险。
- 安全得分的换算联合报告中常以 1 减去 ASR 作为安全维度得分,让它与能力分同向——都是越高越好。
联合评测策略:录取委员会怎么定权重、划红线
招生委员会的会议室里,各科老师、心理专家和校长围坐一圈。数学老师希望数学占 50% 权重,心理专家则坚持品行评估必须有一票否决权。吵到最后,大家达成共识:综合成绩由各科加权求和,但品行分不达标,直接淘汰。联合评测策略的制定,就是这场会议。
把能力基准与安全评测联合运行,不是简单地“先跑能力、再跑安全、最后贴个报告”,而是设计一条共享的评测流水线:模型服务统一封装,能力测试与安全测试交替注入提示,结果汇总到同一张联合评分表。这样做既节省评测成本,又能避免“能力与安全各自为政、互不背书”的尴尬。
权重分配是联合评测中最容易起争议的环节。常用的策略有三种:等权策略(能力与安全各占一半)、安全优先策略(提高安全权重,甚至设置安全阈值一票否决)、场景定制策略(低风险场景重能力,高风险场景重安全)。最终总分通过“能力加权得分 × 能力权重 + 安全得分 × 安全权重”得到,再与部署阈值对比,决定模型能否上线。
会议结束,录取名单贴上墙:能力与安全两张表,权重清清楚楚,坏分子被一票否决挡在门外。这就是可信大模型评测的全貌——用一场“综合素质招生考试”,守住 AI 进入真实世界前的最后一道门。
- 能力综合分合并将三个能力基准的得分按各自权重合并成一个能力分 C_avg,相当于把 MMLU、MATH、HumanEval 三科成绩合成“能力总分”。
- 能力与安全的加权组合把能力分与安全得分(1−ASR)再用权重合并,得到联合总分,这是录取依据。
- 一票否决条件当安全得分低于阈值 θ 时,无论总分多高,都判定为不通过,守住安全底线。
AI 应用场景
大模型发布前的“入学体检”
阶段:模型发布与部署评估
解决的问题:模型上线前,单看能力分无法发现越狱与有害内容风险。采用能力与安全联合评测流水线,把 MMLU、MATH、HumanEval 与红队测试一次跑完,生成“能力 + 安全”双维报告,帮助团队判断是否开放 API。
具体案例:某大模型公司发布开源模型前,用联合评测流水线在 3 天内跑完 2000 条测试提示,发现模型在越狱样本上 ASR 高达 18%,于是追加一轮安全对齐训练,把 ASR 压到 5% 后才正式开放下载。这就像招生办发现状元品行测评不及格,先送去“改造”再发录取通知。
金融客服机器人的定制化评测
阶段:垂直场景适配评测
解决的问题:金融场景风险容忍度低,错误回答与诱导输出都会带来合规风险。需要把通用基准替换为金融领域样本,并采用“安全优先”权重策略。
具体案例:某银行智能客服部署前,评测团队用 200 道金融合规问题加上 100 个对抗提示做联合评测,把安全权重设为 0.6 并设置“安全分低于 0.85 一票否决”,最终模型通过阈值后才接入线上渠道。低风险场景看能力,高风险场景看安全,正是权重分配策略的实战体现。
上线后的持续红队监控
阶段:上线后持续监控
解决的问题:模型部署后仍会被真实用户发现新漏洞,一次评测远远不够。需要周期性红队回归测试,持续更新对抗样本库,防止攻击成功率悄悄回升。
具体案例:某 AI 助手产品每周自动运行红队回归测试,新出现的越狱模板被收集后立即加入题库;当 ASR 比基线回升超过 2% 时触发告警并回滚到安全版本。就像学校不只入学考一次品行,而是整个学期都在观察学生行为,动态的联合评测才是常态。
Python 演示
"""可信大模型能力与安全联合评测模拟"""import random class JointEvaluator: """模拟联合评测流水线: 能力基准 + 安全红队测试""" def __init__(self, model_acc: float, safety_level: float): self.model_acc = model_acc # 模型平均正确率 (0-1) self.safety_level = safety_level # 模型安全抵抗水平 (0-1) self.results = {} # 评测报告 self.gc_count = 0 # 评测运行次数 def eval_mmlu(self, n: int = 100) -> float: """模拟 MMLU: 四选一通识知识测试""" correct = sum(1 for _ in range(n) if random.random() < self.model_acc) return correct / n def eval_math(self, n: int = 50) -> float: """模拟 MATH: 每题需要 5 步推理, 任一步出错即失败""" correct = 0 for _ in range(n): step_ok = True for _ in range(5): if random.random() > self.model_acc * 0.9: step_ok = False break if step_ok: correct += 1 return correct / n def eval_human_eval(self, n: int = 20, k: int = 3) -> float: """模拟 HumanEval: 生成 k 个候选中任一通过单元测试即算对""" passed = 0 for _ in range(n): if any(random.random() < self.model_acc * 0.8 for _ in range(k)): passed += 1 return passed / n def eval_safety(self, attacks: int = 30) -> float: """模拟红队测试: 返回安全得分 (1 - 攻击成功率)""" defended = 0 for _ in range(attacks): if random.random() < self.safety_level: defended += 1 return defended / attacks def run(self, weights: dict) -> dict: """联合运行全部评测, 按权重汇总总分""" self.gc_count += 1 mmlu = self.eval_mmlu() math_score = self.eval_math() code = self.eval_human_eval() safe = self.eval_safety() cap = (weights["mmlu"] * mmlu + weights["math"] * math_score + weights["code"] * code) total = weights["cap"] * cap + weights["safety"] * safe self.results = { "MMLU": mmlu, "MATH": math_score, "HumanEval": code, "Safety": safe, "Total": total, } return self.results if __name__ == "__main__": random.seed(42) evaluator = JointEvaluator(model_acc=0.75, safety_level=0.92) report = evaluator.run({ "mmlu": 0.4, "math": 0.3, "code": 0.3, "cap": 0.7, "safety": 0.3, }) for name, score in report.items(): print(f"{name:10s}: {score:.1%}")
class JointEvaluator:定义一个“评测中心”类,把四个考场(三个能力基准 + 一个安全红队)封装在一起,相当于招生办的统一考试系统。def eval_math(self, n: int = 50) -> float:模拟 MATH 的多步推理:5 步中任一步出错整题失败,直观体现“一步错、步步错”的错误累积。def eval_human_eval(self, n: int = 20, k: int = 3) -> float:模拟 pass@k 规则:一次生成 k 个候选,只要有 1 个通过就算过,体现“机考自动判卷”的宽松口径。def eval_safety(self, attacks: int = 30) -> float:模拟红队攻击:返回安全得分,等价于 1 减去攻击成功率 ASR,是联合报告中的安全栏。total = weights["cap"] * cap + weights["safety"] * safe权重组合:能力分和安全分按权重相加得到最终总分,对应联合评测的加权求和策略。random.seed(42)固定随机种子,让评测结果可复现。真实评测中同样要求可复现性,否则报告无法被审计。report = evaluator.run({...})一次调用跑完整条联合流水线,输出完整成绩单,这与生产环境的“一键评测”思路一致。
常见误区
误区MMLU 考了 85 分,MATH 也不错,HumanEval 也还行,能力这么强的模型,肯定能放心上线了。分数高就是好模型,这不是常识吗?
正解能力分数只回答“会不会做题”,回答不了“会不会作恶”。一个在能力基准上拿高分的模型,依然可能被越狱提示诱导输出有害内容。可信大模型评测必须把安全评测放进来:就像录取状元之前也要查品行记录,能力再强,安全失守也要一票否决。联合评测的意义正在于把“聪明”和“可信”分开打分。
为何常见:早期 LLM 评测生态以能力基准为主,长期形成的“分数决定一切”思维惯性让大家忽略了安全维度。
误区我们把模型生成的每一条回复都过一遍敏感词过滤器和有害内容检测接口,这不就是做安全评测了吗?过滤干净就安全了。
正解敏感词过滤是被动拦截,红队测试是主动对抗。红队会构造你想象不到的越狱模板、多轮诱导、角色扮演攻击,专门绕过你的防线。安全评测衡量的是模型在强对抗压力下的表现,而不是过滤器的覆盖率。就像考品行不能只看考生有没有戴校徽,而要故意设局看他会不会撒谎。
为何常见:把“安全”简单理解成“内容审核”,混淆了防御机制与评测手段的区别。
误区能力与安全都很重要,权重各设 0.5 总没有争议吧?折中一下,两边都照顾到。
正解权重取决于部署场景的风险容忍度。金融、医疗等高风险场景中,一次安全事故的代价远大于能力小幅下降;而娱乐闲聊类产品可以更侧重能力。安全优先策略甚至会设置一票否决阈值:安全分不过线,总分再高也白搭。五五开只是一种策略,不是默认的正确策略,盲目折中等于放弃对风险的精细管理。
为何常见:直觉上的“公平”加上不想承担决策责任,导致直接把权重取均值,忽略了业务约束。
误区这个模型 pass@100 都到 0.95 了,写代码能力简直天下无敌,赶紧拿来当主力开发工具。
正解pass@k 的 k 越大,分数越容易“虚高”:只要 100 个候选中蒙对 1 个就算过。真实部署中通常只用一次生成结果(接近 pass@1),所以报告应同时给出 pass@1 与多个 k 值,避免 K 值幻觉。就像抢答器:给你 100 次抢答机会命中率高,说明运气好,不代表临场一次就能答对。
为何常见:只看最好看的那个指标,忽略了 k 值对分数的影响,导致横向比较失真。
误区发布前红队测试 ASR 只有 3%,联合评分也过了阈值,以后应该不会再出问题了吧?安全测试做完就完事了。
正解攻击手段日新月异,新的越狱模板层出不穷。可信评测应该形成“发布前联合评测 + 上线后持续红队监控”的闭环:持续收集新对抗样本、周期性回归测试、ASR 回升触发告警。就像学校不只入学考一次品行,而是整个学期都在观察学生行为,攻击与防御是一场持续的军备竞赛。
为何常见:把评测当成一次性交付物,忽略了对抗环境的动态性和攻击者的持续进化。
面试题
Q1. MMLU 基准主要用于评测模型的哪类能力?
- A.多任务通识知识理解← 正确答案
- B.竞赛级数学逻辑推理
- C.代码生成与单元测试
- D.对抗攻击的防御能力
答案:A。MMLU 是覆盖 57 个学科的四选一知识问答基准,衡量通识知识理解能力。B 是 MATH 的考查目标,C 是 HumanEval 的考查目标,D 属于安全红队测试的范畴,均与 MMLU 的定位不符。
Q2. MATH 基准的题目难度大致属于哪个层级?
- A.小学数学口算基础题
- B.高中数学竞赛级别题← 正确答案
- C.大学抽象代数证明题
- D.工程数值计算应用题
答案:B。MATH 基准采集自 AMC、AIME 等美国高中数学竞赛,属于竞赛级数学题,需要多步推理与符号演算。A 过于简单,C 超出了基准的题目来源范围,D 属于工程应用场景而非竞赛数学。
Q3. HumanEval 评测中 pass@k 的"k"表示什么?
- A.模型生成的候选答案数量← 正确答案
- B.单元测试用例的执行次数
- C.训练数据集的迭代轮数
- D.模型网络层的参数宽度
答案:A。pass@k 指模型一次生成 k 个候选代码,只要任意一个通过单元测试即算答对,k 是候选数量。B、C、D 分别描述测试执行、训练过程与模型结构,与 pass@k 的定义无关。
Q4. 红队测试的核心目标是什么?
- A.提升模型推理的响应速度
- B.主动暴露模型的安全漏洞← 正确答案
- C.压缩模型部署的资源占用
- D.扩大模型训练的数据规模
答案:B。红队测试借自军事演习,通过构造越狱提示、恶意指令等对抗样本主动攻击模型,目的是暴露安全漏洞并量化 ASR。A、C、D 分别属于性能优化、模型压缩与数据工程,不是红队的职责。
Q5. MATH 评测中模型成绩低于 MMLU,通常因为哪些原因?
- A.多步推理每一步都有出错概率← 正确答案
- B.单步错误会向后续步骤传导← 正确答案
- C.符号与逻辑要求高度精确← 正确答案
- D.数学题目主要靠死记硬背
答案:ABC。A 和 B 对应分步推理的错误累积公式 P=∏p_j,C 反映数学符号运算的精确性要求,三者共同导致 MATH 更难。D 恰恰相反,MATH 是竞赛级推理题,靠记忆无法得分。
Q6. 联合评测中“安全一票否决”的含义是什么?
- A.安全分不达标则拒绝部署上线← 正确答案
- B.安全分数仅作展示不参与决策
- C.能力高分可以抵消安全风险
- D.安全评测只需在发布前执行
答案:A。安全一票否决指当安全得分低于阈值 θ 时,无论能力总分多高都判定为不通过,本质是对安全底线的绝对保护。B 削弱了安全评测的地位,C 允许能力与安全互换,D 忽略了持续监控,均不符合设计意图。
Q7. 某模型在 HumanEval 评测中生成了 5 个候选答案,其中 3 个能通过单元测试,则 pass@2 的估计值是多少?
- A.0.90 由组合计数公式得出← 正确答案
- B.0.84 按二项展开近似
- C.0.60 用通过率直接代入
- D.0.50 取候选数的一半
答案:A。pass@2 = 1 − C(5−3,2)/C(5,2) = 1 − C(2,2)/C(5,2) = 1 − 1/10 = 0.90。B 的 0.84 来自独立性假设 1−(2/5)²,是近似值;C 直接用 3/5;D 无依据。组合定义下的无偏估计才是正确口径。
Q8. 联合评测的权重分配通常需要考虑哪些因素?
- A.部署场景的风险容忍程度← 正确答案
- B.基准样本量的置信程度← 正确答案
- C.目标用户的潜在对抗意图← 正确答案
- D.模型发布的精确时间点
答案:ABC。A 决定安全权重的高低,高风险场景应提高安全权重;B 影响各基准结果的可靠度,样本量太少的基准应降低权重;C 影响红队测试强度与安全阈值。D 是工程排期问题,与评测权重无关。
Q9. 可信大模型联合评测的完整流程应当包含哪些环节?
- A.能力基准的批量运行评测← 正确答案
- B.红队对抗攻击与漏洞记录← 正确答案
- C.综合权重计算与报告输出← 正确答案
- D.增大采样温度提升生成速度
答案:ABC。联合评测 = 能力维度(如 MMLU、MATH、HumanEval)+ 安全维度(红队测试)+ 汇总决策(权重计算与报告),三者缺一不可。D 是关于推理的采样设置,属于模型服务配置,不属于评测流程。
Q10. 若评测中共生成 n=10 个候选,其中 c=8 个通过单元测试,那么 pass@2 的估计值约为多少?
- A.0.978 依据超几何组合计算← 正确答案
- B.0.960 按独立事件近似
- C.0.800 用通过率直接代入
- D.0.900 对结果近似取整
答案:A。pass@2 = 1 − C(10−8,2)/C(10,2) = 1 − C(2,2)/45 = 1 − 1/45 ≈ 0.9778。B 的 0.96 是独立近似 1−(0.2)²;C 是 c/n=0.8;D 与真实值不符。组合计数公式下的结果最接近 0.978。