Python 计算输入标记对BERT(或其他分类器)输出概率的影响
假设我训练了一个伯特分类模型。我想计算每个输入标记对预测输出的比例影响 例如——这是非常普遍的——如果我有一个模型将输入文本标记为Python 计算输入标记对BERT(或其他分类器)输出概率的影响,python,machine-learning,nlp,classification,huggingface-transformers,Python,Machine Learning,Nlp,Classification,Huggingface Transformers,假设我训练了一个伯特分类模型。我想计算每个输入标记对预测输出的比例影响 例如——这是非常普遍的——如果我有一个模型将输入文本标记为{'about dogs':0,'about cats':1},则以下输入句子: s='这是一个关于猫的句子' 输出应非常接近: 1 然而,我想计算每个输入对最终预测的影响,例如(假设我们在单词级别上进行标记化——我知道这在实践中不是这样做的): {this.01,is.005,a.02,句子:.0003,关于:[其他一些低概率],a:[另一个低概率],cat:0.9
{'about dogs':0,'about cats':1}
,则以下输入句子:
s='这是一个关于猫的句子'
输出应非常接近:
1
然而,我想计算每个输入对最终预测的影响,例如(假设我们在单词级别上进行标记化——我知道这在实践中不是这样做的):
{this.01,is.005,a.02,句子:.0003,关于:[其他一些低概率],a:[另一个低概率],cat:0.999999}
直觉上,我认为这意味着用输入语句进行向前传球,然后查看backprop值?但我不确定你会怎么做。想法
注意
假设所有内容都在PyTorch中实现。我当前的用例是HuggingFace,但我还是想概括一下。您是否使用
CLS
标记对文本进行分类?是的,我是。虽然我感兴趣的是单个标记对输出概率的影响。我认为当您使用注意输出并检查每个标记对CLS标记的注意时,您可以这样做。您是否使用CLS
标记对文本进行分类?是的,我是。虽然我感兴趣的是单个令牌对输出概率的影响,但我认为当您使用注意输出并检查每个令牌对CLS令牌的注意时,可以这样做。