一、深度学习中最最重要的注意力机制,参考该博客努力去除一切公式的来粗浅理解:
建议直接看标题链接的原博客,这里只是做了一个梳理
1.1 Encoder-Decoder机制:
给定句子对<source, target>,Encoder编码器(在NLP中一般为RNN模型)层输入source输出相应的编码(可以是Embedding (词嵌入的向量)),Decoder层将该编码作为输入,输出另一段文字,这段文字的输出期望是target,于是我们有了带标签的训练数据集。
这样的机制可以用于机器翻译,source作为中文,target作为英文,就可以完成机器翻译汉译英的工作。source作为文章,target作为文章大意,就可以完成机器自动概括文章大意的工作。source作为一个问题,target作为相应的答案,就可以完成机器人问答(siri,小艺)
1.2 soft Attention(分心)模型:
分心模型中,C为语义编码,f为decoder的非线性函数,为什么说它是分心模型,没有引入注意力机制,就是因为每一个输出
y
i
y_i
yi都可以写成仅关于C的函数,所以source中的每个词对输出的
y
i
y_i
yi影响相同,故说它没有注意力机制的参与,如果有的话,对
y
i
y_i
yi影响最大的词应该是source中特定的词
比如 翻译Tom chase Jerry,Encoder-Decoder框架逐步生成中文单词:“汤姆”,“追逐”,“杰瑞”。
在翻译“杰瑞”这个中文单词的时候,分心模型里面的每个英文单词对于翻译目标单词“杰瑞”贡献是相同的,很明显这里不太合理,显然“Jerry”对于翻译成“杰瑞”更重要,但是分心模型是无法体现这一点的,这就是为何说它没有引入注意力的原因。
1.3注意力模型:
顾名思义注意力模型就是参考了人类在观察事物时候对焦点的关注度大于其他信息关注度的原理,需要在重点信息上分配较大权重的模型
从公式(出现公式违背了我们的标题,因为它确实不能抛弃,对于描述注意力模型和分心模型的区别比任何文字描述都清楚易懂)上,可以看出,我们不能再将每个词都表示成关于
C
1
C_1
C1的函数,每个词的差异性就体现在不同的
C
i
C_i
Ci中
为了引进注意力,一个自然的想法是在输出当前词 y i y_i yi的时候为source中的词分配权重,权重如何分配?构建F函数,不同的论文有不同的构建方法
一般在自然语言处理应用里会把Attention模型看作是输出Target句子中某个单词和输入Source句子每个单词的对齐模型
文中举了一个英文翻译成德文的例子
从图中可以看到不同的德文在注意力机制下,确实完成了与英文单词几乎一一对应的任务。
至此我们了解了什么是注意力机制,具体的工作原理请参考标题给出的链接注意力机制