参考
一文看懂 Attention(本质原理+3大优点+5大类型)完全解析RNN, Seq2Seq, Attention注意力机制

1、Attention 的本质是什么

Attention(注意力)机制如果浅层的理解,跟他的名字非常匹配。他的核心逻辑就是「从关注全部到关注重点」。

1-1 Attention 的3大优点

参数少:模型复杂度跟 CNN、RNN 相比,复杂度更小,参数也更少。所以对算力的要求也就更小。

速度快:Attention 解决了 RNN 不能并行计算的问题。Attention机制每一步计算不依赖于上一步的计算结果,因此可以和CNN一样并行处理。

效果好:在 Attention 机制引入之前,有一个问题大家一直很苦恼:长距离的信息会被弱化,就好像记忆能力弱的人,记不住过去的事情是一样的。Attention 是挑重点,就算文本比较长,也能从中间抓住重点,不丢失重要的信息。

1-2 Attention 的原理

gru注意力机制代码python 注意力机制cnn_深度学习


流程本质是一个带权值求和,具体步骤如下:

  1. query 和 key 进行相似度计算,得到权值 s
  2. 将权值进行归一化,得到直接可用的权重 a
  3. 将 a 和 value 进行加权求和

2、RNN, Seq2Seq, Attention的关系

RNN: 输入和输出向量行数是一致的,比如在语音合成中,n 帧的输入对应 n 帧的输出

Seq2Seq:分为编码器和解码器,二者独立进行推理,所以输入和输出的行数就不用一致了,比如一个 ipa 序列传入 encoder 会只会保留最终状态的输出结果作为编码结果,之后把编码结果传入 decoder 进行独立解码,再解码出终止符之前不会停止。

Attention:在Seq2Seq中,我们发现不管多长的输入,他的编码结果都是固定长度的,那么这个长度就可能遗失过长的输入信息,导致模型性能下降,为了解决这一问题,提出了注意力集中,上面也说了,注意力机制是中加权求和的过程,下图就解释了他在 Seq2Seq 中是如何生效的

gru注意力机制代码python 注意力机制cnn_深度学习_02