小编Dan*_*her的帖子

对于以词嵌入作为输出的模型,SHAP 的特征贡献是如何计算的?

在数值回归任务的典型 Shapley 值估计中,有一种明确的方法可以计算输入特征 i 对最终数值输出变量的边际贡献。对于输入特征(age=45,location=\xe2\x80\x99NY\xe2\x80\x99,sector=\xe2\x80\x99CS\xe2\x80\x99),我们的模型可能给出70k的预测工资,并且当该位置被删除时,预计薪资可能为 45k。因此,该特定联盟中特征位置的边际贡献为 70-45=25k。

\n

根据我的理解,如果不存在任何功能\xe2\x80\x99s,则基值将是预测工资,并且将基值和所有功能贡献相加将得到模型\xe2\x80\x99s给定实例的实际工资预测。

\n

将其扩展到分类
\n假设我们将上述问题转换为分类问题,其中使用相同的特征,并且模型输出可以解释为该人做出> 50k的概率。在此示例中,对 p(>50k) 的影响将是测量的内容,而不是对工资本身的影响。如果我正确地遵循了这一点,那么我的 Shapley 值就可以解释为概率。

\n

扩展到词嵌入
\n从 SHAP 文档中,我们可以看到 SHAP 解释器可以计算 Seq2Seq NMT 问题的特征贡献。\n就我而言,我正在使用 Marian NMT 库处理神经机器翻译问题。这是一个序列到序列的问题,其中字符串输入被编码为词嵌入,并从此类词嵌入解码输出。我的问题涉及这种功能贡献的逻辑如何在理论和实践中扩展到这样的问题。我发现SHAP 分区解释器为我提供了 NMT 任务的可靠特征归因,但我不明白为什么

\n

更简洁地说:
\n对于通常输出单词嵌入列表的模型,如何使用 SHAP 库计算特征贡献?

\n

简要示例
\n为了查看我提到的 SHAP 值,请运行以下 MRE。

\n
import shap\nfrom transformers import MarianMTModel, MarianTokenizer\n\nclass NMTModel:\n    def __init__(self, source, target):\n        model_name = "Helsinki-NLP/opus-mt-{}-{}".format(source, target)\n\n        #The tokenizer converts the text to a more NN-suitable\n        #format, as it cannot …
Run Code Online (Sandbox Code Playgroud)

python neural-network machine-translation shap

6
推荐指数
0
解决办法
843
查看次数