资讯动态

可解释性与对抗样本:模型安全视角下的核心方法与工程实践

发布时间:2026/10/14 4:20:06 来源:尧图企业网站定制
很多人可能都有过这样的体验模型在测试集上准确率看着还行但给人看的决策理由却很“飘”。比如给一张医疗影像模型说“患病”让医生签字可它依据的是什么区域解释不清楚。这种不透明性在对抗样本面前会被放大得更厉害——攻击者稍微改动几个像素模型预测直接反转而且人眼几乎看不出改动这时再去谈解释就更像是在安慰自己。我最近读了一篇关于模型可解释性方法、应用与安全研究的综述恰好把“可解释性”和“对抗样本”这两条线拧到了一起。这篇综述不是单讲怎么画热力图而是把解释方法当作一个观测模型行为的窗口同时把对抗样本当作检验解释可靠性的试金石。如果你在做模型部署、安全评测或者可解释性相关的研究这篇内容值得花点时间读透它能帮你省掉不少找方法和踩坑的时间。接下来我会拆开讲它的核心思路、方法体系、应用场景以及实际复现时容易掉的坑。1. 当对抗样本撞上可解释性这篇综述到底在讲什么1.1 一句话概括论文核心这篇综述想做一件看起来简单、做起来很麻烦的事把“模型为什么这么判”和“模型怎么被欺骗”放在同一个框架下去讨论。以前绝大多数工作要么只研究解释方法要么只研究对抗攻击与防御两边各做各的。但这篇综述指出解释方法本身也可能被攻击者操控或者说解释结果的不稳定性恰恰暴露了模型内部表征的脆弱性。因此作者主张把可解释性当成一个安全分析的入口用解释来检测、理解甚至缓解对抗样本带来的风险。再说得直白一点对抗样本研究的是“什么东西让模型犯错”而可解释性研究的是“模型凭什么认为自己对了”。两者放到一起情况就变成——攻击者不光能让模型犯错还能让模型犯错时给出一个看似合理的解释这在自动化决策系统里是件非常危险的事情。1.2 为什么“可解释性”和“对抗鲁棒性”必须放在一起聊很多做工程的同学可能觉得可解释性就是一个锦上添花的功能线上模型稳定跑着没人看那些热力图。这个想法在有对抗样本存在的场景下是不成立的。我举个例子你就明白了。假设你有一个信贷审批模型拒绝了一个用户的贷款申请。合规要求你给出解释于是你调用某个解释方法得到结果说“因为收入字段偏低”看起来合理。但攻击者拿到这个解释接口后可以反向利用解释结果构造对抗样本让模型对某些用户一律给出“收入不足”的解释或者更隐蔽地让解释分布在某个敏感维度上产生偏差。这就是解释被攻击的情况之一——解释本身成了信息泄露通道甚至成了攻击者的跳板。反过来解释方法也能帮我们检测对抗样本。正常样本的解释往往集中在有意义的区域而对抗扰动引发的解释往往是散乱、剧烈变化的。我在实际项目中就见过这种情形一张猫的图片正常预测时热力图集中在猫的轮廓上攻击样本预测结果虽然还是猫但热力图直接散到背景去了。这种解释的突变往往比预测概率的变化更早暴露问题。所以可解释性与对抗鲁棒性本质上是互相成就的关系这也是这篇综述最核心的立足点。2. 可解释性方法全景原理、分类与适用边界2.1 四种主流解释思路先搞懂它们各自在做什么综述里把解释方法梳理成几条主线我先挑四种最常用的说说大家以后看论文也不容易迷路。第一类是梯度类方法。核心思想是看输入特征的微小变化对输出有多大影响用梯度作为重要性的度量。最典型的是Saliency Map直接把 |∂输出/∂输入| 画出来。更进一步有集成梯度Integrated Gradients通过在基线和实际输入之间积分解决梯度饱和问题还满足敏感性和实现不变性两条公理。这类方法计算快、实现简单但缺点也很明显——梯度不等于人眼理解的语义而且模型内部非线性太强时梯度会极度不稳定。第二类是代理模型方法。代表是LIME和SHAP。它们的思想是复杂模型解释不清楚那我就在待解释样本附近训练一个简单的可解释模型比如线性回归或决策树用它来近似复杂模型的行为。LIME用局部采样加权重SHAP则从博弈论Shapley值出发给每个特征一个公平的贡献值。这类方法适合表格数据解释结果容易被人接受。SHAP虽然漂亮但计算成本很高尤其特征维度多的时候精确计算Shapley值是组合爆炸的工程上大部分时候用近似算法。第三类是注意力可视化方法。Transformer火起来以后把注意力权重画出来成了一种标配解释。但这里有个需要警惕的问题注意力权重反映的是“模型关注了哪些位置”不等于“模型决策的真正原因”。我在实际调试NLP模型时就发现注意力分布有时会集中在句子的标点和停用词上你要是真按注意力来给业务解释会闹笑话。综述里也点名了“注意力不是解释”的争议值得重视。第四类是反事实解释。这类方法不是回答“为什么”而是回答“怎么改才能变结果”。比如模型判断借款人有风险反事实解释告诉你“如果月收入提高2000元同时负债率降低10%预测就会变成低风险”。这种解释对用户来说最友好因为它直接给出行动建议。缺点是需要搜索满足条件的改动搜索空间大了以后效率很低。2.2 方法选型的判断标准别只盯着“图好不好看”我发现很多同学在选解释方法时标准就是热力图好不好看、和直觉符不符合。这个标准在综述的分析框架下非常危险因为对抗样本正是利用了“看起来合理”的错觉。选解释方法我建议看三个指标。第一个是保真度Faithfulness即解释和模型真实决策逻辑吻合到什么程度。你可以做扰动测试把解释认为重要的特征改掉看模型预测是否显著变化如果改了不重要的特征预测却蹦了那这个解释的保真度就有问题。第二个是稳定性Stability在输入添加微小扰动后解释是否剧烈变化。实验中你会看到同一个样本加了一点高斯噪声SHAP值分布就完全变了这样的解释在对抗场景下基本没法用。第三个是稀疏性Sparsity一个解释里真正重要的特征不应该太多如果一百个特征个个贡献都差不多那等于什么都没说。表格数据上SHAP和LIME实际表现差距没那么大SHAP的博弈论性质让它在特征交互场景里更严谨但对性能要求高的线上环境积分梯度类方法性价比更高。图像数据上GradCAM这类基于梯度的类激活映射方法实现成本低而且可视化效果直观但要注意GradCAM只能反映高层特征的响应对小目标不敏感。文本数据上如果预算充足用反事实解释生成器比直接画注意力权重更有说服力因为业务方问的往往是“怎么改才行”而不是“你看了哪里”。2.3 一个被低估的环节解释结果的评估指标综述里专门有一节讲解释评估这部分经常被论文忽视但实际工程里极其重要。我挑几个值得记住的指标说说。删除/保留实验Removal/Insertion是常见做法。删除实验把解释中排名靠前的特征逐个替换为中性值观察预测置信度下降速度理想情况下前几个重要特征被删除后置信度应该快速下降。保留实验则反过来从空白输入开始逐个加入重要特征观察置信度上升速度。这两个实验能直观检验解释的保真度实现起来也简单。敏感性分析Sensitivity Analysis主要评估解释方法对输入扰动的响应。具体操作上给原始输入加上均值为零的小噪声重复采样多次计算解释结果之间的差异度比如热力图的余弦相似度。如果相似度很低说明解释不稳定这种解释在对抗环境下基本没有可信度。还有一类评估关注解释在对抗攻击下的表现称作解释鲁棒性。你可以构造一个“被攻击的输入-解释对”然后看解释是否偏离了原样本的核心区域。我之前做过一个小实验用PGD攻击后的样本去跑积分梯度热力图中心直接偏了半个物体这种偏移量在工程上是可以量化监测的。如果你的系统需要上线建议至少跑一下删除实验和输入扰动下的稳定性实验这两个指标能在不引入复杂攻击算法的情况下给出解释质量的大致画像。3. 解释与对抗如何相互作用安全视角下的核心剖析3.1 解释是会“撒谎”的攻击者可以利用它综述里反复强调的一个观点是解释结果不一定反映真实决策过程它可能被攻击者利用来掩盖恶意行为。这不是理论猜测而是已经被验证过的现实。设想一个恶意样本检测系统安全团队接入了一个事后解释模块希望分析恶意流量为什么被判为恶意。攻击者知道了这个解释机制之后可以在构造对抗样本时加入一项额外的损失让最终生成样本不仅欺骗分类器同时让解释器给出一个指向“正常行为”的热力图或特征贡献分布。这就意味着安全分析师看到的解释是“人畜无害”的但模型内部可能已经激活了完全不同的决策路径。解释变成了一层新的人眼迷惑面。这种攻击之所以难防是因为它同时优化两个目标分类结果错误解释合理化。我在测试某个开源工具时就复现过类似现象把解释正则化项加到对抗攻击的损失函数里面迭代几十轮之后攻击成功率没有下降多少但解释相似度确实显著提升了。也就是说攻击者可以用很小的代价换来很高的“解释迷惑性”。3.2 对抗训练和可解释性结合防御新思路既然解释能被攻击那反过来能不能用解释来防御综述里整理了几条路线我比较看好的是解释一致性正则化的方向。思路很简单正常训练的目标是预测结果正确如果我们在损失函数里加一项要求模型在干净样本和对抗样本上的解释一致那么攻击者想利用解释漏洞就没那么容易了。实际操作时你可以用积分梯度或者GradCAM生成干净样本的解释再去生成对抗样本的解释计算两者之间的均方误差或余弦距离把这个距离作为正则项加到训练损失里。这个方案实现起来有几个点要注意。第一解释计算过程会显著增加训练时间因为每个batch里都要额外跑一次反向传播去算梯度解释GPU显存和耗时都会上涨实测大概会多花1.5到2倍时间。第二解释正则化的权重不能太大否则模型精度会掉我自己的经验是取主损失和解释正则项在0.1到0.5之间的比例需要根据数据集规模去调。第三只在最后一层加解释约束是不够的最好在多个中间层同时约束效果更稳。用解释做检测也是可行的。你可以把解释的Stability作为一个小型检测器的输入特征正常样本和对抗样本在解释稳定性上往往有明显分布差异。我做过一个粗略但有效的实验用FGSM生成攻击样本正常样本的解释中心点坐标基本集中在一个小范围攻击样本的解释中心点坐标离散度非常高用最简单的高斯分布拟合都能区分绝大多数样本。这个思路的好处是它不需要额外训练深度网络只要有解释模块就能搭建检测逻辑。3.3 迁移性解释的漏洞可能跟着模型一起搬家还有一个安全话题必须提一下就是解释漏洞的可迁移性。对抗样本有迁移性在一个模型上构造的攻击能骗过另一个独立训练的模型解释漏洞同样存在类似性质。具体来说如果某个解释方法在模型A上被证明可以生成“解释偏差攻击”这种攻击策略往往也能在模型B上生效前提是两个模型任务类似、解释方法相同、特征空间重叠度较高。这意味着攻击者不需要对你的目标模型做精细调试在开源的代理模型上完成攻击设计然后迁移到你的系统上也能获得一定程度的解释欺骗效果。从防御角度看这个性质提醒我们不要指望“保密模型细节”来阻挡攻击因为基于迁移的攻击完全可以在黑盒条件下完成。更务实的方法是让解释模块本身具有鲁棒性比如对输入做随机平滑再解释或者对解释做多次采样取中位数这些工程技巧能明显降低解释的可利用性。我在项目里试过对GradCAM做多尺度输入上的平均效果确实比单尺度解释稳定不少而且实现成本很低只是把输入缩放成几个尺寸分别计算热力图再做一个加权平均。4. 应用场景拆解从医学影像到自动驾驶解释性安全在哪儿落地4.1 医学影像医生最需要解释也最容易被对抗样本迷惑医学影像是可解释性需求最强烈的领域之一。医生不可能只因为模型输出一个“恶性”就直接下判断他们必须看到模型给出依据的区域。但医学影像又非常容易被轻微扰动影响对抗样本在医疗场景里是真实威胁。综述里列举的案例中有一个场景很典型肺部X光片的分类模型正常图像识别得很准但添加小幅扰动后模型把良性样本判成恶性而生成的热力图却依然集中在病灶附近。这会造成一个极端危险的局面——医生看了热力图觉得模型确实在关注病灶于是更加信任这个错误的判读结果。这种“错误但确信”的判断在临床上比单纯模型出错更可怕因为人的监督环节被完全架空了。针对这个场景我的建议是医疗模型上线前不能只测准确率和AUC必须额外测试解释的稳定性。具体方法是对正常样本施加可感知范围内的微小扰动比如亮度变化、对比度变化、少量高斯噪声然后看解释是否仍然集中在同一器官区域。如果解释区域漂移超过某个阈值比如Dice系数低于0.7这个模型就不适合直接辅助诊断。另一个可落地的方向是用可解释性做数据质控。医疗数据集中经常有标注错误或者伪影干扰解释模块可以把模型注意力集中但标注中不存在对应病灶的样本筛出来交给专家复核。这套流程不需要对抗样本参与纯粹利用解释和标注之间的矛盾来找数据问题我参与过的某个项目中这套思路确实帮着人工修正了几十例标注质量问题。4.2 智能驾驶安全关键场景里的“解释对抗”双重挑战自动驾驶是另一个逃不开的话题。感知模型一旦被对抗样本欺骗后续规划控制都会受到连锁影响。可解释性在自动驾驶里的角色不只是给研发人员看更关系到责任认定和监管审计。比如说路牌识别模型攻击者可以对一个“停止”标志施加扰动让模型识别成“直行”。如果你只有最终类别输出你很可能会忽略这类风险。但如果你同时监控模型的特征图和解释输出就会看到路牌区域的响应在攻击前后完全不同甚至解释会转移到路边完全不相关的物体上。这种解释层面的异常信号可以作为感知系统自检的一部分。工程落地时可以做一个轻量级的“解释一致性检测器”正常视频流中连续帧的解释区域应该平滑变化如果某一帧的解释区域突然跳变或者重要区域占比急剧升高/下降就触发告警让系统进入保守策略。这样就算对抗样本骗过了分类器它也很难同时骗过连续帧层面的解释一致性检查。这个方法实现很简单成本也低适合作为现有感知系统的补充防线。4.3 工业风控与推荐系统解释成为合规硬指标金融风控和推荐系统这两年被监管盯得很紧可解释性从“可选”变成了“必选”。在对抗样本视角下这些系统面临的风险有所差异。信贷风控模型通常基于结构化特征对抗攻击往往表现为特征篡改或者信息伪装。有人在申请资料里做手脚让特征分布变到“好客户”一侧同时骗过风控模型的解释模块让审批理由显示为“收入稳定、负债合理”。这时候SHAP这类方法能帮上忙你可以对每个特征的SHAP值设定正常分布区间一旦某条样本的特征贡献偏离历史分布就标记为高风险申请。这就是把可解释性直接变成了安全风控的一部分。推荐系统的场景稍微温和一点但也有问题。比如内容推荐模型的解释说“因为你看了科技类视频所以推荐这个科技产品”攻击者刷量时就会刻意制造这样的交互序列让解释看起来正常。针对这种隐蔽攻击我建议在解释层做异常行为检测统计某个用户群在特征贡献上的聚类分布如果新来的样本在解释空间落在群体边缘就说明它的行为模式和正常用户有偏差即使模型预测结果看起来正常也要人工复核。5. 复现综述结论时的常见坑与实用排查技巧5.1 复现梯度和代理模型方法时最容易踩的坑先说积分梯度。它的公式看起来简单就是沿着基线和输入之间的直线路径均匀采样累加梯度再乘以输入和基线的差值。但真正跑起来有几个细节容易翻车。基线选择非常关键。图像任务上很多人习惯用全黑图全零张量作为基线但如果你处理的是医学影像或者遥感影像全黑基线和真实数据分布差得太远积分的路径会经过模型非常不熟悉的区域得到的解释会充满噪声。我的做法是使用训练集均值图作为基线或者对每个样本采样一个随机噪声基线然后多次平均效果会比全黑图稳定很多。采样步数也很讲究。论文里默认用几十到几百步实际经验是50步和200步出来的结果差异往往不小尤其当模型在基线和样本之间存在剧烈非线性变化时步数太少会漏掉关键转折点。我建议至少测三档采样步数比如20、50、200如果解释结果在不同步数下差异悬殊说明模型梯度本身不稳定这时候不要急着用积分梯度可以先想想模型内部的归一化层或者跳跃连接是否有异常。再说SHAP。复现时很容易掉进“期望值近似”的坑。SHAP的Shapley值定义里需要计算特征子集的期望预测精确计算要遍历所有特征组合特征超过十个就不现实了。常见的TreeSHAP实现里路径计算依赖树结构如果模型是深度神经网络只能走近似路线。我在对比实验中就发现不同近似策略算出的SHAP值排序差异肉眼可见所以严重依赖SHAP结果做决策时一定要同时给出近似误差的估计而不是把某个库的输出当成绝对真理。5.2 可视化解释时的三个“眼见不为实”陷阱可视化是解释方法最直观的出口但也最容易误导人。第一个陷阱是热力图的归一化方式。很多库默认对热力图做最大最小值归一化这样一来即使两个模型一个输出整体很低的响应、一个输出整体较高的响应归一化之后热力图看起来可能高度相似。反过来同一模型处理两张输入热力图绝对数值差异很大但归一化后几乎一样。我在评估不同模型时吃过这个亏后来一律改成保存原始响应值再按固定阈值如95分位数做归一化保证不同模型之间可比。第二个陷阱是只展示“最亮点”忽略负贡献区域。梯度类方法里梯度符号是有意义的正值表示推动预测向某个类别靠近负值反之。许多可视化代码用绝对值画图把正负贡献混在一起结果就是解释丢失了一半信息。比如性别分类模型如果某个区域的梯度是负的意味着它抑制了“男性”类别的置信度你把它画成和正贡献一样的亮度业务方就会误读。第三个陷阱是插值显示造成的假象。低分辨率热力图放大叠加到原图上时双线性插值会平滑掉尖锐区域让解释看起来比实际更温和。特别是对抗样本的解释本来就是稀疏且破碎的插值之后会显得好像还有一定连续性。我的建议是提交给监管或审计用的热力图必须标注原始分辨率并且不允许做上采样美化。5.3 评估解释鲁棒性时的一种简单有效的做法如果你想又快又稳地评估手上模型的解释是否容易被扰动影响我推荐下面这套流程不需要重的攻击算法只需要能加载模型和解释模块。第一步准备一组干净样本数量不用多一百张左右就够。第二步对每个样本生成解释保存成向量或矩阵形式。第三步给样本叠加不同强度的高斯噪声比如标准差为0.01、0.05、0.1分别重新生成解释。第四步计算不同噪声强度下解释与原始解释之间的相似度指标图像任务可以用结构相似性或者余弦相似度表格任务直接用皮尔逊相关系数。第五步画一条“噪声强度-解释相似度”曲线看它下降得快不快。我实测过不少公开模型有些模型在噪声强度0.01时解释相似度就跌破0.5了这种模型几乎没法解释有任何意义。这个方法胜在实现成本极低不需要跑任何对抗攻击算法但能提前预警解释模块的脆弱程度。如果你要写技术报告或者向老板汇报模型可靠性这个曲线比单画几张好看的热力图有说服力得多。5.4 整理一张快速排查表解释异常时先查哪里我把自己做解释模块调试的经验整理成一张表新人照着查能省不少时间。现象可能原因排查方向解释全部集中在角落或边缘输入归一化不对或模型存在位置偏置检查预处理是否对齐训练时的均值和方差尝试随机翻转测试解释对微小扰动极其敏感模型梯度不稳定或解释方法本身有随机性对比不同随机种子的解释输出检查是否存在dropout未关闭SHAP结果变化剧烈背景数据集选择偏移近似采样次数不足固定参考数据集增大采样量检查特征的共线性攻击后解释反而更“清晰”对抗攻击过程中把解释方向也优化了检查攻击损失函数中是否包含解释正则项热力图跨层差异极大模型不同层关注的特征不同属于正常现象指明解释的层级目标业务解释尽量选最后一层这张表不是什么高深理论就是我在重复复现踩坑过程里攒出来的经验。遇到解释异常时先对照表里前两项查大多数情况都能定位到预处理或者随机控制的问题比直接怀疑算法本身高效得多。6. 从综述看未来可解释性与对抗安全还能往哪个方向做前面讲的都是已有方法但综述的最后一节其实给出了很有价值的开放方向我结合自己的观察再延展几句。第一个值得做的方向是“为解释本身做认证”。现在对抗样本的研究里有一个分支叫鲁棒性认证就是给模型一个输入扰动范围并证明在这个范围内预测不会改变。类似的思路完全可以套到解释上我们可以尝试证明给定一个扰动半径模型输出的解释比如热力图的主要区域不会发生显著偏移。一旦这个理论框架成熟监管机构就可以用它来审计高风险模型而不只是依赖经验测试。第二个方向是“解释引导的对抗训练增强”。现有的对抗训练大多只优化预测一致性如果同时优化解释一致性模型的泛化鲁棒性会有一定提升。综述里提到了这个方向的可能性我自己也在小规模实验里试过确实看到白盒攻击成功率有下降不过训练成本高了不少。后续如果能把解释计算的效率提上去这个方向很有潜力。第三个方向是交互式解释与反事实生成的结合。单个静态热力图其实不能满足业务需求业务方更想要的是交互式问答如果我改掉这个特征会怎样这时候反事实解释就比热力图有用得多。把反事实生成和对抗防御结合系统可以告诉你“我不但判断有风险还知道改哪些字段风险会降低而且这些字段组合在对抗攻击下也保持稳定”。这种端到端的安全解释能力如果能做出来对整个行业都是很有价值的突破。最后说一点个人体会。读这类综述的时候别只把它当成背景板去引用最值钱的部分其实是里面比较和分析的框架。你拿着这个框架去审视自己的模型往往会发现以前“看起来没问题”的解释在对抗样本面前完全站不住脚。方法会更新但“解释要稳、要忠于决策、要能对抗误导”这个标准短时间内不会变。所以无论你是做算法还是做工程只要碰模型我都建议花一个下午把这类综述的方法分类梳理一遍再照着上面的实验流程自己测一轮你对模型的理解会完全不一样。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑