Self-Attention和RNN、LSTM的区别
RNN(循环神经网络)
- RNN,当前的输出 o t o_t ot取决于上一个的输出 o t − 1 o_{t-1} ot−1作为当前的输入 x t − 1 x_{t-1} xt−1和当前状态下前一时间的隐变量 h t h_t ht,隐变量和隐变量的权重 W h h W_hh Whh存储当前状态下前一段时间的历史信息,如果我们去掉 W h h ∗ h t − 1 W_{hh} * h_{t-1} Whh∗ht−1,RNN就退化为MLP
- 在RNN中,我们根据前一个的输出和当前的隐变量,就可以预测当前的输出。当前的隐变量也是由上一个隐变量和前一个输出
(即当前的输入)所决定的
- 所以RNN其实就是MLP多了一个时间轴,能存储前一段时间的历史信息,并根据这个历史信息来更新层的参数
- 同时由于RNN会不加选择的存储前一段时间的历史信息,所以如果序列太长,即句子太长,隐变量会存储太多信息,那么RNN就不容易提取很早之前的信。
- 同时由于RNN会不加选择的存储前一段时间的历史信息,所以如果序列太长,即句子太长,隐变量会存储太多信息,那么RNN就不容易提取很早之前的信。
GRU(门控神经网络)
- 为了解决RNN处理不了很长的序列,我们可以有选择的存储历史信息,通过更新门和重置门,来只关注有变化的重点信息
- GRU引入了 R t R_t Rt、 Z t Z_t Zt、 H t \overset{~}{H_t} Ht