用于处理序列的深度学习算法---RNN
在可穿戴设备中,所检测到的实时的生理数据,比如说心率,体温,睡眠时间等,都是时间序列。RNN可处理的是时间序列是哪种类型的?RNN在处理序列中有哪些应用?
在之前所了解的神经网络中,如CNN,都无法对时间序列上有变化的序列进行处理,所以也被称作前馈神经网络。他们是单独的处理每个输入输出的。而RNN对于输入之前的数据和输后面输入的数据是有关系的。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。理论上,RNNs能够对任何长度的序列数据进行处理。但是在实践中,为了降低复杂性往往假设当前的状态只与前面的几个状态相关。
可以用RNN进行实践序列回归(“预测未来”),时间序列分类,时间序列异常检测。
RNN的一些应用:文档、时间序列的分类;时间序列的对比,估测两类序列的相关程度;时间序列的预测,预测天气的温度,湿度,或者说能否能运用在病患的生理体温上,通过RNN来预测病患在下一个时间节点的体温对病患本人或者监护人做一个预警;还有心率数据是否也可以预测。 网上查阅得到一篇相关博客《RNN核心之时间预测》。
在查阅资料过程中,看到了关于RNN应用在温度预测上的实验,实验从最简单的模型来尝试预测下个月的平均温度。实验从符合常识的基准方法,计算代价比较低的机器学习的算法,使用dropout,使用循环层堆叠(当模型不再过拟合的时候,模型的性能可能遇到了瓶颈,应该考虑增加网络容量),双向RNN(双向RNN能够捕捉到可能被单向RNN忽略的模式)。这个实验先尝试了一些简单的模型之后再尝试的增加计算代价的算法模型,因为通常来说,这对机器学习是一个非常重要的限制:如果学习算法没有被硬编码要求去寻找特定类型的简单模型,那么有时候参数学习是无法找到简单问题的简单解决方案的。
RNN的一种变体--LSTM网络
keras中还有另外两种循环层,LSTM和GRU,这两种都是为了解决RNN总出现的由于时间长而产生的梯度消失的问题,通过们的开关来实现时间上的记忆功能,并防止梯度消失。
LSTM设计两个门控制记忆单元状态c的信息量:一个是遗忘门(forget gate)。所谓的“遗忘”,也就是“记忆的残缺”。它决定了上一时刻的单元状态有多少“记忆”可以保留到当前时刻;另一个是输入门(input gate),它决定了当前时刻的输入有多少保存到单元状态。
常见应用场景
首先是自然语言处理,较好地解决了传统语言处理模型的“维度咒诅”,机器翻译,语音识别,情感分析等等;
谷歌公司利用LSTM来做语音识别和文字翻译,苹果公司使用LSTM来优化Siri应用。
还有个性化推荐;比如:网易考拉商品推荐、Youtube视频推荐
以及RNN和CNN的结合应用,图像描述。
参考文献:
《RNN小结》https://blog.csdn.net/feiye1023/article/details/52077462
《RNN时间预测》https://blog.csdn.net/weixin_40123108/article/details/88767763
《RNN预测序列数据》https://blog.csdn.net/zhangye_2017/article/details/79052043
《深度学习RNN实现股票预测实战》https://blog.csdn.net/buptgshengod/article/details/78880941
《RNN时间序列预测》https://blog.csdn.net/iyangdi/article/details/70232764
https://blog.csdn.net/yoyofu007/article/details/80361422
《RNN原理的通俗解释》https://blog.csdn.net/qq_39422642/article/details/78676567