想象你是一家创业公司的老板,季度末要发奖金。团队里有人写代码、有人做设计、有人拉客户,最终产品大获成功——但你心里犯嘀咕:到底每个人贡献了多少?这可不是简单分账的问题,因为大家的功劳是交织在一起的:没有好设计,好代码也卖不出去;没有好客户,再好的产品也无人问津。 AI 领域也有同样的问题。当你训练出一个 AI 模型(比如预测贷款风险、识别图片中的猫),它内部像是几十个员工在协作:有的特征(如“年龄”)影响大,有的特征(如“是否注册会员一周”)影响小。模型可解释性就是给 AI 开“评功会”,而 KernelSHAP、TreeSHAP、DeepSHAP 正是三种不同的“评功方案”。 本文会用一场别开生面的“季度评功会”作为主线比喻,带你彻底看懂这三种算法各自的高招与短板。读完你会明白:什么时候该用“做实验”的 KernelSHAP,什么时候该用“查流程”的 TreeSHAP,又是什么时候必须请出“靠经验推断”的 DeepSHAP。
在可信 AI 与安全合规的浪潮下,可解释性已从“加分项”变为“必答题”。掌握 SHAP 三种算法的原理与选型,是 AI 工程师走向高阶、应对审计与监管的硬核技能。
可视化演示
展示KernelSHAP、TreeSHAP、DeepSHAP三种算法核心原理与对比:Shapley值博弈论基础、三种算法实现路径(加权回归/树遍历/DeepLIFT)、性能与适用场景对比选型,交互切换理解SHAP框架统一性与算法差异化实现。
本节配有交互动效(进入视口后自动加载,约 3KB)。
SHAP理论基础:Shapley值博弈论 合作博弈论特征联盟贡献分配 边际贡献加权平均=Shapley值 phi_i = sum [v(S+i)-v(S)] / |S|! SHAP框架统一了LIME、DeepLIFT等方法,核心是Shapley值的加性解释。
SHAP 核心思想
评功会最难的是什么?是“公平”二字。1953 年,诺贝尔经济学奖得主夏普利(Shapley)提出了一个数学上无可挑剔的分账方案——Shapley 值。它的核心逻辑很朴素:一个成员的贡献,等于他在所有可能的“入伙顺序”中带来的平均增量。比如程序员小张,他可能是第 1 个加入项目的,也可能是第 5 个;在不同的顺序里,他加入前后团队的产出之差,就是他的边际贡献,把所有顺序的差值取平均,就是他的 Shapley 值。
这个思想迁移到 AI 上,就是 SHAP(SHapley Additive exPlanations)。模型的一次预测好比一个“项目总产出”,每个输入特征(年龄、收入、点击次数)都是项目成员。Shapley 值告诉我们:在这一次具体的预测中,谁把结果推向高分、谁把它拉向低分,各贡献了多少。它满足两个漂亮的性质:加性——所有特征的贡献加起来恰好等于预测值减去基线值;一致性——特征真正的重要性越大,分配的贡献不会越小。
SHAP 的核心公式如下:
回到评功会:SHAP 值就是每个员工最终拿到的那份“数学上无可辩驳”的奖金。但它有个致命问题——特征一多,组合数呈指数爆炸。比如 20 个特征就有超过 100 万个组合,逐一去跑模型显然不现实。于是,三种“评功实操方案”应运而生。
- 特征集合 N表示全部特征构成的“团队成员名单”。$N$ 是全集,$n$ 是特征总数,$i$ 是我们正在评功的那个特征。
- 子集 S表示从团队中抽调出的一个“临时小组”。$S$ 是不含 $i$ 的任意特征子集,$\lvert S \rvert$ 是小组人数。
- 加权系数表示固定小组 $S$ 之外,$i$ 可以插入的位置数占比。把 $i$ 加入 $S$,相当于在 $n$ 人排队中给 $i$ 安排一个位次。
- 边际差值对比“有 $i$”与“没 $i$”两种情况下模型输出的差值,这就是 $i$ 在 $S$ 这个小组语境下的贡献。
- 求和平均遍历所有可能的 $S$,把每个语境下的贡献乘以权重再相加,得到最终公平分数 $\phi_i(f)$。
KernelSHAP 原理
既然精确计算太贵,那就用“抽样实验”来估计。KernelSHAP 的思路像极了评功会上的务实派:不要试图把所有人员组合都试一遍,而是随机挑一些“临时小组”做实验,再从这些实验数据中反推每个人的贡献。
具体做法是:构造一个简单的线性“代理模型”来拟合黑箱模型的输出。相当于你对闷葫芦队友的产出规律不太了解,就故意随机抽调不同的人来开会,记录产出,再用 Excel 拟合一条趋势线,看每个变量对产出的影响系数。KernelSHAP 给不同的特征子集设置不同的权重——子集越小或越大,权重越高,因为极端情况(只有一个人、或几乎所有人都参加)信息量最大。
KernelSHAP 的优点是“模型无关”——无论你的 AI 是神经网络、SVM 还是任意黑箱,只要它能输入特征、输出预测,就能用这一套做实验、跑回归、得贡献值。缺点是“实验费高昂”:通常需要几千到几万次模型调用才能稳定收敛。这就好比你为了评功,把团队翻来覆去排列组合开了几百次会,结论虽然靠谱,但时间成本让人抓狂。
- 简化特征 z'$z'$ 是一个 0/1 向量,表示某个组合中哪些特征被“选中参会”(1 表示选中,0 表示缺席)。
- 选中人数$\lvert z' \rvert$ 是组合里参会的特征数量,也就是小组人数。
- 组合数$\binom{n}{|z'|}$ 表示从 $n$ 个特征中选出 $\lvert z' \rvert$ 个有多少种选法,它衡量该规模组合的稀缺程度。
TreeSHAP 原理
如果你的 AI 模型是随机森林、XGBoost、LightGBM 这类决策树家族,那就有更聪明的办法了。决策树本身是层层提问、分而治之的结构——员工的决策流程一清二楚,评功会完全不必做随机实验,直接顺着决策路径逐层对账即可。
TreeSHAP 的核心洞察是:决策树的预测值可以用“条件期望”快速算出。当我们固定某几个特征时,沿树的每条路径走到底,把落入叶节点的样本均值加权汇总,就能精确得到“这个特征组合下的模型输出”。树结构天然支持这种递归聚合,因此 SHAP 值可以从指数级计算降为多项式级——原本要跑上百万次实验,现在只需要几百次树遍历。
TreeSHAP 利用树的递归结构,在 $O(TLD^2)$ 时间内精确算出所有特征的 SHAP 值($T$ 为树数量,$L$ 为叶子数,$D$ 为最大深度)。它在数学上给出的是精确解,而非 KernelSHAP 的近似估计。
回到评功会:TreeSHAP 相当于每个员工都有一张透明的工时表,项目流程本身写清了谁负责哪一环节。你不需要把员工反复排列组合,只要顺着流程图把每个环节的产出差算清楚,就能精确得到每个人的贡献。这也是为什么在 Kaggle 竞赛和风控领域,TreeSHAP 几乎成了树模型解释的默认标配。
- 条件期望$f_x(S)$ 表示在特征子集 $S$ 固定为样本 $x$ 的取值时,模型输出的期望值——相当于“只知道部分成员,预测团队产出”。
- 叶节点集合$\ell \in \text{leaves}$ 遍历树的所有叶节点,每个叶节点是一个“最终结论桶”。
- 路径落入指示$\mathbb{1}(x \text{ follows path to } \ell)$ 表示样本 $x$ 是否落入叶节点 $\ell$——满足沿途所有分裂条件则为 1,否则为 0。
- 叶权重汇总$w_\ell$ 是叶节点 $\ell$ 中训练样本占比,把权重与指示函数相乘再求和,就得到条件期望。
DeepSHAP 原理
深度学习模型(比如图像识别、自然语言处理)既不是黑箱里的“完全未知”,也没有决策树那样清晰的路径。它的结构是一层层神经元逐级加工——像一家大型企业,基层小组处理信息,中层整合,高层决策。此时 KernelSHAP 太慢、TreeSHAP 又用不上,于是有了 DeepSHAP。
DeepSHAP 的核心思路是把 SHAP 值沿网络层层往回传播。它巧妙地结合了 DeepLIFT(一种按“激活差异”分配贡献的方法)与 SHAP 的一致性公理:先给每一层神经元分配“该层输出对最终结果的贡献”,再继续往上一层拆解,直到把归因一路推到输入特征。每一层的分配近似用“该神经元对其上一层输入的梯度 × 激活差异”来完成。
需要注意的是,DeepSHAP 是一种近似方法。它假设神经元之间近似线性,而真实的深度网络充满非线性激活(ReLU、sigmoid 等),所以它的结果不如 TreeSHAP 精确,但性价比极高——即使对几百万参数的图像模型,也能在秒级给出解释。评功会里,这就像一位资深 HR 主管:虽然没参与每个项目细节,但靠着多年经验和对各部门敏感度的把握,能快速估出谁的功劳大。
- 网络分层$h_l$ 是第 $l$ 层神经元的输出,$h_{l,0}$ 是它的基线输出(比如全零输入时的输出)。
- 梯度因子$\frac{\partial f}{\partial h_l}$ 表示最终输出 $f$ 对第 $l$ 层输出的敏感度——第 $l$ 层动一点,最终结果会动多少。
- 差异因子$(h_l - h_{l,0})$ 表示该层相对基线偏离了多少——偏离越大,说明这一层对本次预测的“额外信息”越多。
- 乘积求和把每一层的“敏感度 × 偏离”求和,就得到了归因于该层的信息量,再沿链式法则回传到输入特征。
三算法对比
三种“评功方案”站在了同一条赛道上,但各自的姿态完全不同。把它们放在一起比较,核心维度有三个:精确度、速度、模型依赖度。
精确度:TreeSHAP 在树模型上是精确解,给出的是“标准答案”;KernelSHAP 是无偏估计量,样本量足够时趋近精确,但随机性导致有波动;DeepSHAP 是强近似,在深层非线性网络中会偏离真实 SHAP 值。
速度:TreeSHAP 最快,毫秒到秒级输出结果;DeepSHAP 次之,一次前向传播加梯度计算即可;KernelSHAP 最慢,需要成千上万次模型推理,在图像等大模型上几乎无法接受。
模型依赖度:KernelSHAP 完全模型无关——给它任何函数,它都能用抽样实验来估计;TreeSHAP 限定了树模型家族(XGBoost、LightGBM、随机森林、CatBoost);DeepSHAP 专为神经网络设计,但通过适配层也能处理一些混合结构。
下面的对比表可以帮你快速形成直觉:
| 维度 | KernelSHAP | TreeSHAP | DeepSHAP |
|------|-----------|----------|----------|
| 精确度 | 近似(无偏) | 精确 | 近似(有偏) |
| 速度 | 慢 | 极快 | 快 |
| 模型范围 | 任意模型 | 树模型 | 神经网络 |
| 适用特征数 | 少-中 | 中-多 | 多-极大 |
| 实现复杂度 | 低 | 中 | 高 |
在评功会的语境下:KernelSHAP 是不计成本、反复做对照实验的学院派;TreeSHAP 是手握流程图、按部就班对账的精细派;DeepSHAP 是凭经验迅速拍板的高效率派。理解三者的对比,核心就是理解“工程权衡”——没有哪一种方法绝对最好,只有哪一种在特定场景下最合适。
工程实践选型
选型不是凭喜好,而是按模型类型和资源预算来定。我把这个决策过程总结成一张“行动清单”:
第一步:看模型类型。 如果你的线上模型是 XGBoost、LightGBM、随机森林这类树模型,二话不说选 TreeSHAP——它又快又精确,而且是标准库 shap.TreeExplainer 一行代码的事。如果模型是 PyTorch / TensorFlow 的神经网络,直接上 DeepSHAP(shap.DeepExplainer)。只有当你面对一个“说不清结构”的模型(比如自定义函数、集成的黑盒 API)时,才需要用 KernelSHAP(shap.KernelExplainer)做实验估计。
第二步:看预算。 KernelSHAP 虽然通用,但对特征维度和推理成本非常敏感。对高维稀疏特征(比如上千维的文本特征),KernelSHAP 的采样效率极低,可能出现“跑了十分钟还没收敛”的尴尬。此时宁可牺牲一点理论上的无偏性,也要选择更快的近似方法。
第三步:看业务需求。 在金融风控、医疗诊断等强监管场景,解释结果会被审计和合规部门仔细翻阅,优先选精确的 TreeSHAP;在内容推荐、广告排序这类对延迟敏感的场景,DeepSHAP 的秒级解释足以支撑线上运维;在模型开发的探索阶段,用 KernelSHAP 快速摸清特征方向也完全够用。
性能优化方面也有不少经验可循:对 TreeSHAP,可以限制 max_examples 来牺牲少量精度换速度;对 DeepSHAP,可以用少量背景样本(baseline dataset)来近似期望值;对 KernelSHAP,可以通过特征筛选先将维度压缩到 20 以内再运行。工具链上,shap 库是事实标准,同时支持三种 Explainer,配合 matplotlib 的 summary plot 与 waterfall plot,可以快速产出可视化报告。
评功会的最终结论:先看团队文化(模型结构)选对方法,再看时间预算(算力资源)定精度等级,最后依据目的(审计/调试/探索)决定输出形式。理解了这三步,你就能在任何项目中快速选出最合适的 SHAP 算法。
AI 应用场景
风控模型的事后审计
阶段:模型部署与监控
解决的问题:银行信贷模型被监管要求“可解释”。传统做法靠人工翻看特征重要度排序,但无法解释“为什么这个客户被拒绝”这一具体预测。TreeSHAP 可以对每个申请人的单次预测进行精确归因,告诉客户“收入是决定性因素,负债率次之”。
具体案例:某互联网银行使用 XGBoost 做贷前评分,监管抽查时要求逐单说明拒绝理由。工程师用 shap.TreeExplainer 批量计算存量客户的 SHAP 值,生成 waterfall 图,将“拒绝原因”转化为可读的自然语言报告,审计通过率大幅提升。
图像模型的故障定位
阶段:模型调试与迭代
解决的问题:医疗影像模型误诊时,医生和工程师都不知道是哪些像素导致了错误判断。DeepSHAP 对卷积神经网络逐层回传贡献,能够以热力图形式标出“异常激活区域”,帮助定位模型是学到了病灶特征,还是误学了拍摄水印。
具体案例:某医疗 AI 公司在肺炎 X 光筛查模型上线后出现假阳性偏高,工程师用 shap.DeepExplainer 对误诊样本生成归因热力图,发现模型过度关注底片角落的文字标注信息。团队随即对训练数据做裁剪增强,误诊率显著下降。
黑盒 API 的模型探索
阶段:模型选择与评估
解决的问题:采购第三方算法服务时,只能通过 API 调用获得预测结果,无法看到内部结构。KernelSHAP 凭借“模型无关”的特性,成为评估外部模型行为的最佳工具——通过大量采样实验,摸清供应商模型到底依赖哪些输入特征。
具体案例:某零售企业对比两款供应商的销量预测 API,使用 KernelSHAP 对 200 个历史样本分别计算特征归因,发现其中一款 API 对“折扣时间”这一特征异常敏感,而另一款则更均衡。据此选择更稳健的供应商,避免了大促期间预测失灵。
Python 演示
import shapimport numpy as npfrom sklearn.ensemble import RandomForestRegressorfrom sklearn.datasets import load_diabetes # 1. 加载数据并训练模型data = load_diabetes()X, y = data.data, data.feature_namesX_train, X_test = X[:300], X[300:]y_train, y_test = y[:300], y[300:] model = RandomForestRegressor(n_estimators=100, random_state=42)model.fit(X_train, y_train) # 2. TreeExplainer:精确且快速tree_explainer = shap.TreeExplainer(model)tree_shap_values = tree_explainer.shap_values(X_test[:5]) # 3. KernelExplainer:模型无关但计算偏慢kernel_explainer = shap.KernelExplainer(model.predict, X_train[:50])kernel_shap_values = kernel_explainer.shap_values(X_test[:5], nsamples=200) # 4. 对比第一个样本的归因结果print("feature names:", X)print("TreeSHAP first sample:", np.round(tree_shap_values[0], 4))print("KernelSHAP first sample:", np.round(kernel_shap_values[0], 4))print("mean abs diff:", np.round(np.abs(tree_shap_values[0] - kernel_shap_values[0]).mean(), 5))
import shap导入 SHAP 库,它是三种算法的统一工具集,TreeExplainer/KernelExplainer/DeepExplainer均在此库中。RandomForestRegressor(n_estimators=100, random_state=42)训练一个 100 棵树的随机森林,random_state固定保证实验可复现。shap.TreeExplainer(model)构造树解释器,直接读取随机森林的内部结构,无需额外采样即可精确计算 SHAP 值。shap.KernelExplainer(model.predict, X_train[:50])构造核解释器,传入模型的预测函数和 50 个背景样本,用于估计特征分布基线。kernel_explainer.shap_values(X_test[:5], nsamples=200)对前 5 个测试样本计算 SHAP 值,nsamples=200表示只做 200 次采样实验,控制计算量。np.abs(tree_shap_values[0] - kernel_shap_values[0]).mean()计算两种方法在第一个样本上的平均绝对差异,数值越小说明 KernelSHAP 的估计越接近 TreeSHAP 的精确解。
常见误区
误区拿到 SHAP 瀑布图后,看到某个特征的 SHAP 值是 0.6,另一个是 0.3,就认为“前者贡献是后者的两倍”,甚至把它们加起来当百分比看。
正解SHAP 值是有量纲的边际贡献,单位与预测值一致(如房价预测中的万元、概率预测中的 0-1 小数)。它表示“该特征把预测值从基线推高或拉低了多少”,而不是百分比份额。加性公理只保证所有特征 SHAP 值之和等于预测减基线,不保证归一化为 100%。
为何常见:因为瀑布图和力图的视觉效果很像“占比条形图”,加上部分教程会把 shap_values.abs().sum(axis=1) 归一化成百分比展示,导致初学者产生了错误联想。
误区既然 TreeSHAP 是精确解,KernelSHAP 是近似估计,那就永远不要对树模型用 KernelSHAP,误差一定很大。
正解KernelSHAP 在理论上是对 Shapley 值的无偏估计,当采样数足够多时,它会收敛到与 TreeSHAP 几乎相同的数值。实际使用中 KernelSHAP 与 TreeSHAP 的差异,更多来自采样随机性和背景样本选择,而非“方法本身的缺陷”。只是在同等算力下,TreeSHAP 更快地达到同等精度,所以实践中优先用 TreeSHAP。
为何常见:人们容易把“近似”等同于“不准”,而忽略了近似方法在大样本下可以逼近精确解这一统计学事实。
误区看到 DeepSHAP 输出漂亮的归因热力图,就认为它和 TreeSHAP 一样精确,可以放心用于监管审计。
正解DeepSHAP 建立在“局部线性化”假设之上,它假设神经元的激活函数可近似为线性,且各层贡献可线性叠加。在 ReLU、sigmoid 等非线性激活主导的深度网络中,这个近似会有系统性偏差。监管级场景若必须使用深度模型解释,建议同时用 KernelSHAP 在关键样本上做交叉验证。
为何常见:因为 DeepSHAP 的速度实在太快,且可视化效果与精确方法几乎无法肉眼区分,容易让人忽略其近似本质。
误区既然都叫"SHAP",算出的大致是同一个概念,那随便选一种解释器就行。
正解三种方法在数学定义上共享 Shapley 值目标,但适用范围、误差特性、算力需求差异极大。对树模型用 DeepSHAP 会因假设不匹配而失真,对神经网络用 TreeSHAP 根本无法运行,对高维黑箱用 KernelSHAP 可能等不到结果。选错方法会得出误导性的归因结论,甚至影响业务决策。
为何常见:shap 库的 API 高度统一,都是"Explainer + shap_values",初学者容易忽略背后的算法差异,把接口一致当成原理一致。
面试题
Q1. SHAP 值的核心思想来源于哪个数学概念?
- A.贝叶斯定理
- B.博弈论中的 Shapley 值← 正确答案
- C.熵权法
- D.梯度下降法
答案:B。SHAP 的全称是 SHapley Additive exPlanations,其根基正是博弈论中夏普利提出的 Shapley 值。它把特征看作合作博弈中的玩家,用所有“入伙顺序”下的边际贡献均值来公平分配预测值。贝叶斯定理是关于条件概率的,熵权法用于权重计算,梯度下降用于优化模型参数,均与 Shapley 值的起源无关。
Q2. 以下哪个性质属于 SHAP 分类中的加性属性?
- A.所有特征的 SHAP 值之和等于预测值减基线值← 正确答案
- B.所有特征的 SHAP 值都为正数
- C.特征数量越多 SHAP 值越大
- D.SHAP 值只与模型精度有关
答案:A。加性(Additivity)即所有特征的贡献相加恰好等于模型的预测输出与基线(通常是训练集预测均值)之差。这正是 SHAP 能画出瀑布图、力图等可视化形式的基础。特征贡献可正可负,SHAP 值与特征数量无必然关系,也与模型整体精度无直接关联。
Q3. KernelSHAP 计算特征贡献的核心策略是什么?
- A.直接读取决策树路径
- B.加权线性回归拟合黑箱输出← 正确答案
- C.沿神经网络逐层反传
- D.随机丢弃特征后求均值
答案:B。KernelSHAP 通过对特征子集采样、计算各子集对应的模型输出,然后以特殊核权重做加权线性回归,回归系数就是各特征的 SHAP 值。直接读树路径是 TreeSHAP 的做法,沿层反传是 DeepSHAP 的做法,随机丢弃特征求均值是置换重要性而非 SHAP。
Q4. TreeSHAP 在树模型上相比 KernelSHAP 的主要优势是什么?
- A.支持非线性神经网络
- B.精确且计算速度快← 正确答案
- C.不需要背景样本
- D.可以处理文本数据
答案:B。TreeSHAP 利用树的递归结构,在多项式时间内精确计算 SHAP 值,无需大量采样实验。它虽然通常需要背景样本用于定义条件期望,但这是超参数而非本质缺点。支持神经网络的是 DeepSHAP,处理文本也不是 TreeSHAP 的独有能力。
Q5. DeepSHAP 的核心近似假设是什么?
- A.决策树路径互不相交
- B.神经元激活近似线性← 正确答案
- C.特征之间完全独立
- D.模型输出服从正态分布
答案:B。DeepSHAP 基于 DeepLIFT 的“线性传播”思路,假设每层神经元的输出变化可以近似线性地分配到输入,再与 SHAP 基线对齐。这一假设在强非线性激活下会产生偏差。树路径不相交是决策树的结构假设,特征独立和输出正态分布都不是 DeepSHAP 的必要前提。
Q6. 在特征维度较高(如 500 维)的黑箱模型上,优先推荐哪种解释方法?
- A.TreeSHAP
- B.DeepSHAP← 正确答案
- C.KernelSHAP
- D.LIME
答案:B。KernelSHAP 在采样时需要估计特征组合的边际贡献,维度一高采样空间爆炸、计算非常缓慢。DeepSHAP 虽然也是近似,但一次前向与反向传播即可完成归因,对高维网络非常高效。TreeSHAP 只适用于树模型,题目说的是任意黑箱。LIME 不是 SHAP 方法且稳定性更差。
Q7. 树模型(如 XGBoost)做可解释性分析时,最优的 SHAP 选择是?
- A.KernelExplainer
- B.DeepExplainer
- C.TreeExplainer← 正确答案
- D.GradientExplainer
答案:C。shap.TreeExplainer 专为树模型设计,能精确且极快地计算 SHAP 值。KernelExplainer 虽然通用但在树模型上没有必要;DeepExplainer 面向神经网络;GradientExplainer 基于梯度近似,主要用于深度学习模型。对树模型追求精确与效率,TreeExplainer 是不二之选。
Q8. 关于 KernelSHAP 的局限,以下说法正确的是?
- A.计算开销大,需要多次模型推理← 正确答案
- B.无法处理非数值型特征
- C.对高维特征收敛缓慢← 正确答案
- D.只能解释线性模型
答案:AC。KernelSHAP 需要大量采样来逼近 Shapley 值,因此推理次数多、开销大;特征维度越高,需要覆盖的组合空间越大,收敛越慢。它模型无关,可以处理数值型与类别型特征(类别需编码),也天然支持非线性模型,因此 B、D 错误。
Q9. 关于 TreeSHAP 的特点,正确的描述是?
- A.对树模型给出精确 SHAP 值← 正确答案
- B.时间复杂度随叶子数和深度增长可控← 正确答案
- C.只适用于浅层决策树
- D.支持随机森林、XGBoost、LightGBM← 正确答案
答案:ABD。TreeSHAP 在树模型上精确计算 SHAP 值,复杂度为 O(TLD²),对集成树同样高效,因此不会限制浅层。它内置支持随机森林、XGBoost、LightGBM、CatBoost 等主流树库的解析接口。选项 C 错误,TreeSHAP 对深度较大的树依然有效。
Q10. 某团队需要对一个部署在 GPU 上的图像分类 CNN 做实时归因解释,合理的方案包括?
- A.使用 DeepExplainer 生成热力图← 正确答案
- B.使用 TreeExplainer 精确计算
- C.减少 baseline 样本数加速 DeepSHAP← 正确答案
- D.对每个测试样本运行 KernelSHAP 全量采样
答案:AC。CNN 是深度网络,DeepSHAP 可通过一次前向加反向传播给出快速近似解释,是实时场景的合理选择;减少 baseline 样本可以有效降低计算量。TreeExplainer 无法解析 CNN;KernelSHAP 全量采样在图像模型上耗时巨大,无法满足实时要求。