几者的主要参考文章: https://blog.csdn.net/weixin_41089007/article/details/96474760
RNN与LSTM的区别参考文章: https://blog.csdn.net/hfutdog/article/details/96479716
RNN和LSTM的区别如下:
- RNN没有细胞状态;LSTM通过细胞状态记忆信息。
- RNN激活函数只有tanh;LSTM通过输入门、遗忘门、输出门引入sigmoid函数并结合tanh函数,添加求和操作,减少梯度消失和梯度爆炸的可能性。
- RNN只能够处理短期依赖问题;LSTM既能够处理短期依赖问题,又能够处理长期依赖问题。
- 但是LSTM相对的运行时间较长
双向RNN和BERT:
双向RNN与self attention layer 的共同点在于: 输入输出都是序列,且输出每个时间节点预测的向量都与输入的所有时间节点相关联;
最大的不同点在于双向RNN输出无法并行(当前时刻的输出与上一时刻的hidden state相关),而attention可以并行
LSTM与BERT:
-
LSTM
概述:
lstm是代表性的rnn结构,rnn提出是为了解决时序的问题;典型的例子就是NLP中的句子理解,视频的内容理解;模型结构的设计保证输入顺序按照时序顺序对结果产生影响,当前时间步的输入是当前位置和上一个时间步的输出。 -
优点:
解决了dnn或者是bow词袋模型的问题,不能区分时序 -
缺点:
处理长文本的时候耗时较长,考虑到上下文,一般还采用双向rnn结构;模型效果上,对于长依赖问题效果不好,容易理解 经过很多个step的传递,信息会减弱 -
BERT
-
概述
bert通过注意力机制实现时序的理解,我认为精妙之处有两点,一点是位置编码融入向量表达,另外一点是就是注意力机制中的QKV矩阵了;残差网络防止网络过于复杂带来的过拟合。
优点 -
注意力机制,也就是每个位置相对另一个位置的权重是可以并行计算的,在计算资源足够的前提下比lstm会快很多;通过设计预训练任务,用海量无监督数据做预训练,模型效果更好
-
缺点
由于网络更加复杂,计算量相对lstm更大,训练收敛更慢