城市垃圾处理厂门口挂着一块巨大的告示牌,上面用漫画画着四只大桶:红色有害垃圾、蓝色可回收物、绿色厨余垃圾、灰色其他垃圾。每天清晨,垃圾车驶入,分拣员扫一眼告示牌,就能把电池、玻璃瓶、果皮和纸箱分到各自的轨道上。没有这块告示牌,整座处理厂就会陷入混乱——电池混进焚烧炉可能引发爆炸,传染性废物混进回收线会污染整批资源。 AI 安全评测面对的正是同样的混乱。大模型每天生产海量文本,其中夹杂着仇恨言论、暴力教唆、隐私泄露等“有害垃圾”。如果安全工程师没有一套统一的“告示牌”——危害分类(Harm Taxonomy)体系,每个测试人员对同一段输出就可能给出截然不同的判断,评测报告也就毫无公信力可言。本文以“垃圾分类中心”为贯穿线索,带你从零建立一套完整的危害分类知识体系:分类表怎么设计、类别怎么定义、判定标准怎么定、检测引擎怎么实现、标注一致性如何保障、评测流水线如何自动化、最终可信度如何兜底。学完之后,“危害分类”在你脑海中浮现的将不再是一个抽象术语,而是一条分工明确、质检严密的全自动分拣流水线。
危害分类是 AI 安全评测的“通用语言”。掌握它,你就能用一套可复现、可审计的标准去评估大模型的安全性——这是 AI 安全工程师的基本功,也是面试中反复出现的高频考点。
目录
可视化演示
危害分类对模型有害输出进行系统性归类,涵盖仇恨言论、暴力内容、隐私泄露等类别。拖动滑块调整分类覆盖度,观察taxonomy体系与检测标准流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
危害分类核心 系统性归类 检测标准 仇恨→暴力→隐私
分类体系认知(一张告示牌,定下全厂规矩)
管理员上任第一天,不是先发手套,而是先挂出那张巨大的告示牌——什么是可回收、什么是有害、什么算厨余。没有这张牌,每个人按自己的喜好扔垃圾,整座厂房一天就会乱套。AI 安全领域对应的“告示牌”就是危害分类体系(Harm Taxonomy)。它把模型可能产生的有害输出,按“仇恨言论”“暴力内容”“隐私泄露”“色情低俗”等大类系统排列,并给每个大类配上清晰的子类定义。
一份良好的 taxonomy 必须满足三个设计原则:互斥性,任何一条有害输出只能归属一个类别,避免“既算 A 又算 B”的扯皮;完备性,所有危险情况都能在分类表中找到位置,不能出现“漏网之垃圾”;可操作性,无论人还是机器,拿着表都能快速判断出处,而不是靠直觉猜测。设计完成后,需要一个朴素指标来检验体系是否覆盖到位——危害覆盖率:
1. 分子 k:表示当前评测流程中实际被识别出的危害类别数量。例如分类表有 4 类,但评测只发现 3 类,k = 3。
2. 分母 K:表示危害分类表中规定的总类别数,它是 taxonomy 设计阶段就固定下来的“全量清单”,相当于告示牌上画出的全部桶位。
3. 覆盖率 C:衡量体系完备程度的比值。C = 0.75 意味着还有 25% 的危害类型在评测雷达之外,需要补充测试用例,避免“漏网之垃圾”。
告示牌上每多一条分类,处理厂的漏检风险就少一分;taxonomy 每多一类定义,模型的危险输出就多一道监管关口。这张牌挂得越科学,后面所有环节的争吵就越少。
核心危害类别(四只大桶,各归各位)
垃圾分类中心最显眼的是四只大桶。AI 危害分类的世界里,最常见的也恰好是四个大类。仇恨言论是“正在燃烧的火种”,它针对民族、性别、信仰等群体发起攻击和贬损,语言自带敌意;暴力内容是“拿刀的教唆犯”,它不仅描述打砸抢,还可能给出可执行的伤害步骤;隐私泄露像“遗落的病历本”,把身份证号、电话、医疗记录等敏感信息暴露在公开场景;色情低俗则是“贴满小广告的墙体”,危害不像前两者那样致命,却会持续污染信息环境。
评测时不能只看“有没有毒”,还要看“毒有多重”。于是我们给每个大类设置子项和严重度分值,用一个加权公式汇总出综合危害分:
1. 子项危害分 s_i:对第 i 个类别子项的严重度打分,通常用 1~5 分。比如“直接泄露身份证号”比“暗示性提及住址”得分更高。
2. 权重 w_i:每个类别对最终综合分的相对重要程度。所有权重之和为 1,保证综合分处于固定量纲,不会因类别数量变多而失真。
3. 综合危害分 S:各子项加权后的总分。S 超过阈值时,系统判定该输出“高危”,触发拦截或人工复核。
桶身上的标签越清晰、权重越明确,分拣员才知道哪袋垃圾该优先转运。产品上线前,评测团队也才能据此决定:先修补哪一个安全漏洞。
分类判定标准(分拣手册,拒绝“看着像”)
分拣员第一天上班会领到一本工作手册,上面写着:空塑料瓶是可回收,沾了油漆的塑料瓶是有害垃圾。危害分类的判定标准,就是写给人类标注员和机器检测器共同使用的“工作手册”。它必须回答三个问题:第一,攻击或泄露的目标对象是谁?第二,生成者的意图是什么——蓄意歧视、报复性披露,还是无心引用?第三,上下文语境是什么?同一句“你真是个天才”,在朋友调侃和黑粉攻击两种语境下,类别完全不同。
判定结果最终汇总成一个严重级别 L,它是由目标、意图、语境三个维度共同决定的评估函数:
1. target 目标对象:文本指向的个体或群体。针对特定种族或宗教群体的攻击,类别直接锁定为仇恨言论。
2. intent 生成意图:生成行为背后的动机。蓄意教唆与无心引用的危险程度相差数档,这是区分“暴力内容”和“新闻转述”的关键。
3. context 上下文语境:对话历史、话题领域、平台规则共同构成语境。语境可以逆转分类结果——同样的词在不同语境下严重度完全不同。
工作手册写得越细,分拣员之间的争吵越少;判定标准定得越明确,AI 安全测试用例的标注结果就越稳定,越不会出现“看着像就应该扔进这个桶”的拍脑袋决策。
检测引擎实现(传送带上的自动分拣机)
有了手册和四色桶,垃圾分类中心还需要传送带上的自动分拣机——摄像头扫描、红外识别、气动吹嘴一气呵成。AI 危害分类的检测引擎就是这条传送带。它的第一层是规则匹配,相当于“写着关键词的拦截网”,命中“身份证号”“打爆”等关键词立刻标记;第二层是小模型分类器,经过微调的轻量模型负责初筛,速度快、成本低;第三层是强模型复核,也叫多级检测,对疑似样本再调用更强的模型或人工规则做二次判定,输出最终类别与置信度。
评判一台分拣机值不值得信任,最常用的指标是 F1 分数——精确率和召回率的调和平均:
1. P 精确率:被分为某危害类别的样本中,真正属于该类别的比例。严防误伤正常内容,P 必须高。
2. R 召回率:真实有害样本中,被成功抓出的比例。严防漏放有害输出,R 也必须高。
3. F1 调和平均:对 P 和 R 的合并评价。P = R = 0.9 时 F1 = 0.9;若 P = 0.9、R = 0.5,F1 只有 0.64,说明引擎偏科。
自动分拣机再快,也要定期检修;检测引擎再强,也要用 F1 指标校准每一层装置。规则层负责拦截、小模型负责初筛、强模型负责深挖,三层协同,才能守住传送带的每一道关口。
一致性保障机制(质检员抽检,掐灭“各扔各桶”)
如果分拣员各凭感觉,两个分拣员对同一个“半满的油漆桶”会给出不同判断:A 说有害,B 说可回收。质检员的工作就是随机抽检:用同一本手册复核,然后算出一个数字来衡量两人的“默契程度”。AI 标注领域把这个数字称为标注者间一致性,最经典的量化指标是 Cohen's Kappa:
1. P_o 观察一致率:两名标注员对同一批样本给出完全相同分类的比例。10 条样本中 8 条一致,则 P_o = 0.8。
2. P_e 随机一致率:即使标注员完全瞎猜,也可能凑巧一致的期望概率。P_e 由各类别被两人使用的边缘概率相乘再求和得到,衡量的是“运气成分”。
3. κ 一致系数:排除运气后真实一致的水平。P_o = 0.8、P_e = 0.5 时,κ = (0.8 − 0.5)/(1 − 0.5) = 0.6,属于“中等一致”,需要先检查手册有无歧义,再扩充标准示例。
有了这根“默契标尺”,质检员不必再靠经验拍脑袋。Kappa 低于阈值就自动触发手册修订和争议仲裁机制,四色桶的秩序才能真正保持稳定。
评测流程自动化(从垃圾进厂到报告出账)
垃圾分类中心最值钱的本事,是全流程自动化。危害分类评测也一样:从海量模型输出进厂,到最终评测报告出厂,理想方案是一条无人值守的流水线。这条流水线包含三个环节:自动标注引擎先按 taxonomy 给输出打上初步类别和置信度;流水线调度器负责数据清洗、去重、检测和评分的串联;结果汇总模块把各类别的占比、高危命中率、Kappa 值等指标聚合成一份可读报告。
三个环节的耗时相加,就是单轮评测的总周期:
1. T_data 数据准备耗时:包含采样、清洗、格式化标准。评测集中混入“垃圾样本”,清洗时间就会飙升,最终拖慢整条流水线。
2. T_infer 推理检测耗时:检测引擎在所有评测样本上推理一遍的时间。采用小模型初筛、大模型复核的多级策略,可以显著压缩这一项。
3. T_eval 汇总评估耗时:计算 Kappa、F1、覆盖率等指标并生成报告的耗时。使用自动报告模板后,T_eval 趋近于常数。
从垃圾车入场到月报打印,全程自动的流水线让处理厂从“人盯人的作坊”变成“可扩展的工厂”。AI 安全评测团队也因此能每周滚动产出一份安全态势报告,而不是把时间耗在手动拷贝数据上。
评测可信度保障(校磅秤,整台账)
垃圾分类中心对外公布“本月回收率 92%”之前,必须先确认地磅没失灵、台账没涂改。AI 评测报告想让人信服,同样需要可信度保障机制。第一道防线是数据质量控制:评测集必须经过格式校验、去重、敏感信息筛查和标签噪声清理,任何一条脏数据都可能把最终指标带偏。第二道防线是评分一致性校验:同一批输出让多位标注员或多次独立评测分别打分,对比分数分布并剔除异常值。第三道防线是持续监控:每次评测保留原始样本与检测日志,让所有结果可追溯、可复现。
数据质量合格率是最朴素的量化指标:
1. N_valid 有效样本数:通过格式、去重、标签一致性校验的样本数量。重复样本会放大某一类别的占比,必须剔除。
2. N_total 总样本数:评测集的原始规模。分母过小会让指标产生较大波动,应保证超过统计所需的最小样本量。
3. Q 数据质量合格率:判定评测结果可信度的门槛。Q = 95% 时,报告可附带说明 5% 的样本因质量问题被排除,防止读者对结论产生误解。
地磅校准、台账完整、记录可查——垃圾分类中心的报告才有公信力。数据质检、评分复核、日志归档——AI 安全评测才敢交付给客户与监管方,这才是“可信度保障”的全部含义。
AI 应用场景
社交平台内容审核评测
阶段:评测集构建与标注一致性校验。
解决的问题:传统内容审核靠人工逐条盯屏,成本高且标准因人而异。用危害分类 taxonomy 构建评测集后,可通过 Kappa 量化标注员之间的分歧,再用 F1 筛选表现最好的审核模型,使整个审核体系从“经验驱动”转向“指标驱动”。
具体案例:某社区 App 上线前,安全团队抽取 5000 条用户帖子,按仇恨言论、暴力内容、隐私泄露、正常四类完成标注。首轮 Kappa 只有 0.62,说明标注规范存在歧义;修订手册并补充边界样例后,Kappa 提升至 0.81,审核模型 F1 也从 0.71 提升到 0.85。
大模型发布前的安全红队测试
阶段:评测执行与结果汇总。
解决的问题:大模型发布前,需要系统性地验证模型面对恶意 prompt 时不会输出高危内容。危害分类流水线将对抗测试产生的全部回答自动分类、打分、汇总,生成可读的安全报告。
具体案例:某大模型公司使用“自动标注 + 强模型复核 + 结果汇总”的流水线,对 10 万条对抗 prompt 的模型输出进行评测,自动生成各危害类别的占比与趋势图,并标出高危样本供红队成员进一步分析。
评测报告交付前的可信度审计
阶段:数据质量与评分一致性校验。
解决的问题:第三方评测机构交付报告时,如果数据来源不清或标注不一致,客户难以信任结论。通过数据质量合格率 Q 与 Kappa 值双指标把关,可让评测报告具备可审计性。
具体案例:某评测机构为政务 AI 助手出具安全评测报告前,先计算 Q = 96%、Kappa = 0.83,并附上样本清单与日志链接。客户复核确认后,报告一次通过验收,未再发生扯皮事件。
Python 演示
# -*- coding: utf-8 -*-"""基于关键词规则的基础危害分类评测演示""" KEYWORDS = { '仇恨言论': ['歧视', '蠢货', '低等'], '暴力内容': ['打爆', '杀死', '炸掉'], '隐私泄露': ['身份证号', '手机号', '家庭住址'],} def rule_predict(text): """用关键词规则判定输入文本所属危害类别""" for cat, words in KEYWORDS.items(): for w in words: if w in text: return cat return '正常' def calc_kappa(ratings_a, ratings_b): """计算两名标注员之间的 Cohen's Kappa 系数""" n = len(ratings_a) if n == 0: return 0.0 labels = sorted(set(ratings_a) | set(ratings_b)) table = {} for a in labels: for b in labels: table[(a, b)] = 0 for a, b in zip(ratings_a, ratings_b): table[(a, b)] += 1 po = sum(table[(l, l)] for l in labels) / n pa = {l: sum(table[(l, x)] for x in labels) / n for l in labels} pb = {l: sum(table[(x, l)] for x in labels) / n for l in labels} pe = sum(pa[l] * pb[l] for l in labels) if pe == 1.0: return 1.0 return (po - pe) / (1 - pe) def main(): test_cases = [ '你必须把手机号和家庭住址发给我', '这帮蠢货都该滚出网络', '我要打爆他的头', '今天的天气真不错', ] annotator_a = ['隐私泄露', '仇恨言论', '暴力内容', '正常', '仇恨言论', '暴力内容', '隐私泄露', '正常'] annotator_b = ['隐私泄露', '仇恨言论', '暴力内容', '正常', '正常', '暴力内容', '隐私泄露', '正常'] kappa = calc_kappa(annotator_a, annotator_b) print('=' * 28) print('危害分类规则引擎演示') print('=' * 28) for text in test_cases: print('{:<16} -> {}'.format(text[:12], rule_predict(text))) print('标注员一致性 Kappa = {:.3f}'.format(kappa)) if __name__ == '__main__': main()
KEYWORDS = {...}定义了四类危害对应的关键词映射,相当于传送带上写着关键词的“拦截网”。def rule_predict(text):遍历关键词做初次判定,输出输入文本所属危害类别,是规则匹配层的核心。def calc_kappa(ratings_a, ratings_b):用一致性矩阵同时计算 P_o 和 P_e,实现 Cohen's Kappa 指标。po = sum(table[(l, l)] for l in labels) / n观察一致率:对角线上一致样本数占总样本数的比例。pe = sum(pa[l] * pb[l] for l in labels)随机偶然一致率:两人独立标注时“蒙对”的期望概率。if __name__ == '__main__': main()保证脚本能被直接执行,也可作为模块被其他评测流程导入。
常见误区
误区危害分类不就是把“脏话”“违禁词”收集到一个表里,命中就拦截吗?很多初学者以为维护一个超大的关键词库就等于完成了危害分类。
正解关键词只能抓“表面形态”,无法识别语义改写、谐音和指代。比如把“打爆你的头”改写成“打。爆。你。的。头”,黑名单就失效了。真正的危害分类需要 taxonomy + 判定标准 + 多级检测引擎,关键词只是规则层的一层初筛网。
为何常见:最早的内容过滤产品确实从关键词起步,很多教程也用它做入门演示,容易让人误以为历史方案就是完整方案。
误区分类表列得越细,覆盖越全,评测就越专业。于是有人把危害类别拆成几十个子类,每个子类还分三档严重度。
正解类别过细会导致标注员无所适从,同一句话在不同子类间反复摇摆,Kappa 值暴跌。正确的做法是先保证大类互斥、完备、可操作,再根据业务需求逐步细分。Kappa 指标会及时告诉你分类粒度是否已经过细。
为何常见:追求完备性的直觉容易导致过度设计,忽略了“人能不能稳定执行”这一可操作性约束。
误区Kappa 高就代表标注结果可信,乃至代表 taxonomy 本身正确,可以直接作为黄金标准使用。
正解Kappa 只衡量一致性,不衡量绝对正确性。两个标注员可能共同持有同一个错误标准——比如都误把“中性调侃”判成“仇恨言论”,一致率依然很高。此时必须用专家仲裁或标准集来校准绝对正确性。
为何常见:统计指标天生带有“权威感”,初学者容易把“统计上一致”等价于“事实上正确”。
误区评测流程已经全自动了,自动标注、自动汇总、自动出报告,那还需要人做什么?直接让流水线每月跑一次就好。
正解自动化会产生系统性偏差——比如关键词库过时、小模型对新兴黑话失效。Kappa 抽检、争议仲裁、异常回归仍然需要人工介入。自动化提升的是效率,不能替代责任判断。
为何常见:看到“自动”二字,容易误以为机器承担了全部认知工作,忽略了自动化系统同样需要维护和校准。
误区Q = 99%,数据肯定没问题,评测报告直接发布即可。
正解数据质量合格率只是第一道门槛,它只能说明样本“干净”,不能证明评测设计科学。覆盖率低、F1 不平衡、Kappa 不稳定,同样会让报告失准。就像地磅准不代表垃圾分类正确,数据干净也不等于评测方案合理。
为何常见:单一指标把关最容易产生“过关错觉”,人们倾向于用一个数字代替整体评估。
面试题
Q1. 危害分类体系(taxonomy)的首要作用是什么?
- A.对有害输出系统归类← 正确答案
- B.替代人工测试流程
- C.提升模型训练速度
- D.压缩评测数据集量
答案:A。垃圾分类站没有告示牌会陷入混乱,危害分类体系的作用正是给每一段有害输出找到明确的类别归属。B、C、D 都不是分类体系的设计目标。
Q2. 以下哪个属于隐私泄露类危害?
- A.输出完整用户身份证号← 正确答案
- B.生成一份励志演讲稿
- C.翻译一段科技新闻
- D.推荐五部经典电影
答案:A。身份证号是典型的敏感个人信息,在公开场景输出它等同于把病历本遗落在马路上。其他三个选项都是正常内容,不属于隐私泄露。
Q3. 设计 taxonomy 的三个核心原则不包括以下哪项?
- A.互斥性设计原则
- B.完备性设计原则
- C.可操作性设计原则
- D.随机性设计原则← 正确答案
答案:D。互斥、完备、可操作是危害分类体系的三大支柱。“随机性”不是设计原则,分类体系恰恰要避免随机和含糊,否则标注员无法稳定执行。
Q4. 规则匹配检测的最大局限是什么?
- A.无法识别改写绕过的文本← 正确答案
- B.不能用于文本初筛阶段
- C.推理速度比模型慢
- D.无法返回文本长度值
答案:A。规则匹配靠关键词和正则,本质是“看形不看义”。把“打爆”改写成“打。爆”或谐音词,规则就失灵了。它适合做初筛,但不能当作唯一的检测手段。
Q5. Cohen's Kappa 公式中 P_e 表示什么?
- A.随机偶然一致的期望概率← 正确答案
- B.标注员人数最多的比例
- C.检测引擎的错误率值
- D.模型参数量下降比例
答案:A。P_e 衡量的是标注员完全瞎猜也可能凑巧一致的概率,即“运气成分”。Kappa 的巧妙之处就是把这份运气减掉,只保留真实默契度。
Q6. 以下哪些属于评测流程自动化的前置环节?
- A.自动标注预打标← 正确答案
- B.流水线调度串联← 正确答案
- C.人工逐个审阅
- D.结果汇总出报告← 正确答案
答案:ABD。自动标注、流水线设计、结果汇总是自动化流程的三个典型环节。人工逐个审阅是自动化要取代的低效流程,不属于自动化设计的一部分。
Q7. 两名标注员的 Kappa 值只有 0.3,最合理的处理顺序是什么?
- A.先修订标注规范减少歧义← 正确答案
- B.直接删除所有争议样本
- C.把多级分类降成二分类
- D.更换更复杂的检测大模型
答案:A。Kappa 过低,首先说明标注规范存在歧义或流程不一致。删除争议样本是掩耳盗铃,降级分类会牺牲细节,更换模型不能解决标注源头的问题。先修手册才是正解。
Q8. 数据质量合格率 Q 公式中,分母 N_total 表示什么?
- A.评测集的原始规模← 正确答案
- B.通过质检的样本数
- C.被删除样本的数量
- D.模型参数量的大小
答案:A。N_total 是分母,代表评测集的原始总样本数;N_valid 是分子,代表通过各项校验的有效样本数。两者相除才是数据质量合格率。
Q9. 下列关于危害分类评测的说法,正确的有哪些?
- A.Kappa 高说明标注标准一致← 正确答案
- B.F1 高说明检测引擎均衡← 正确答案
- C.覆盖率低说明存在评测盲区← 正确答案
- D.Q 值高说明报告可直接交付
答案:ABC。Kappa 衡量一致性,F1 衡量精确率与召回率的均衡程度,覆盖率低确实说明存在盲区。但 Q 值高只代表数据干净,报告能否交付还要综合覆盖率、F1、Kappa 一起判断,D 错误。
Q10. 分类体系互斥性被破坏后,下列哪些现象可能同时出现?
- A.样本同时被判多个类别← 正确答案
- B.评测报告指标失真← 正确答案
- C.标注一致性明显下降← 正确答案
- D.模型吞吐量反而提升
答案:ABC。互斥性指“一条样本只归一个类”。边界重叠时,检测引擎会输出多类别,标注员也会无所适从,Kappa 和最终报告都会失真。D 与互斥性无关,是干扰项。