想象你是医院新上任的“医疗质量监督员”。走廊里有位 AI 医生,每天看诊几百个病人,每份病历后面都跟着一段诊断理由:“因为血糖值偏高(贡献 0.6),加上体重指数异常(贡献 0.3),所以判定为糖尿病风险。”理由听起来头头是道,可你敢直接签字放行吗?如果这位 AI 医生今天说是血糖的锅,明天又说是基因的锅,换一套诊断系统结果完全不同,你会不会怀疑它其实在“瞎编理由”?可解释性测试,就是医院监督员设计的一套“口供考核流程”;而归因一致性,就是考核这位 AI 医生的解释在多次复查、不同专家会诊、甚至有人故意捣乱时,是否始终前后咬合、口径统一。本文就从“口供质检”这一生活场景出发,带你完整搭起模型解释的信任体系。

岗位关联

掌握可解释性测试与归因一致性,你将能为 AI 落地提供“可被信任的解释”,成为衔接算法工程师、业务方与监管层的核心质量守门人。

目录
  1. 可视化演示
  2. 测试设计:给 AI 医生立“口供考核标准”
  3. 归因一致性:同一份病历,理由不能“见人下菜”
  4. 稳定性度量:让 AI 医生“十次诊断一个口风”
  5. 跨方法对比:中医说寒、西医说炎,到底信谁?
  6. 对抗检测:有人故意捣乱时,口供还能守住吗?
  7. 对比流程:两名解释员,谁能拿到驻场资格?
  8. 测试套件:把口供质检做成标准化流水线
  9. 实战案例:信贷风控模型的可解释性体检
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

动态展示IG/SHAP/LIME/Grad四种归因方法对同一输入的特征贡献分布,切换稳定性/跨方法/忠实性/对抗性四种测试维度,观察归因一致性与差异。

本节配有交互动效(进入视口后自动加载,约 3KB)。

测试设计:给 AI 医生立“口供考核标准”

医院监督员上任第一件事,不是听 AI 医生解释,而是先设计一套考核规则:考什么、怎么考、合格线在哪。如果连“口供是否可信”的标准都没有,后面所有测试都无从谈起。同样,可解释性测试的第一步就是测试设计——明确我们要验证解释的哪些能力,以及如何组织验证流程。

技术层面,一个可解释性测试方案通常包含三个部分:测试目标(解释是否真实反映模型决策依据)、测试维度(稳定性、一致性、鲁棒性)、验证方案(数据选取、扰动范围、统计口径)。测试维度越多,覆盖越全,但成本也越高。因此我们常用“覆盖率”来量化测试设计的完整程度。

医院监督员的考核表越完整,越能堵住 AI 医生“打太极”的漏洞;测试覆盖率越高,我们对解释质量的信心就越足。

覆盖率=∣D已覆盖∣∣D全部∣×100%\rm 覆盖率 = \frac{|D_{已覆盖}|}{|D_{全部}|} \times 100\%
覆盖率告诉我们考核设计是否够全面:已覆盖的测试维度占应覆盖维度的比例。
  1. 已覆盖维度集分子表示当前测试方案实际覆盖的测试维度集合大小,比如已测了稳定性、一致性两个维度。
    ∣D已覆盖∣|D_{已覆盖}|
  2. 全部维度集分母表示理想情况下应当覆盖的全部维度集合大小,例如稳定性、一致性、鲁棒性、对抗性等。
    ∣D全部∣|D_{全部}|
  3. 百分比换算两个集合大小相除后再乘 100%,得到一个直观的“测试完整度”分数。
    ×100%\times 100\%

归因一致性:同一份病历,理由不能“见人下菜”

医生说“因为你血糖高,所以你有风险”。可当同一份病历换了台机器再输入一次,解释却变成“因为你体重超标,所以有风险”。理由前后不一,监督员立刻会把它记入黑名单。什么是归因?就是模型给每个输入特征分配的“责任权重”——在诊断场景里,就是每个症状对结论的贡献度。归因一致性则要求:在相同输入下,解释方法产生的归因结果应当稳定、可复现。

在算法上,归因一致性通常通过“扰动—对比”来度量。我们有一个原始输入 x,模型给出归因向量 a;随后对 x 施加微小扰动得到 x′,再计算扰动后的归因向量 a′。两个向量的距离越小,说明解释越“口径统一”。

监督员每天抽查病历:同一份病例反复读入、反复生成解释,如果归因一致性低于合格线,这份口供就必须打回去重写。

C(a,a′)=1−∥a−a′∥2∥a∥2+εC(a, a') = 1 - \frac{\|a - a'\|_2}{\|a\|_2 + \varepsilon}
这个公式把两个归因向量的差异转化成 0 到 1 之间的一致性分数,越接近 1 越一致,越接近 0 越离谱。ε 是防止除零的小常数。
  1. 原始归因向量原始输入 x 对应的特征归因,例如血糖 +0.6、体重 +0.3。
    a=Attribution(x)a = \text{Attribution}(x)
  2. 扰动后归因向量对 x 加入微小扰动后重新计算得到的归因。
    a′=Attribution(x′)a' = \text{Attribution}(x')
  3. L2 距离归一化用欧几里得距离衡量两个向量差异,再除以原始归因的长度,消除量纲影响。
    ∥a−a′∥2∥a∥2+ε\frac{\|a - a'\|_2}{\|a\|_2 + \varepsilon}
  4. 转为一致性分数用 1 减去差异占比,差异越小,分数越高。
    1−⋯⋯1 - \frac{\cdots}{\cdots}

稳定性度量:让 AI 医生“十次诊断一个口风”

一位医生面对同一病人,被问了十次、每次略有干扰,十次回答都大同小异,这说明他内心有把握;如果十次里五次说东、五次说西,那他的解释就毫无价值。稳定性度量就是量化“AI 医生十次口供是否一个口风”的体检项目——通过对输入施加多次随机扰动,收集一组归因结果,计算这些归因之间的波动程度。

常用的指标是计算多次扰动归因与原始归因之间的平均相对偏差。偏差越小,稳定性越高;偏差越大,说明解释方法对输入噪声高度敏感,随时可能“翻供”。

监督员给 AI 医生安排十次“突击复述”,十次口供越一致,稳定性分数越高,这份解释就越值得信任。

S=1−∑i=1n∥a(xi′)−a(x)∥2n⋅∥a(x)∥2+εS = 1 - \frac{\displaystyle\sum_{i=1}^{n}\|a(x_i') - a(x)\|_2}{n \cdot \|a(x)\|_2 + \varepsilon}
稳定性 S 将 n 次扰动后的平均偏离程度转换为 0~1 的分数,分值越高代表解释越稳。
  1. 单次扰动偏离每次对输入加噪声后,计算新归因与原始归因的 L2 距离。
    ∥a(xi′)−a(x)∥2\|a(x_i') - a(x)\|_2
  2. 求平均偏离把 n 次扰动的偏离加总并除以 n,得到期望偏差水平。
    ∑i=1n∥a(xi′)−a(x)∥2n\frac{\sum_{i=1}^{n}\|a(x_i') - a(x)\|_2}{n}
  3. 归一化常数分母再用原始归因范数加 ε 归一化,使分数不受特征尺度影响。
    ⋅∥a(x)∥2+ε\cdot \|a(x)\|_2 + \varepsilon
  4. 取补集得稳定性1 减去归一化偏差,偏差越小,稳定性越接近 1。
    1−⋯⋯1 - \frac{\cdots}{\cdots}

跨方法对比:中医说寒、西医说炎,到底信谁?

同样是判断一个病人“体内有炎症”,中医的归因是“寒气重”,西医的归因是“白细胞偏高”。两种归因体系完全不同,但我们希望它们在“谁更相关”上能达成共识——如果两种方法给出的特征重要性排序高度接近,说明解释结论经得起交叉验证。跨方法对比的核心,就是比较不同可解释性方法(如 LIME、SHAP、梯度归因)在同一数据上的归因结果。

最常用的手段是相关性分析:把两种方法对同一样本集的归因看作两个序列,计算它们之间的 Pearson 相关系数。相关系数接近 1,说明两种方法“英雄所见略同”;接近 0 甚至负数,说明其中至少一种方法在“胡说八道”。

医院开“多学科会诊”时,中医和西医的意见越一致,诊断结论越可信;跨方法对比就是 AI 世界的多学科会诊,共识度越高,解释越靠谱。

ρ=∑i=1n(ai−aˉ)(bi−bˉ)∑i=1n(ai−aˉ)2∑i=1n(bi−bˉ)2\rho = \frac{\sum_{i=1}^{n}(a_i - \bar{a})(b_i - \bar{b})}{\sqrt{\sum_{i=1}^{n}(a_i - \bar{a})^2}\sqrt{\sum_{i=1}^{n}(b_i - \bar{b})^2}}
ρ 是两种归因方法的皮尔逊相关系数,取值范围 [-1, 1],越接近 1 代表跨方法一致性越好。
  1. 去均值化从方法 A 与方法 B 的归因值中各自减去均值,消除系统性偏移。
    (ai−aˉ), (bi−bˉ)(a_i - \bar{a}),\ (b_i - \bar{b})
  2. 协方差分子两个去均值序列对应相乘并求和,衡量同向变化程度。
    ∑i=1n(ai−aˉ)(bi−bˉ)\sum_{i=1}^{n}(a_i - \bar{a})(b_i - \bar{b})
  3. 方差分母两个序列各自平方和开根号后相乘,作为归一化因子。
    ∑i=1n(ai−aˉ)2∑i=1n(bi−bˉ)2\sqrt{\sum_{i=1}^{n}(a_i - \bar{a})^2}\sqrt{\sum_{i=1}^{n}(b_i - \bar{b})^2}
  4. 归一化相关系数分子除以分母得到无量纲的相关系数。
    ρ=⋯⋯\rho = \frac{\cdots}{\cdots}

对抗检测:有人故意捣乱时,口供还能守住吗?

总有人想钻空子。监督员会遇到故意隐瞒症状的病人,甚至有人篡改化验单数据来误导 AI 医生。如果医生解释被这些“有心人”一搅就翻供,那这套 AI 系统就不适合在医院里上线。对抗检测专门负责这种场景:构造对抗样本,观察模型归因是否发生不合理的大幅变化。

攻击手法有很多种,比如给输入加上人眼不可察觉的扰动,却让解释彻底改变方向。为此我们要统计在对抗样本下,归因符号被反转的比例:如果所有特征的归因符号在对抗前后保持不变,说明解释的方向感很强,鲁棒性高。

监督员会专门找“坏病人”做压力测试:你越是想误导 AI,它的解释越不能怯场。对抗检测就是这场“反诱导”考场上的监考标准。

R=1N∑i=1NI(sgn⁡(ai)=sgn⁡(aiadv))R = \frac{1}{N}\sum_{i=1}^{N}\mathbb{I}\big(\operatorname{sgn}(a_i) = \operatorname{sgn}(a_i^{\rm adv})\big)
鲁棒性 R 是归因方向保持不变的样本比例,取值范围 0~1,越高越抗攻击。
  1. 原始归因符号查看第 i 个特征在正常输入下的归因正负方向。
    sgn⁡(ai)\operatorname{sgn}(a_i)
  2. 对抗归因符号查看同一特征在对抗输入下的归因方向。
    sgn⁡(aiadv)\operatorname{sgn}(a_i^{\rm adv})
  3. 逐特征比对指示函数 I(·) 返回相同为 1、不同为 0,逐特征累加。
    I(sgn⁡(ai)=sgn⁡(aiadv))\mathbb{I}(\operatorname{sgn}(a_i) = \operatorname{sgn}(a_i^{\rm adv}))
  4. 平均稳定率将比对结果求和后除以特征总数 N,得到方向保持率。
    R=1N∑⋯R = \frac{1}{N}\sum \cdots

对比流程:两名解释员,谁能拿到驻场资格?

医院同时引入两名 AI 解释员,一个来自厂商 A,一个来自厂商 B。想把它们都留下,就得让它们公平比试一场。A/B 测试流程就是解释方法的“擂台赛规则”:在同一批样本上跑同一套扰动和检测流程,分别评估两种方法的归因稳定性和一致性,再比较得分。

设计流程时要注意三个关键点:一是样本分配要保证两组方法面对相同的数据集;二是指标选择要统一用稳定性分数、跨方法相关系数等可量化的口径;三是结论判定不能只看点估计,还要关注方差和置信区间。我们用两种方法得分的均值差作为 A/B 对比的核心效应量。

擂台赛规则越公平,胜者越货真价实。A/B 对比让每一次解释方法的“入职面试”都透明、公正。

ΔA/B=1nA∑i=1nASA(i)−1nB∑j=1nBSB(j)\Delta_{A/B} = \frac{1}{n_A}\sum_{i=1}^{n_A}S_A^{(i)} - \frac{1}{n_B}\sum_{j=1}^{n_B}S_B^{(j)}
Δ 大于 0 说明方法 A 平均表现优于方法 B,小于 0 则相反;绝对值越大差距越显著。
  1. A 组平均得分方法 A 在多个测试样本上的稳定性得分求平均。
    SˉA=1nA∑i=1nASA(i)\bar{S}_A = \frac{1}{n_A}\sum_{i=1}^{n_A}S_A^{(i)}
  2. B 组平均得分方法 B 的稳定性得分求平均。
    SˉB=1nB∑j=1nBSB(j)\bar{S}_B = \frac{1}{n_B}\sum_{j=1}^{n_B}S_B^{(j)}
  3. 均值差效应量两组均值相减,得到 A/B 对比差异。
    ΔA/B=SˉA−SˉB\Delta_{A/B} = \bar{S}_A - \bar{S}_B

测试套件:把口供质检做成标准化流水线

监督员每天要审视几百份诊断口供,若每份都手工抽查,不仅效率低还会漏检。于是他把考核表、扰动工具、统计脚本、报告模板整合成一套可解释性测试套件,只要输入一个模型和一批样本,流水线就自动跑完所有测试项并产出报告。

套件通常包含三层结构:用例层(组织多种扰动配置和对抗样本)、执行层(并行调用解释方法、批量计算归因和评估指标)、报告层(可视化归因差异、打分、给出通过/不通过结论)。为了综合多个维度的表现,套件可以定义加权综合得分:

监督员把口供质检打造成标准流水线:案例进来,报告出去,质量结论一目了然。测试套件就是这条流水线的整套设备。

Q=∑j=1Mwj×sj∑j=1MwjQ = \frac{\sum_{j=1}^{M} w_j \times s_j}{\sum_{j=1}^{M} w_j}
Q 是综合质量分,其中 s_j 是第 j 项测试得分,w_j 是该项权重;加权平均让不同维度可以按业务重要性融合。
  1. 逐项得分乘权重把每项测试得分 s_j 与权重 w_j 相乘,得到加权贡献。
    ∑j=1Mwj×sj\sum_{j=1}^{M} w_j \times s_j
  2. 权重之和所有测试项的权重相加,保证结果被归一化。
    ∑j=1Mwj\sum_{j=1}^{M} w_j
  3. 加权平均两者的比值就是综合质量分 Q。
    Q=⋯⋯Q = \frac{\cdots}{\cdots}

实战案例:信贷风控模型的可解释性体检

某消费金融公司上线了一款信贷审批模型,业务方要求:给每个拒贷客户生成“为什么被拒”的短信解释。用户投诉量一直很高,因为解释常常“前后矛盾”。质量监督团队引入可解释性测试套件,对模型做了一轮完整“体检”:首先设计覆盖五大维度的测试方案;然后对同一批客户样本进行多重扰动,计算归因一致性;再用 LIME 与 SHAP 做跨方法相关性分析;最后构造对抗样本检查解释稳定性。

结果发现:原解释在微小扰动下归因一致性仅有 0.42,跨方法相关系数只有 0.3,属于“重度不靠谱”。团队随后将解释模块替换为稳定性更高的 SHAP 方案,并对输入特征做了归一化预处理,再次跑测试套件后一致性提升到 0.88,跨方法相关系数提升到 0.85,客户投诉率下降 60%。此后每个模型版本上线前都会自动执行套件里的测试集,实现“解释质量门禁”。

这个案例正是“口供质检”流水线的真实落地:从诊断到整改再到持续监控,归因一致性成为每一次模型发版的硬指标。

AI 应用场景

信贷风控解释合规审计

阶段:模型测试与监控

解决的问题:传统做法只检查模型预测准确度,却无法回答“为什么拒绝用户贷款”。可解释性测试通过归因一致性检测,确保每次拒绝理由稳定、可复现且能通过监管抽查,避免因解释前后矛盾引发客诉和合规风险。

具体案例:某消费金融公司对逻辑回归信贷模型叠加 SHAP 解释模块,每次审批后把归因向量存入审计日志;风控平台每日跑一次归因一致性测试,对高频拒贷客户样本施加 0.01~0.05 尺度扰动。某次测试发现模型对“征信查询次数”特征的归因方向在扰动后发生翻转,团队及时修正特征预处理逻辑,通过了银行资方审计。

医疗影像辅助诊断的解释保障

阶段:模型质量验证

解决的问题:影像 AI 给医生提供病灶标注和归因热力图,但不同解释方法给出的热力图差异较大,影响医生决策信任。跨方法相关性分析与稳定性度量帮助团队挑选最稳健的解释方法。

具体案例:某医疗 AI 团队在肺结节检测模型上对比 Grad-CAM 与 SHAP 两种解释方法,在 500 张 CT 影像上计算归因一致性:Grad-CAM 平均稳定性 0.72,SHAP 为 0.90;跨方法相关系数仅 0.54。最终选择 SHAP 作为默认解释方案,并将其稳定性阈值设为 0.85,低于阈值的模型版本不得进入临床试用。

推荐系统归因一致性监控

阶段:线上模型监控

解决的问题:推荐系统的“猜你喜欢”解释常常让用户觉得“根本不了解我”,因为归因在不同浏览会话间抖动明显。归因一致性测试可以持续监控线上解释的稳定性,发现特征扰动前后的归因漂移。

具体案例:某电商平台对推荐排序模型部署解释模块后,发现当用户从 Wi-Fi 切换到 4G 网络时,模型归因向量发生剧烈变化(一致性从 0.9 掉到 0.5)。测试套件定位到网络环境特征被模型过度依赖,团队删减该特征并重新训练后,一致性回归稳定。

Python 演示

python72 行
import numpy as npfrom sklearn.linear_model import LogisticRegressionfrom sklearn.model_selection import train_test_split  def generate_patient_data(n_samples=300):    # 症状特征: [血糖, 脉搏, 体温, 压差]    rng = np.random.default_rng(42)    X = rng.normal(size=(n_samples, 4))    y = (X[:, 0] * 1.2 + X[:, 2] * 0.8 + rng.normal(size=n_samples) * 0.3) > 0    return X, y.astype(int)  def fit_lr(X, y):    model = LogisticRegression(max_iter=1000)    X_train, X_test, y_train, y_test = train_test_split(        X, y, test_size=0.2, random_state=42    )    model.fit(X_train, y_train)    return model, X_test, y_test  def attribution_lr(model, x):    coef = model.coef_[0]    return x * coef  # 特征值乘以权重 = 逐样本归因  def perturb_input(x, noise_scale=0.1, seed=7):    rng = np.random.default_rng(seed)    return x + rng.normal(size=x.shape, scale=noise_scale)  def consistency_score(attr1, attr2):    denom = np.linalg.norm(attr1) + 1e-9    return 1 - np.linalg.norm(attr1 - attr2) / denom  def cross_method_rho(coef_global, local_attributions):    # 全局方法A取系数绝对值, 局部方法B取样本平均归因绝对值    method_a = np.abs(coef_global)    method_b = np.mean(np.abs(local_attributions), axis=0)    a = method_a - method_a.mean()    b = method_b - method_b.mean()    return float(a.dot(b) / (np.linalg.norm(a) * np.linalg.norm(b) + 1e-9))  def main():    X, y = generate_patient_data()    model, X_test, y_test = fit_lr(X, y)    print("模型测试集准确率: %.3f" % model.score(X_test, y_test))     sample = X_test[0]    base_attr = attribution_lr(model, sample)    pert_x = perturb_input(sample)    pert_attr = attribution_lr(model, pert_x)    c_score = consistency_score(base_attr, pert_attr)    print("原始归因:", np.round(base_attr, 3))    print("扰动归因:", np.round(pert_attr, 3))    print("归因一致性: %.3f" % c_score)     local_attrs = attribution_lr(model, X_test[:50])    rho = cross_method_rho(model.coef_[0], local_attrs)    print("跨方法相关系数: %.3f" % rho)     if c_score >= 0.8 and rho >= 0.7:        print("结论: 解释可信任,通过测试")    else:        print("结论: 解释不稳定,需改进解释方案")  if __name__ == "__main__":    main()
目的:对一个逻辑回归模型实现“解释口供质检”,同时输出归因一致性分数与跨方法相关系数,作为是否通过解释测试的判定依据。
  1. base_attr = attribution_lr(model, sample)对单个患者样本计算每个特征的逐样本归因,相当于 AI 医生给出的“口供”。
  2. pert_x = perturb_input(sample)对该样本施加随机扰动,模拟“同一病人换台机器再测一次”。
  3. c_score = consistency_score(base_attr, pert_attr)用 L2 距离衡量原归因和扰动归因的相似度,得到一致性分数。
  4. method_a = np.abs(coef_global)把逻辑回归的全局权重绝对值作为方法 A 的特征重要性。
  5. method_b = np.mean(np.abs(local_attributions), axis=0)把样本级归因的平均绝对值作为方法 B 的重要性,做跨方法对比。
  6. a.dot(b) / (np.linalg.norm(a) * np.linalg.norm(b))两个方法归因序列的余弦相似度,等价于相关系数的一种实现。

常见误区

误区“我测了模型的解释,扰动前后归因几乎不变,那这个解释肯定是对的,可以放心拿去给用户看。”

正解一致性只说明“复现稳定”,和“事实正确”是两码事。就像一名医生天天都坚持说“你感冒了”,虽然口供很稳定,但病人得的是肺炎——稳定的错判比偶发的错判更危险。要确认解释是否反映模型真实决策,还需要结合模拟输入、特征遮挡实验和领域知识做交叉验证。

为何常见:多数测试工具优先展示稳定性指标,容易让人把“数字高”和“质量好”画等号,忽略了正确性维度。

误区“我们模型已经接入了 SHAP,每个预测都有解释图,可解释性测试就完成了。”

正解SHAP、LIME 这类工具只是“解释生成器”,它们告诉你归因是什么,但不会告诉你归因是否可靠。可解释性测试是另一层工作:要验证这些工具生成的归因在扰动下不翻车、在不同方法间不分裂、在对抗样本下不失效。就像请了翻译员不代表沟通一定顺畅,你还得考核翻译员的译文是否前后一致、不夹带私货。

为何常见:工程团队常把“有解释”当作“可信解释”,对归因本身的二次检验意识薄弱。

误区“我用高斯噪声扰动输入测了 100 次,归因很稳定,我们的模型不怕攻击。”

正解随机噪声只能检验一般稳定性,对抗攻击是针对性构造的“坏扰动”——它是被优化出来的、能让归因方向急剧翻转的极端输入。把随机扰动当成对抗检测,就像监督员只加了点辣椒测试厨师的菜,却没想过有人会在汤里放泻药。真正的对抗检测需要用对抗样本生成算法(如 FGSM 或定向扰动搜索)来构造攻击输入。

为何常见:随机扰动实现成本低、理解简单,容易被当作“压力测试”的低配替代品。

误区“方法 A 的平均稳定性得分比方法 B 高 0.03,所以 A 一定更好,直接全量切换。”

正解平均分只是点估计,忽略方差就下结论很不稳妥。一组数据是“每项都稳定在 0.88 附近”,另一组是“一半 0.9、一半 0.7”,均值可能相同但可靠性天差地别。A/B 对比要看置信区间、样本量、效应量和显著性,必要时做配对检验,否则极易被单一样本波动误导。

为何常见:工程交付节奏快,团队习惯用简洁的均值对比快速决策,容易把统计严谨性省掉。

面试题

Q1. 归因一致性主要衡量解释方法在哪方面的表现?

单选题 · easy

  • A.预测准确率高低
  • B.相同输入下产生稳定可复现的归因结果← 正确答案
  • C.模型训练速度是否够快
  • D.特征数量是否足够多

答案:B。归因一致性衡量“同一输入反复解释时结果是否稳定”,对应选项 B。它不关心预测准不准(A),也不关心训练性能(C)或特征个数(D)。就像监督员核查 AI 医生口供是否前后咬合,而不是考核医生开药速度。

Q2. 在归因一致性计算公式中,ε 的作用是什么?

单选题 · easy

  • A.让分子变大
  • B.控制模型学习率
  • C.防止分母为零的微小常数← 正确答案
  • D.提高梯度计算精度

答案:C。ε 是一个极小的正数(如 1e-9),加到分母上为了避免当原始归因范数为 0 时出现除零错误。它与学习率、梯度精度无关。

Q3. 稳定性度量中,对输入做多次扰动后计算归因波动,以下哪种结果说明稳定性高?

单选题 · mid

  • A.多次扰动归因与原始归因的平均 L2 距离较小← 正确答案
  • B.多次扰动归因与原始归因的平均 L2 距离较大
  • C.每次扰动后归因方向都随机变化
  • D.每次扰动后模型输出的类别完全不同

答案:A。稳定性度量的核心是“偏差越小越稳”。平均 L2 距离小,说明多次扰动间归因变化轻微,口供一致;距离大或方向随机则说明解释脆弱易变。选项 D 描述的是预测不稳定而非解释不稳定。

Q4. 跨方法对比中,Pearson 相关系数接近 -1 表示什么?

单选题 · mid

  • A.两种解释方法完全一致
  • B.一种方法归因越高另一种方法归因越低← 正确答案
  • C.两种方法都没有解释能力
  • D.一种方法是另一种方法的子集

答案:B。相关系数为 -1 表示两种归因序列完全负相关:一种方法认为最重要的特征,另一种方法认为最不重要。这预示至少一种解释与事实脱节,需要调谐方法或重新验证,就像中医和西医对一个病人的判断完全对立。

Q5. 下列哪些做法可以增强可解释性测试的覆盖度?

多选题 · mid

  • A.增加扰动类型(随机噪声、对抗噪声、特征遮挡)← 正确答案
  • B.引入多种解释方法进行交叉验证← 正确答案
  • C.仅测试一个样本以节省资源
  • D.对多个业务子群体分别跑测试← 正确答案

答案:ABD。覆盖率取决于测试维度是否全面:多样扰动(A)、跨方法对比(B)、不同子群体样本(D)都能提升覆盖度。只测单个样本(C)会漏掉大量边界情况,是负面操作。

Q6. 对抗检测中,用指示函数统计归因符号保持一致的比值,该指标衡量的是?

单选题 · mid

  • A.归因幅值变化
  • B.归因方向是否被攻击翻转← 正确答案
  • C.模型预测概率的置信度
  • D.解释方法的计算耗时

答案:B。符号保持率考察的是对抗样本是否让归因的正负方向发生反转,方向是用户理解“为什么被拒”的关键。幅值变化也重要,但它不是符号保持率直接衡量的内容。

Q7. 在 A/B 对比测试解释方法时,以下哪些因素是必须考虑的?

多选题 · hard

  • A.两种方法在相同样本集和相同扰动配置下运行← 正确答案
  • B.比较均值的同时也要看方差和置信区间← 正确答案
  • C.只要单点得分高就直接上线
  • D.样本分配要随机且覆盖多个业务子群体← 正确答案

答案:ABD。A/B 测试讲究公平对照(A)、统计可靠性(B)和样本代表性(D)。单凭一个点估计就上线(C)忽略了方差风险,是常见的统计误区。

Q8. 某团队用测试套件评估两个解释模块,模块 X 稳定性 0.95、跨方法系数 0.3;模块 Y 稳定性 0.7、跨方法系数 0.85。团队应优先选谁?

单选题 · hard

  • A.模块 X,因为稳定性至少可以复现
  • B.模块 Y,因为跨方法一致性更能证明解释有效
  • C.模块 X,因为稳定性权重更高
  • D.无法直接判定,需要结合业务加权综合评分← 正确答案

答案:D。单一指标无法覆盖解释质量全貌。模块 X 复现性好但可能偏离真实决策,模块 Y 更经得起交叉验证但波动较大。测试套件应给各维度加权后综合比较,不能凭单指标拍板。这就是综合得分公式的意义。

Q9. 测试套件中的“报告归档”环节主要作用是?

单选题 · easy

  • A.把每次测试的输入样本保存下来发红包
  • B.记录测试配置、指标结果和通过/不通过结论,便于追溯← 正确答案
  • C.替代模型训练流程
  • D.删除历史测试记录以节省存储

答案:B。报告归档是对测试过程的完整留痕:跑过什么用例、用什么参数、得了多少分、是否放行。没有归档,版本迭代后无法回溯“上一版为什么通过”,质量门禁就形同虚设。

Q10. 以下哪些属于可解释性测试的核心维度?

多选题 · easy

  • A.归因稳定性(多次扰动不翻供)← 正确答案
  • B.跨方法一致性(不同方法结论吻合)← 正确答案
  • C.对抗鲁棒性(诱导攻击下解释不变形)← 正确答案
  • D.模型存储格式是否够小

答案:ABC。稳定性、一致性、鲁棒性是本文介绍的三大核心维度。模型大小(D)属于工程部署效率范畴,与解释质量测试无关。