NLP——Attention系列
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\)
对于每一个 \(s_i\),都有自己的 \(c_i\),对于每一个 \(c_i\),构成它的 \(a_1、a_2...\) 都和其他的 \(c_i\) 的不一样。\(a_i\) 是由 \(s_i\) 与每个 \(h_i\) 做对比,计算出的权重。
做完所有的工作,一共要计算 t 次权重,每次要计算 m 个权重,复杂度是 mt,非常高。
例子
Self-Attention(自注意力机制)
普通的 Attemtion 是基于一个 encoder 网络和一个 decoder 网络结构,Self-Attention 是运用在一个网路结构上。
初始时 \(h_0\) 和 \(c_0\) 都是全零向量。
计算 \(c_i\) 是已有状态 h 的加权平均,权重 \(a_i\) 是相关性
\(h_3\) 是由 \(x_3\) 和 \(c_2\) 计算得到
计算权重
计算相关性


