一.从RNN谈起
相信接触过深度学习的朋友们应该十分清楚BP神经网络和CNN了。今天主要总结下RNN模型。
1.为什么提出RNN模型?
传统的神经网络模型输入输出有事相互独立的,有些连续性的任务无法解决。比如图像上的猫和狗等内容是分隔开的,但在一些自然语言处理问题上,输入和输出是不独立的。eg:我是中国人,我的母语是_____。在这个任务中,输出不仅依赖于输入,还和之前的一部分信息有关。
传统的神经网络无法解决输出对输入和之前信息的依赖关系,所以提出RNN(循环神经网络)。通过RNN可以解决“记忆”问题。
二.RNN的结构
- Xt是t时刻的输入
- St是t时刻的记忆,St=f(UXt+WS_t-1),f可以是tanh等。St只保存了前一时间点上的信息。但不能保存之前的所有信息。
- Ot是t时刻的输出
- RNN的整个神经网络都共享一组参数(U,V,W),极大减小了需要训练和预估的参数量
三.双向RNN
有些情况下,当前输入不仅取决于前一时刻,可能与下一时刻也有关。所以有进一步发展了双向RNN
四.LSTM
为解决RNN记忆能力的问题,进一步提出LSTM模型。LSTM和RNN大体结构相同,区别是: - 记忆细胞经过改造
- 需要记忆的信息会一直传递,不需要记忆的会被“门”截断