@kpatrick
2019-07-05T10:19:15.000000Z
字数 2130
阅读 58
nlp
笔记
机器翻译
阅读材料:
- [Coursera] Sequence Models Week 3 Attention Model
- 模型汇总24 - 深度学习中Attention Mechanism详细介绍:原理、分类及应用
- 当我们在聊Attention的时候,我们实际在聊什么?
在机器翻译领域内,经典的Encoder-Decoder模型存在两个缺点:
- 把输入的所有信息有压缩到一个固定长度的隐向量,忽略了输入输入的长度,当输入句子长度很长,特别是比训练集中最初的句子长度还长时,模型的性能急剧下降
- 把输入编码成一个固定的长度,对于句子中每个词都赋予相同的权重,这样做是不合理的,比如,在机器翻译里,输入的句子与输出句子之间,往往是输入一个或几个词对应于输出的一个或几个词。因此,对输入的每个词赋予相同权重,这样做没有区分度,往往是模型性能下降
2015年,Dzmitry Bahdanau 等人在 Neural Machine Translation by Jointly Learning to Align and Translate 提出了Attention Mechanism,用于对输入的不同部分赋予不同的权重,进而实现软区分的目的。
Attention Mechanism与人类对外界事物的观察机制很类似,当人类观察外界事物的时候,一般不会把事物当成一个整体去看,往往倾向于根据需要选择性地去获取被观察事物的某些重要部分,比如我们看到一个人时,往往先注意到这个人的脸,然后再把不同区域的信息组合起来,形成一个对被观察事物的整体印象。因此,Attention Mechanism可以帮助模型对输入的 每个部分赋予不同的权重,抽取出更加关键及重要的信息,使模型做出更加准确的判断,同时不会对模型的计算和存储带来更大的开销,这也是Attention Mechanism应用如此广泛的原因。
Attention Mechanism 起初为了在机器翻译任务中,帮助更好的记忆长输入的情形。和原始的只是通过 encoder 最后一个 state 构建出 context 向量不同的是,Attention 在 context 向量和 input 之间构建了很多个 shortcuts (可以理解成 Attention 矩阵),这些 shortcut 的权重相对于不同的 output,都是不同的。
现在,在有了 Attention Mechanism 之后,相当于我们有了新的 context 向量,此时,输入和输出之间的对齐关系 (alignment relation) 可以被 context 向量学习到。
本质上来说,context 向量由以下三个部分组成。
- encoder hidden states
- decoder hidden states
- alignment between source and target
对于Encoder的输入隐藏状态的关注情况,可以对其进行以下的分类:
Self-Attention
Self Attention与传统的Attention机制非常的不同:传统的Attention是基于 source 端和 target 端的隐变量(hidden state)计算的,得到的结果是源端的每个词与目标端每个词之间的依赖关系;
但Self Attention不同,它分别在 source 端和 target 端进行,仅与 source input 或者 target input 自身相关的Self Attention,捕捉 source 端或 target 端自身的词与词之间的依赖关系;然后再把 source 端的得到的self Attention加入到 target 端得到的Attention中,捕捉 source 端和 target 端词与词之间的依赖关系。
因此,self Attention比传统的Attention mechanism效果要好,主要原因之一是,传统的Attention机制忽略了源端或目标端句子中词与词之间的依赖关系,相对比,self Attention可以不仅可以得到源端与目标端词与词之间的依赖关系,同时还可以有效获取源端或目标端自身词与词之间的依赖关系.
讲完Attention的分类之后似乎已经跳跃到很远了,之后阅读论文原文之后再来做新的笔记。这里回归到 Coursera 上Attention机制的原理上来(Global、Soft)。