前言

随着机器学习的发展,模型的准确性变得越来越高,但对应的可解释性却在下降。特别是随着神经网络的发展而兴起的各类深度学习模型也面临着准确率和可解释性的矛盾。由此,所谓机器学习的可解释性(Interpretability)或解释模型(Explainable AI, XAI) 也慢慢在机器学习的研究中占领一席之地。

关于模型解释性,除了线性模型和决策树这种天生就具备很好解释性的模型以外,大量复杂的模型面临着解释性的困难。因此,一系列其他方法被提了出来,例如基于梯度的方法、基于特征重要性的特征归因方法、基于扰动的方法等等。

SHAP

📃 A Unified Approach to Interpreting Model Predictions

SHAP (SHapley Additive exPlanations) 是一种基于代价函数的解释方法,理论上可以解释任何模型的任何决策。受到博弈论中的 Shapley Value 的启发,SHAP的核心思想是通过计算每个特征在模型决策中的加性贡献度(additive feature attribution),从而解释模型的决策过程。

Shapley Value

设想有pp 个海盗组成了一个团队,在一次成功的探险后获得了 100 个金币,怎么公平地分配呢?平均分配显然不合理,而按照能力分配呢——海盗 A 战力无双就应该多分钱吗?海盗 B 虽然弱不禁风但是唯一的医生,似乎更加不可或缺?

分配规则还有这样一些限制条件:

  • 有效性。每个人贡献分数应该相加等于 100,这样才能正好分完 100 枚金币
  • 对称性。如果有两个人价值一样,那么所得也该一样
  • 虚拟性。如果有个人可有可无,那么他分配的结果是 0
  • 可加性。分配 100 金币的结果,应该等于先分配 40,再分配 60 的结果

Shapley Value (夏普利值)被证明是唯一满足上述条件的解,从而海盗ii 在给定某个价值函数vv 的情况下的价值分数φi(v)\varphi_i(v) 可以表示如下:

φi(v)=SN\{i}S!(nS1)!n![v(S{i})v(S)]\varphi_i(v)=\sum_{S \subseteq N \backslash\{i\}} \frac{|S| !(n-|S|-1) !}{n !}\left[v(S \cup\{i\})-v(S)\right]

其中,vv 是一个价值函数,返回给定集合的价值。NN 表示所有海盗构成的集合,SS 表示去除海盗ii 之后的所有可能的集合,S|S| 表示集合SS 中的海盗成员数量,同理有N=n|N|=n 表示所有海盗的数量。

考虑线性模型

SHAP的定义

待更:SHAP知识点全汇总 - 知乎 (zhihu.com)

Shap库与画图

Welcome to the SHAP documentation — SHAP latest documentation
让 SHAP 输出比优雅更优雅的图表 - 墨天轮 (modb.pro)
基线理解_SHAP的变量解释性绘图理解与应用_shap值的图怎么解释-CSDN博客
SHAP 可视化解释机器学习模型简介_shap图-CSDN博客

Captum

Captum · Model Interpretability for PyTorch

https://github.com/pytorch/captum/issues/308

CAM

万字长文:特征可视化技术(CAM) - 知乎 (zhihu.com)

CV-Tech-Guide/Visualize-feature-maps-and-heatmap: 可视化特征图教程 (github.com)

类别激活图(CAM)可视化 — MMPretrain 1.2.0 文档

参考

  1. Shapley Value 学习笔记 - lif323 - 博客园
  2. Shapley_Value全解析与公式推导_shapley value-CSDN博客
  3. SHAP——理论最优的机器学习解释算法——可能是最简明的解释
  4. SHAP知识点全汇总 - 知乎