SHAP 与 LIME:特征归因方法怎么把「收入贡献 −30 分」算出来的

模型说「这个人贷款评分被收入这一项拉低了 30 分」——这个数字凭什么成立、能不能信?本专题沿着一条贯穿性的线索把这件事讲透:先用 LLM 速通建立「模型说了什么」这一层的背景,再用长上下文把「系统可能读漏证据」钉死,然后正面攻 SHAP 的机制(参照基准、边际贡献、公平分配三个卡点),再把这条「公理保证」用 sanity check 与对抗攻击击破,最后收到治理层。整个旅程结束时会得到一个操作判断:单点解释撑不起信任,必须靠解释、文档、有实质否决权的人三层叠起来。

1 LLM 的能力来自规模与对齐,但两件事都不回答「凭什么这么判」

LLM 这类模型的能力增长不是玄学,它服从三条幂律。Kaplan 等人 2020 年在 OpenAI 的实验里发现:当算力、数据量、参数量没有被另外两项卡住瓶颈时,测试损失与三者各自呈幂律关系——非嵌入参数 $N$ 的指数 $\alpha_N \approx 0.076$,数据集 $D$ 的指数 $\alpha_D \approx 0.095$,训练算力 $C_\text{min}$ 的指数 $\alpha_C^\text{min} \approx 0.050$Kaplan2020. DeepMind 2022 年把同一族幂律在更大区间(70M–16B 模型、5B–500B tokens)里重新拟合一次,得到相反结论——Hoffmann 等人用 70B Chinchilla 配 4 倍于 Gopher 的训练 tokens,在 MMLU 上比 280B Gopher 高出 7 个百分点(67.5%)Hoffmann2022. 这不是矛盾,而是同一族曲线在不同实验区间里的两次拟合——小模型那一段数据已经够用,往大模型走时数据先成为瓶颈。

三联 log-log 图:测试损失对非嵌入参数、数据集 tokens、训练算力三条幂律线

图注:三幅子图共用同一损失纵轴,横轴分别是参数 N、数据 D、算力 $C_\text{min}$。数据点沿直线分布说明幂律关系成立——「越大越好」是有指数的规律,不是口号。但代价是必须三项同步放大,单独拉一项收益递减。α 系数不在图上标注,全在原文 §1.2 文字里。

需要当场点破的反常之处:Kaplan 在论文 §6 自己承认「损失曲线上的平滑下降可能掩盖能力的非平凡变化」。这句话是后面整篇 XAI 故事的伏笔——loss 平滑下降不等于下游能力平滑改善,更不等于「模型看懂了原因」。

光有容量不够,还需要把模型「调教得会听话」。InstructGPT(Ouyang 等人 2022)把这件事拆成三段流水线InstructGPT. 成本是关键的反直觉:175B InstructGPT 的 SFT 训练只花 4.9 petaflops/s-days,PPO-ptx 60,而 GPT-3 预训练花了 3,640——对齐阶段的算力开销远低于预训练(原文用词是 modest relative to pretraining,未给出数量级倍数;就 PPO-ptx 一侧看约为 GPT-3 预训练的 1/60,SFT 一侧更低)。

InstructGPT 三段流程:SFT 示范 → 奖励模型排序 → PPO 带 KL 惩罚

图注:一张图内三段,蓝色箭头表示数据流向。Step 2 的 A–D 不是独立样本对,而是同一次 K=4–9 候选的排序结果。Step 3 环上同时标注 KL 惩罚与 PPO-ptx 的预训练 log-likelihood 分支,两者分别承担「不让 RM 跑偏」与「不丢通用能力」。

后来 Rafailov 等人 2023 年提出 DPO,把 RLHF 这套带 KL 约束的奖励最大化问题精确求解为一个二元交叉熵损失DPO. 关键是「精确」二字——不是近似,是把问题换一种写法后配分函数恰好抵消,所以结果可以不损失一般性地表达出来。这与后面 SHAP 的「公理唯一性」形成跨幕呼应:两处都是「精确求解」胜过「启发式选择」。

DPO 与 RLHF 的横幅对照:上「现有方法」SFT→RM→RL;下「DPO」直接分类损失

图注:上半路径需要单独的奖励模型与 RL 环(policy 与 RM 之间有反馈);下半路径把偏好数据 $(x, y_w, y_l)$ 直接喂进一个分类损失,策略网络同时充当隐式 reward 模型——同一个目标的不同实现,不是更粗糙的近似。

到这里为止,所有进展都发生在「模型说了什么」这一层。Kaplan 的幂律解释「容量为什么变大」,InstructGPT 解释「容量怎么变成听话」。这两件事都没回答一个更基础的问题:一个具体的输出凭什么是这一个——尤其当这个输出会影响贷款、招聘、医疗时。课件那张 Capability vs Behavior 的对照图已经点明了核心落差:能做不等于每次都会按你要的方式做。本专题后半程全部围绕这个问题展开。

2 窗口更长不等于读到更多:证据埋在中段就会被漏掉

规模与对齐把「会说什么」做到位了,但「能读到多少」是另一个故事。Liu 等人 2023 年的受控实验LITM 把「相关证据在输入中的位置」这一个变量精确控制,得到一条 U 形曲线:开头最强(primacy bias,首位偏好)、结尾次强(recency bias,近因偏好),中段最差——而且最差情况下的表现可以低于闭卷。

多面板折线图:相关文档位置 vs 准确率,呈 U 形,虚线为闭卷水平

图注:横轴是含答案文档在输入上下文中的位置(第 1 篇到第 30 篇),纵轴是准确率。多条模型曲线在首位高位、在中段明显下探、靠末位略有回升,整体呈 U 形。虚线是闭卷水平基线——用来判断「比不给文档还差」的具体参照系。中段最差情况比闭卷还要低,说明把证据塞进中段不是中性操作,是负收益。

要保留「最差情况」这个限定词:不是所有模型、所有窗口、所有任务都必呈 U 形(论文报告 encoder-decoder 在训练长度内相对稳健),但当 U 形出现时,它会把 RAG 的工作流从「锦上添花」变成「必要防御」——课件那张 Map→Select→Compress→Verify 四步工作流之所以不是过度工程,是因为检索到的相关证据可能被大量无关文档挤到中段,模型读不到它。

把这两章放在一起看,长上下文给的是容量上限,不是保证。能力越强、窗口越长,越难被检查。这条预演将会在第三章再次出现:当 SHAP 给出「收入贡献 −30」这样的解释数字时,那个数字本身也要经得起类似的「换背景再算一次」检查。

3 SHAP 把「去掉收入再看差多少」变成一条首尾相接的加法账

回到主线。一个模型给张三拒贷、给李四放贷。SHAP(Lundberg & Lee 2017)说:「张三被拒贷,预测值从基准值 0.45 推到 0.15。其中收入一项贡献了 −30 分(按某种单位),负债率贡献 +12 分,其余项各加若干——所有贡献加起来正好等于基准到输出的距离。」这句话在论文里被形式化为加法解释SHAP. 下面按四步把「这个数字凭什么成立」讲透。

第一步:从基准值走到输出的那笔账

SHAP 的核心可视化是一条数轴,从基准值(base value)出发,逐个把特征「加进来」,每个特征以带符号的增量表示它把期望预测推高或压低多少。所有增量首尾相接,恰好从基准值走到当前模型输出 $f(x)$SHAP. 这是把「贡献值就是一笔账」这件事一次性讲透的图。

SHAP 加法账:base value → 各特征增量 → 当前输出 f(x)

图注:从基准值出发,特征逐个被「加入」,每个特征以带符号增量表示它把期望预测推高或压低了多少,所有增量首尾相接正好从基准走到输出。需要当场点破的反常:图中只画了一种加入顺序。Lundberg & Lee 在同一 caption 里写明——当模型非线性或特征不独立时,顺序会影响结果,SHAP 是对所有可能顺序取平均后的值。这意味着同一组数据里,张三的收入贡献和李四的收入贡献数字可以完全不同,但分配规则始终一致。

第二步:参照基准、边际贡献、公平分配

课件的 Loan approval 例子给出「Income $60K / Debt ratio 45% / Late payment」三条特征,加起来贡献出拒贷。这背后要回答三个紧扣的问诊痛点。

参照基准是什么:基准值不是 0、不是均值,是背景数据集 $D$ 上模型输出的期望 $\mathbb{E}[f(z)]$。换一个背景数据(比如把房贷群体的分布换成学生群体的分布),基准值和所有贡献值会整体变。这解释了「同一个人在两个不同模型里贡献值不一样」——基准换了,账本从头来过。SHAP 的严格定义是:把 $f_x(z') = \mathbb{E}[f(z) \mid z_S]$(条件期望)代入 Shapley 求和式,$S$ 是 $z'$ 中非零下标的集合SHAP.

边际贡献怎么落到具体样本:对一个特定样本 $x$,特征 $i$ 的贡献是把「$i$ 从无到有加入」带来的输出差,对所有「其他特征已加入」的子集各算一次,按阶乘权重 $\lvert z' \rvert !(M - \lvert z' \rvert - 1)!/M!$ 求平均。这里的阶乘权重让「最早加入」和「最后加入」两个极端顺序获得对称的总权重——把谁都不能占便宜的承诺形式化了。

为什么叫「公平分配」:它在博弈论里是个唯一性定理。Theorem 1 断言:同时满足 local accuracy(解释在 $x$ 上精确等于原模型输出)、missingness(输入里缺的特征不能产生归因)、consistency(如果换一个模型 $f'$ 对所有输入都不弱于 $f$ 的贡献,则 $i$ 的归因也不减)这三条公理的加法解释只有一种,就是 Shapley 值SHAP. 所以「公平」指的是分配规则唯一,不是每个特征拿到的数字一样大。同一个特征对张三 −30、对李四 −8,规则没变;变的是子集结构与基准。

第三步:核权重对称 = 公平分配的数学来源

唯一性定理给出结论,但「为什么这个权重是唯一正确的」需要再走一步。原文 A 面板把所有可能的简化输入 $z'$ 按「基函数数量(基数)」排列后展示权重分布,左右对称——这正是阶乘权重 $\lvert z' \rvert !(M - \lvert z' \rvert - 1)!/M!$ 的几何形态SHAP. B 面板画深度网络由多个简单组件组合,已知各组件解析解后用 DeepLIFT 式反传快速近似整网 SHAP——这解释了 Deep SHAP 为什么能快(不需要从头枚举所有 $2^M$ 个子集)。

A 面板核权重对称分布;B 面板深度网络由简单组件组合做 DeepLIFT 反传

图注:A 面板按基数排列所有 $z'$,核权重呈左右对称——这是 Shapley 核的标志,「公平」即从这里来。B 面板是概念示意,不要从中读出具体层数或网络规模。

代价要交代一句:Kernel SHAP 用 Shapley 核换掉 LIME 的启发式核,让加权线性回归重新拟合出博弈论的 Shapley 值。原文给出的复杂度记号 $O(2^M + M^3)$ 出现在 Low-Order SHAP 一节,说的是按该核做线性回归、在 $M$ 较小时才划算,并非 Kernel SHAP 作为一类方法的复杂度上界。论文对 Kernel SHAP 与 LIME 的对比走的是实验曲线(求值次数 vs 重要性估计),定性结论是 Kernel SHAP 用更少的原模型求值次数达到相近精度。它依赖条件期望与近似的特征独立性假设——这是 SHAP 的工程局限,不在 SHAP 数学保证的范围里。

第四步:与 LIME 的对照——有公理保证 + 相应代价

LIME(Ribeiro 等人 2016)和 SHAP 用同一族加法解释形式——线性可解释模型 $g(z') = \varphi_0 + \sum \varphi_i z'_i$,把黑盒模型的局部行为用一个简单的线性代理来近似LIME. 课件的病人-flu 例子是 LIME 的招牌叙事:把打喷嚏、头痛标为正向贡献,「无疲劳」标为反向证据,给医生一份带正负权重的症状小清单。

LIME 局部清单:打喷嚏/头痛为正向贡献,「无疲劳」为反向证据

图注:以病人被判 flu 为例的 LIME 流程示意。LIME 的损失、核、正则全是启发式挑选——SHAP 论文明确写出「LIME 用这些启发式选择并不还原 Shapley 值」,后果是违反 local accuracy 和 consistency。症状权重来自假设病例,不来自真实临床数据。

把三张图放在一起看:SHAP 的 number_line 是一条首尾相接的加法账(数字必须加起来等于预测差),LIME 的症状清单是带正负权重的局部代理(数字加起来没有约束)。这是规则上的差别,不是拟合精度上的差别。SHAP 的代价是核回归更重、依赖条件期望与特征独立近似;LIME 的代价是不满足其中两条公理。

至此课件指名的四个卡点——「SHAP 在算什么、为什么叫公平分配、参照基准怎么换」——都有了原始数学来源。第四个卡点「解释看似合理却不可信的陷阱」需要单独一章。

4 唯一满足公理的解,仍可能被证明与模型无关,或被主动骗过

SHAP 有公理保证 ≠ 真实忠实于模型决策逻辑。Adebayo 等人 2018 年的 saliency sanity check 和 Slack 等人 2020 年的 scaffolding 攻击合起来回答了这个问题:单点解释几乎不能独立判定模型是否安全。

随机化检验:解释若不随权重变化,就不依赖模型

Adebayo 的核心做法是 cascading randomization——从输出层往输入层逐层把权重重新初始化,看 saliency map 与原解释的秩相关怎么变Sanity. 原文 Figure 4 把这一观察放在上下两排:上排取绝对值,下排不取绝对值。

Cascading randomization 上下两排:上排取绝对值 Guided Backprop 几乎不变,下排不取绝对值多数方法随即掉到接近 0

图注:横轴是从输出层向输入层逐层随机化的进度,纵轴是 Spearman 秩相关。关键差异——上排(取绝对值)Guided Backprop 直到最底层才变化,下排(不取绝对值)多数方法开始随机化就掉到接近 0。看似合理与真正忠实之间的缝,就藏在这上下两排之间。Adebayo 论文 v3 已自我修正「完全不变」的措辞,谨慎说法是「对高层权重随机化不敏感,直到靠近输入端的低层卷积权重被替换才会变化」。

边界检测器类比把这件事讲透:边缘检测根本不需要训练好的模型和带语义的数据。如果某类 saliency 方法的输出与「输入 × 边缘检测器」视觉上几乎一样,那它解释的很可能不是模型——它在做边缘检测。Adebayo 原文 §5.4 用 Figure 37 实证了这一点。这个对应关系不是「两者都用卷积」这种表面相似,而是「解释方法可以从纯输入特征中恢复出与原图相似的热力图」这一可证伪的机制——一旦成立,模型本身就被绕过去了。

对抗攻击:解释可以把偏见特征挤出 top-3

Adebayo 证明了「解释可能与模型无关」,Slack 进一步证明「解释可以被做成无辜的样子」。scaffolding 攻击的构造是在有偏分类器 $f$ 外面套一层无偏分类器 $\psi$,让扰动查询走 $\psi$ 的路径、原分布样本继续走 $f$ 的路径——结果解释方法只看得到 $\psi$ 的行为,看不到 $f$ 的偏见Fooling.

German Credit scaffolding:左栏 biased f(Gender 在 top-3);中栏 scaffolding 后 ψ 仅用 Loan Rate % Income

图注:左栏是仅基于 Gender 的有偏分类器 $f$ 跑 LIME,Gender 出现在 top-3;中栏是套上 scaffolding 之后 $\psi$ 仅用 Loan Rate % Income 一个无关特征做预测,Gender 从 top-3 名单里消失。两个数字必须标明 ψ 用了几个无关特征:当 $\psi$ 用 1 个无关特征时,本图对应的 German Credit 上 LIME 91% / SHAP 85% 的数据点被骗;当 $\psi$ 用 2 个无关特征时,SHAP 第一名被拿走的数据点降到 67%(COMPAS)和 71%(CC)。

为什么 SHAP 反而比 LIME 难完全骗过?回到第三章:local accuracy 公理要求所有贡献加起来必须等于当前预测与背景预测之差。攻击者用单特征 $\psi$ 时,这个特征要吞下全部贡献值,分布异常;用两个无关特征分摊时,每个特征各拿一份,更像真实相关。Slack 观察到 SHAP 的第一名被拿走比例明显低于 LIME,正是 local accuracy 公理在攻防场景的具体后果Fooling. 公理线接回第三章,三、四章形成「立保证 → 破保证」的闭环。

数字纪律:LIME 在 COMPAS 与 Communities & Crime 上是 100%,German Credit 是 91%;SHAP 对应是 100% / 85% / 84%。本文不复述 SHAP 公式(公理定义在第三章已给)。两类解释失效的检测协议就此定型:随机化后解释不变说明它不依赖模型;解释能把偏见特征挤出 top-3 说明它能被造出来——两者都不需要相信解释的表面合理性。

5 单点解释撑不起信任:要解释给谁、谁负责、怎么留下记录

解释本身不会自动变得有用,它要接上流程、文档和责任人才成立。回到课件的 scholarship 决策场景:同一个「Award / Not Award」判定,学生看到的是个人理由与下一步怎么申诉,学校看到的是判分标准与一致性,监管看到的是合规、风险与审计轨迹。同一个决策,三种人需要三种解释。

单模型卡片:每发一个模型配一张表

Mitchell 等人 2019 年提出 Model Cards 范式,给出一个最小化的字段集合(model details、intended use、factors、metrics、evaluation data、training data、quantitative analyses、ethical considerations、caveats and recommendations,共 9 个 section),并要求 quantitative analyses 必须按人群拆开报(disaggregated evaluation)——总体准确率可以很好看而某些群体很差ModelCards.

Model Card for Smiling Detection:左侧 9 个字段,右侧按 gender × age group 拆开的误差点图

图注:左边是微笑检测器模型卡的 9 个 section header 与填好的字段;右边是按 gender × age group 拆开的误差点图(含置信区间棒)。右侧那张分群误差图正是「总体准确率之外还要按人群拆开报」的视觉锚点。这是微笑检测器的示例卡,不能拿来推断其他模型该填什么字段。

但论文自己也承认这不够——§5 写道「model cards 至少在短期内不太可能被标准化到足以防止误导的程度」。它必须配合第三方审计、对抗测试与用户反馈等其他机制。这是单点文档范式的固有限制:填得对、填得全,仍然可能被绕过去。

公司级透明度评分:13 家开发商的差距有多大

把粒度放上一层。Foundation Model Transparency Index 2025 年 12 月版给 13 家基础模型开发商打分——IBM 95 / 100,是 FMTI 历史最高分;xAI 与 Midjourney 各 14 / 100,是 FMTI 历史第二低分;行业平均 40.69,中位数 35,极差 81 分FMTI. 2024 年平均 58,2025 年掉到 40.69——下跌约 17 分,打破了「透明度正在改善」的乐观叙事。

13 家公司按总分排序的横向堆叠条形:每家拆成 upstream / model / downstream 三段

图注:IBM 显著领先且三段都长;Writer、AI21 Labs 次之;中段大量公司密集落在 26–46 区间;末端若干家公司条形极短。这张图同时给出极端对比与中间拥挤带。FMTI 度量的是披露行为而非模型质量——IBM 95 分不等于 IBM 的模型更好更安全,它等于 IBM 披露得更完整。

需要点破一处容易误读的地方:FMTI 不是「公司良心排行榜」。它给分的是披露行为(transparency behavior),不是模型本身的可靠性。IBM 95 分说的是 IBM 在 100 个二元指标上披露了 95 项;xAI 14 分说的是 xAI 只披露了 14 项。哪个模型更好用、哪个模型更安全是另一个问题,需要单独的评估。

更深一层的不透明点:上游域(训练数据 + 训练算力)是最不透明的——13 家里 Midjourney 与 Mistral 得 0 分;下游域中 impact 子域平均 29%、usage data 子域平均 25%——「披露多的是本来就必须说的合规信息,披露少的是决定了模型对谁有影响的信息」FMTI. 这是公司级「准确率不等于可信」的具体证据:宏观层面连审计的原材料都不够,单点解释再精巧也替代不了这种系统性披露。

18 子域的清单:单模型卡片 vs 公司级评分卡

把 FMTI 的 100 个指标拆开,是一张横跨基础模型供应链的 18 子域分类图——上游资源(数据获取 / 数据处理 / 数据属性 / 算力 / 技术方法)、模型本体与发布流程(模型信息 / 能力 / 风险 / 缓解 / 发布)、下游使用影响(使用数据 / 部署后监控 / 下游缓解)三个区块FMTI.

FMTI 18 子域供应链分类图:上游资源 / 模型与发布 / 下游影响 三区块

图注:从左到右的基础模型供应链泳道图,三个区块分别对应上游资源、模型本体与发布流程、下游使用与影响,共 18 个子域方框。这与 Model Cards(单模型单卡片)形成粒度对照——前者是横向铺开 18 格的全行业清单,后者是纵向深度填好 9 个字段的单个文件。两份文件共同构成治理的最小闭环:单模型卡片负责深度,公司级评分负责广度。

可信不来自某一个解释方法,而来自三层叠起来的东西:针对特定人的解释(第三章的 SHAP 加法账)、留痕的文档(第五章的 Model Cards)、有实质否决权的人(人工智能监督:审计员能拒绝部署、监管能要求重新评估、申诉渠道能改变结果)。Kaplan §6 的 caveat 在全篇终点回响:损失曲线上的平滑下降可能掩盖能力的非平凡变化——这同样适用于解释:漂亮的 SHAP 力图可能掩盖模型与数据本身的偏倚。三类失效协议(随机化检验、scaffolding 攻击、供应链披露不足)合起来提醒:单看一个数字、一张力图、一份评估报告,都不能独自担起「可信」二字。

参考文献

本专题引用的核心资料如下,建议深入学习时阅读原文:

  1. Scaling Laws for Neural Language Models — arXiv:2001.08361
  2. Training Compute-Optimal Large Language Models — arXiv:2203.15556
  3. Training language models to follow instructions with human feedback — arXiv:2203.02155
  4. Direct Preference Optimization: Your Language Model is Secretly a Reward Model — arXiv:2305.18290
  5. Lost in the Middle: How Language Models Use Long Contexts — arXiv:2307.03172
  6. A Unified Approach to Interpreting Model Predictions (SHAP) — arXiv:1705.07874
  7. "Why Should I Trust You?": Explaining the Predictions of Any Classifier (LIME) — arXiv:1602.04938
  8. Sanity Checks for Saliency Maps — arXiv:1810.03292
  9. Fooling LIME and SHAP: Adversarial Attacks on Post hoc Explanation Methods — arXiv:1911.02508
  10. Model Cards for Model Reporting — arXiv:1810.03993
  11. The 2025 Foundation Model Transparency Index — arXiv:2512.10169
SHAP 与 LIME:特征归因方法怎么把「收入贡献 −30 分」算出来的