为Hugging Face T5添加NE嵌入的疑问及注意力分数修改咨询
问题解答
1. 这种NE嵌入融合方式会不会干扰T5的相对位置偏差?
不会干扰。T5的相对位置偏差机制和输入的token embedding完全独立:
- T5的相对位置偏差并非像BERT那样与token embedding相加,而是在注意力分数计算阶段,直接加到query与key的点积结果上,作为注意力logits的一部分。
- 你当前的做法是将NE嵌入和token embedding相加后传入模型,这只会改变输入的token表征,不会影响注意力层内部相对位置偏差的计算逻辑,因此完全不会干扰相对位置偏差的作用。
2. 基于NE匹配修改注意力分数的hook位置
要修改注意力分数,需在注意力logits计算完成、softmax激活之前的节点进行hook,对应Hugging Face T5实现中的具体步骤:
- 在
T5Attention类的forward流程里,当完成attention_scores = torch.matmul(query_layer, key_layer.transpose(-1, -2)) + relative_position_bias这一步后,此时的attention_scores是尚未经过softmax的原始注意力分数,这是修改的最佳时机。 - 你可以给
T5Attention模块注册register_forward_hook,在hook函数中获取到attention_scores张量,再基于NE标签的匹配关系(比如相同NE类型的token间提高注意力分数)直接修改其值,返回修改后的张量即可继续后续计算。
内容的提问来源于stack exchange,提问作者Analu Ramos
相关产品推荐
相关产品推荐

