RNN中的注意力机制

RNN序列编解码器

  • 红色---输入,蓝色---输出
  • 绿色----编、解码器

Sequence to Sequence模型

编码器Encoder把所有的输入序列都编码成一个统一的语义向量Context,然后再由解码器Decoder解码。在解码器Decoder解码的过程中,不断地将前一个时刻 [公式] 的输出作为后一个时刻 [公式] 的输入,循环解码,直到输出停止符为止。

优点:不再要求输出与输入有相同的时间长度

缺点:

  • encoder把所有的输入序列都编码成一个统一的语义向量Context,然后再由Decoder解码。由于context包含原始序列中的所有信息,它的长度就成了限制模型性能的瓶颈。(如机器翻译问题,当要翻译的句子较长时,一个Context可能存不下那么多信息,就会造成精度的下降。)
  • 如果按照上述方式实现,只用到了编码器的最后一个隐藏层状态,信息利用率低下。

时间片输入的稀疏问题

一般通过嵌入向量(embedding)解决,如one_hot编码,但是可能会产生大量过于稀疏的输入。
解决办法:生成一个随机矩阵R,然后用embedding** * R做空间映射形成新的输入embedding_new

改进Seq2Seq结构(引入attention)

最好的切入角度就是:利用Encoder所有隐藏层状态 解决Context长度限制问题。

即将编码器的所有隐藏状态都作为解码器每个隐藏状态的一个输入。

Attention机制本质

将的Encoder RNN隐藏层状态加权后获得权重向量,额外加入到Decoder中,给Decoder RNN网络添加额外信息,使其不再仅仅依赖编码器的最终上下文向量作为单一信息输入,从而使得网络有更完整的信息流。

Luong-Attention给RNN网络添加额外信息的方式


原文地址:https://www.cnblogs.com/Henry-ZHAO/p/13141841.html