Please enable JavaScript.
Coggle requires JavaScript to display documents.
注意力模型(Attention Model) (发展 (Transformer(2017) (BERT(2018), Text-to-Text…
注意力模型(Attention Model)
-
神经学原理
有限的工作记忆
外界有巨量的信息无时无刻通过感觉器官传入,但是由于人工作记忆的有限(5+-2),我们只能通过注意力来筛选有效信息,并对这些信息进行专注处理
-
纯RNN造成的问题
- 以机器翻译为例,纯RNN会在encoder需要将整个源句子压缩成一个固定维度的向量,接着Decoder从中解码出整个目标语言句子。这就要求这个固定维度的向量要包含语言句子的所有信息,显然这是很难达到的,因此这样成为RNN的性能瓶颈
- 源句子中单词和目标句子中的单词存在很强的对应关系,在纯RNN中并不能反映出这种关系
“汤姆”“追逐”“杰瑞”对应的就是"Tom""Chase""Jerry"
Attention Model解决方法
概述
在decode的时候,考虑decoder的state的同时考虑encoder中对这个step有影响的每一个state
详细步骤
理论
-
-
论文
Neural machine translation by jointly learning to align and translate
详细步骤
把context vector作为输入合并到decoder input中去,影响状态和输出
RNN、GRU影响h<t>、LSTM影响h<t>和c<t>
例子(GRU)
-
-
-
概述
- 都由通过decoder的输入y<i>、上一个step的状态s<i-1>和encoder的注意力值c<i>计算得出
注:RNN、LSTM、GRU中,encoder和decodeer参与运算的都是h
- 类似GRU,只是输入多了c
Tensorflow实现
-
-
3. 未加AttentionWrapper使用上一步的state计算output和state
- 使用上一步已经算好的state作为cell的state
- 使用上一步已经算好的attention,与这一步的input concat到一起作为输入
- 调用AttentionWrapper内的cell,计算出output和state
4. 根据上一步的output和state,计算下一步的state和context vector
在RNN和GRU中,output和state是一个东西,所以都一样,但是在LSTM中state包含h和c,所以这里用于计算下一步的context vector的是h也就是output,不是c
- 一个查询(query)到一系列(键key-值value)对的映射
- Attention机制是对Source中元素的Value值进行加权求和,而Query和Key用来计算对应Value的权重系数
- Query代表之前积累下来的信息,如RNN之前的step信息,Key代表当前step对应的相对其他step的信息,value对应当前step要加到query中的信息,所以就是通过query和key决定value要怎么加到query中