简单解释 DeepExplainer 如何获取 SHAP 值

数据挖掘 神经网络 深度学习 可解释的ai 形状
2021-10-12 18:41:26

我一直在使用 DeepExplainer (DE) 来获取我的 MLP 模型的近似 SHAP 值。我正在关注SHAP Python 库

现在我想更多地了解 DE 背后的逻辑。相关论文中,我不清楚如何获得 SHAP 值。我看到给出了一个背景样本集,并根据该数据计算了预期的模型输出,并使用当前模型的输出计算了差异。该差值是 SHAP 值的总和。但是,我不明白每个贡献是如何获得的?你能用简单的术语解释一下吗?

1个回答

https://en.wikipedia.org/wiki/Shapley_value可以理解,使用通用公式很难直接计算 Shapley 值:

φ一世(v)=1玩家人数联盟不包括 一世边际贡献 一世 结盟联盟数量不包括 一世 这个尺寸的

基本上是因为不包括 i 的联盟的数量随着复杂性的增加而增加ķ=1n-1ķ,其中 n 是变量的数量。在使用 Monte-Carlo 技术(如https://christophm.github.io/interpretable-ml-book/中提到的)评估这个总和的方向上已经取得了一些进展,但这些计算仍然很密集。

在他们的文章(http://papers.nips.cc/paper/7062-a-unified-approach-to-interpreting-model-predictions)中,Lundberg 和 Lee 提出了两种新方法,依赖于 SHAP——(这些是 Shapley 值原始模型的条件期望函数):

  • 与模型无关的方法基本上将问题重写为线性回归问题,直观上计算成本更低。基本上说SHAP是模型权重的函数并试图近似它。
  • 一种特定于模型的方法。假设输入独立(这很少是真的......)他们展示了如何直接从模型权重计算 SHAP 值。从线性模型开始,他们使用通常的传播技术为 NN 设计了类似的关系。

至于究竟哪种方法用于 MLP,我不确切知道,但第二种方法似乎更合适(特定于模型,精确方法)。