RNN模型与NLP应用(8/9):Attention (注意力机制)

基于 LSTM 的模型有一个缺陷,它没有办法记录很长的句子,因为只保留最后一个输出 \(h_m\),所以如果句子很长,前面的信息就会被遗忘。而 Attemtion 模型就弥补了这个缺陷。

Attention(注意力机制)

准确的代价是巨大的计算量!

decoder 每次更新状态时都会回头再看一遍 encoder 所有状态。此外,Attention 还会告诉 decoder 应该关注 encoder 哪个状态。

缺点:计算量非常大。

在 encoder 结束工作时,Attention 和 decoder 同时工作。decoder 初始工作状态 \(s_0\) 时 encoder 的最后状态 \(h_m\),Attention 判断 \(s_0\)\(h_i\) 的相关性。

\(c_0=a_1h_1+...+a_mh_m\)

image.png

对于每一个 \(s_i\),都有自己的 \(c_i\),对于每一个 \(c_i\),构成它的 \(a_1、a_2...\) 都和其他的 \(c_i\) 的不一样。\(a_i\) 是由 \(s_i\) 与每个 \(h_i\) 做对比,计算出的权重。

image.png

做完所有的工作,一共要计算 t 次权重,每次要计算 m 个权重,复杂度是 mt,非常高。

image.png

例子

image.png

Self-Attention(自注意力机制)

普通的 Attemtion 是基于一个 encoder 网络和一个 decoder 网络结构,Self-Attention 是运用在一个网路结构上。

初始时 \(h_0\)\(c_0\) 都是全零向量。

image.png

计算 \(c_i\) 是已有状态 h 的加权平均,权重 \(a_i\) 是相关性

\(h_3\) 是由 \(x_3\)\(c_2\) 计算得到

image.png

计算权重 image.png

计算相关性

image.png