RNN循环神经网络
一、简介
首先,为什么有BP神经网络和CNN,还要提出RNN?
因为传统的神经网络,包括CNN,它的输入和输出是互相独立的。但有些时候,后续的输出和前面的内容是相关的。比如,我是中国人,我的母语是_.
所有,RNN引出记忆的概念,循环神经网络的“循环”二字来源于其每个元素都执行相同的任务。在某时刻,依赖于当前输入和“记忆”。
隐状态St可以看成记忆体,捕捉了之前节点上的信息。
输出Ot由当前时间和之前的记忆共同得到。
不同于CNN,这里的RNN其实整个神经网络都共享一组参数(U,V,W),极大地减少了需要训练和预估的参数量。
图中的有些Ot是不需要的,只需要最后的output就行了,比如文本情感分析。
二、不同类型的RNN
-
双向Rnn
- 有些情况下,当前的输出不仅仅依赖于之前的序列元素,还可以依赖于之后的元素。
- 比如从一段话里踢到部分词,让你补全。
- 直观理解:双向RNN叠加。
2.深层双向RNN
和双向RNN的区别是每一步/每个时间点,我们设定多层结构。
三、RNN与BPTT算法
DNN和CNN用BP算法求偏导,BPTT和BP是一个思路,只不过既然有step,就和时间t
有关系。
四、RNN之LSTM
普通的RNN存在长时依赖的问题:
- 看电影的时候,某些情节的推断需要依赖很久以前的一些细节。
- 很可惜随着时间间隔不断增大,RNN会丧失学习到连接如此远的信息的能力。
- 也就是说,记忆容量有限,一本书从头到尾一字不漏的去记忆,肯定离得越远,忘得越多。
关于LSTM,猛戳理解 LSTM 网络,翻译的特别好。
LSTM图: