RNN基本知识
图片来自网站 侵删
应用场景:处理序列数据
典型的集中序列数据:
- 文章里的文字内容
- 语音里的音频内容
- 股票市场中的价格走势
- ……
1.RNN基本原理
传统神经网络:
RNN:
RNN 跟传统神经网络最大的区别在于每次都会将前一次的输出结果,带到下一次的隐藏层中,一起训练。
eg:判断用户说话意图
当我们判断意图的时候,只需要最后一层的输出「05」,如下图所示:
前面所有的输入都对未来的输出产生了影响,大家可以看到圆形隐藏层中包含了前面所有的颜色。
RNN 缺点:
短期的记忆影响较大(如橙色区域),但是长期的记忆影响就很小(如黑色和绿色区域),这就是 RNN 存在的短期记忆问题。
1)RNN 有短期记忆问题,无法处理很长的输入序列
2)训练 RNN 需要投入极大的成本
2.RNN优化算法
LSTM – 长短期记忆网络
RNN 是一种死板的逻辑,越晚的输入影响越大,越早的输入影响越小,且无法改变这个逻辑。
LSTM 做的最大的改变就是打破了这个死板的逻辑,而改用了一套灵活了逻辑——只保留重要的信息。
LSTM 类似划重点,他可以保留较长序列数据中的「重要信息」,忽略不重要的信息。这样就解决了 RNN 短期记忆的问题。
GRU–门控循环机制
GRU 是 LSTM 的一个变体。他保留了 LSTM 划重点,遗忘不重要信息的特点,在long-term 传播的时候也不会被丢失。
GRU 主要是在 LSTM 的模型上做了一些简化和调整,在训练数据集比较大的情况下可以节省很多时间。
3.Bi-RNN
因为时刻t的输出**不仅取决于之前时刻的信息,还取决于未来的时刻,**所以有了双向RNN。比如要预测一句话中间丢失的一个单词,有时只看上文是不行的,需要查看上下文。双向RNN很简单,就是两个互相叠加的RNN。
下图为双向RNN的结构图:
从上图可以看出,每个时刻有一个输入,隐藏层有两个节点(向量),一个st进行正向计算,另一个st’进行反向计算,输出层由这两个值决定。
计算公式: