Quantus×模型训练:追踪模型精度提升过程中解释鲁棒性的XAI敏感性分析
Quantus×模型训练追踪模型精度提升过程中解释鲁棒性的XAI敏感性分析【免费下载链接】Quantus[JMLR 2023] Quantus is an eXplainable AI toolkit for responsible evaluation of neural network explanations项目地址: https://gitcode.com/gh_mirrors/qu/Quantus模型训练时我们紧盯精度曲线却很少有人问一句精度变高的同时模型的解释变稳了吗Quantus 是一款用于评估神经网络解释XAI的开源工具包JMLR 2023 论文配套提供 35 个评估指标。本文带你用 Quantus 做一件更精细的事在模型训练过程中逐轮追踪解释的敏感性与鲁棒性完整呈现 XAI 敏感性分析的实操流程。一、为什么精度在涨解释却可能在漂移训练前期模型参数剧烈更新同一张图的解释图如 Integrated Gradients可能一轮一个样输入稍加扰动归因分数就大幅震荡——这说明解释还不具备鲁棒性。仅靠肉眼看解释热力图是判断不出来的。Quantus 的官方示例就展示了这一点对同一张 ImageNet 图片Saliency、Integrated Gradients 四种方法的视觉差异很大必须借助量化评估才能下结论上图三个部分正是本文的核心思路a)四种梯度类解释方法的定性对比——视觉难以分出高下b)用忠实性Faithfulness、鲁棒性Robustness、定位能力Localisation等 5 个维度画雷达图做整体量化c)敏感性分析Sensitivity Analysis只改一个参数如像素替换策略为 Mean / Random / Black / White观察 XAI 方法排名的变化。训练过程追踪本质就是把 c) 的参数换成训练轮次Epoch。二、Quantus 能做什么6 大类 35 个评估指标Quantus 把 XAI 评估指标归入 6 个类别实现位于quantus/metrics/目录下类别回答的问题代表指标Faithfulness 忠实性解释是否跟随模型预测行为Monotonicity、Infidelity、SufficiencyRobustness 鲁棒性输入轻微扰动时解释是否稳定LocalLipschitzEstimate、ContinuityLocalisation 定位高亮区域是否命中关键区域Pointing Game、AUCComplexity 复杂度解释是否简洁聚焦Sparseness、ComplexityRandomisation 随机化解释是否优于随机猜测MPRT、RandomLogitAxiomatic 公理化是否满足完备性/不变性等公理Completeness、InputInvariance下图是 MNIST 手写数字的直观示例同一个数字 7Saliency 的解释噪声很大Integrated Gradients 则聚焦在笔画上——而哪个更好正是靠上表的指标来量化裁决三、教程实战LeNet Fashion-MNIST 逐轮追踪解释敏感性Quantus 官方自带一篇对口的教程 Tutorial_XAI_Sensitivity_Model_Training.ipynb流程如下几乎可以照抄3.1 环境与数据准备pip install quantus torch torchvision captum教程使用 Fashion-MNIST 数据集 LeNet 模型两个卷积层 三层全连接数据加载时加入轻微旋转/翻转增强模拟真实训练场景。3.2 选择敏感性指标LocalLipschitzEstimate教程用LocalLipschitzEstimate局部 Lipschitz 估计来度量解释的敏感性对输入加高斯噪声生成邻居样本比较两者解释的差异与输入差异的比值实现见 local_lipschitz_estimate.py。分数越低解释越稳定、越鲁棒。核心配置只有几行metric quantus.LocalLipschitzEstimate( nr_samples10, # 每个样本扰动次数 perturb_funcquantus.perturb_func.gaussian_noise, perturb_std0.1, )其中噪声函数来自quantus/functions/perturb_func.py相似度计算来自quantus/functions/similarity_func.py都可按需替换。3.3 训练循环中嵌入评估教程的做法是每个 Epoch 训练结束后对固定测试批次生成 Integrated Gradients 解释用 Captum再调用metric(...)算一次敏感性分数存入字典全部训练完转成 DataFrame 画折线图sensitivities[epoch] metric(x_test, a_test, y_test, modelmodel)最终得到的Epoch–Sensitivity曲线就是模型精度提升过程中解释鲁棒性的演化轨迹。四、如何读懂这条敏感性曲线前期分数高且波动大参数还没收敛解释随参数抖动属正常现象此时不宜用解释做决策中期分数持续下降模型趋于收敛解释逐渐稳定——这正是我们期待的精度与解释质量同步提升后期曲线平台化可停止训练并锁定该轮次的解释方法若某轮精度没变但敏感性突跳说明该轮学习率/数据分布触发了参数敏感区值得回查。教程还展示了用Sparsenesssparseness.py基于 Gini 系数衡量解释是否聚焦于少数像素作为第二个观测维度两条曲线一起看能区分变稳定和变聚焦两种不同的改善。五、快速上手清单与实用建议先小后大先在 Fashion-MNIST 这类小数据集跑通全流程教程默认配置再迁移到自己的任务固定评估集每个 Epoch 用同一批测试样本算敏感性否则曲线会被数据波动污染控制开销nr_samples扰动次数和评估频率是最大成本项建议每隔若干轮评估一次教程明确建议开启 GPU 加速指标不止一个忠实性quantus.metrics.faithfulness关注解释对不对鲁棒性quantus.metrics.robustness关注解释稳不稳训练监控建议两者搭配记录版本号Quantus 处于活跃开发中务必锁定版本号以保证结果可复现。六、写在最后把 Quantus 嵌入训练循环你获得的不再是一条精度曲线而是精度与解释鲁棒性并行的双通道视图——这正是负责任的 XAIresponsible XAI落地的关键一步模型上线前不仅要知道它准不准还要知道它给的解释是否经得起扰动检验。想动手试的读者直接从tutorials/Tutorial_XAI_Sensitivity_Model_Training.ipynb起步配合tutorials/Tutorial_Getting_Started.ipynb熟悉基础 API即可开始自己的 XAI 敏感性分析实验。【免费下载链接】Quantus[JMLR 2023] Quantus is an eXplainable AI toolkit for responsible evaluation of neural network explanations项目地址: https://gitcode.com/gh_mirrors/qu/Quantus创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考