self-attention是什么
一个self-attention模块接收n个输入,然后返回n个输出。自注意力机制让每个输入都会彼此交互(自),然后找到它们应该更加关注的输入(注意力)。自注意力模块的输出是这些交互的聚合和注意力分数。
self-attention模块包括以下步骤:
- 准备输入
- 初始化权重
- 推导query,key和value
- 计算输入1的注意力得分
- 计算softmax
- 将score与value相乘
- 将权重值相加,得到输出1
- 对输入2和输入3重复步骤4-7
Self-attention和Attention的区别
- 一般在自然语言处理应用中会把Attention模型看作是输出Target句子中某个单词和输入Source句子每个单词的对齐模型,这是非常有道理的。
- 目标句子生成的每个单词对应输入句子单词的概率分布可以理解为输入句子单词和这个目标生成单词的对齐概率,这在机器学习翻译语境下是非常直观的;传统的统计机器翻译一般在做的过程中会专门有一个短语对齐的步骤,而注意力模型其实起的是相同的作用。
- 在一般的Encoder-Decoder框架中,输入Source和输出Target内容是不一样的,比如对于英-中机器翻译来说,Source是英文句子,Target是对应的翻译出的中文句子,Attention机制发生在Target的元素Query和Source中的所有元素之间。而Self-attention顾名思义,指的不是Target和Source之间发生的Attention机制,而是Source内部元素之间或者Target内部元素之间发生的Attention机制,也可以理解为Target=Source这种特殊情况下的注意力机制。其具体计算过程是一样的,只是计算对象发生了变化而已。
网友评论