赞
踩
本文讲解循环神经网络。
循环神经网络(Recurrent Neural Network, RNN)是时间递归神经网络,另一种递归神经网络是结构递归神经网络。时间递归神经网络的神经元间连接构成矩阵,结构递归神经网络利用相似的神经网络结构递归构造更为复杂的深度网络。RNN一般指时间递归网络。普通递归神经网络无法处理随着递归,权重指数级爆炸或消失的问题(Vanishing gradient problem),难以捕捉长时间关联,为解决该问题,结合长短时记忆网络(Long short-term memory, LSTM)。
循环神经网络源于1982年Saratha Sathasivam提出的霍普菲尔德网络,霍普菲尔德网络提出时,因为实现困难,并且没有具体的应用场景,于1986年被全连接神经网络及一些传统的机器学习算法取代。传统的机器学习算法的缺点:
循环神经网络在挖掘数据中的时序信息及语义信息的深度表达能力被广泛引用于语音识别、语音模型、机器翻译及时序分析等方面。
LSTM于1997年以论文形式和世人见面,它适合处理和预测时间序列中间隔和延迟相对较长的重要事件。基于LSTM的系统可以学习翻译语言、控制机器人、图形分析、文档摘要、语音识别、图像识别、手写识别、控制聊天机器人、预测疾病、点击率和股票、合成音乐等任务。
经典循环神经网络
每一时刻t,循环神经网络针对该时刻的输入结合当前模型的状态给出一个输出,并更新模型状态。如图2.1所示,循环神经网络的主体结构A的输入来自输入层
x
t
x_t
xt和循环边提供上一时刻的隐藏状态(hidden state)
h
t
−
1
h_{t-1}
ht−1。每个时刻,循环神经网络的模块A读取
x
t
x_t
xt和
h
t
−
1
h_{t-1}
ht−1之后,会生成新的隐藏状态
h
t
h_t
ht,并生成该时刻的输出
o
t
o_t
ot。
模块A中的运算和变量是不变的,所以循环神经网络理论上可以看作是同一神经网络结构的无限复制,好比卷积神经网络在不同空间位置共享参数,循环神经网络是不同时间位置共享参数,从而使有限的参数处理任意长度的序列,模块A的拆解如图2.2所示。
从以上分析循环神经网络结构可知,RNN可有效解决与时间序列相关的问题。
循环神经网络中的状态是通过一个向量来表示的,这个向量的维度也称为循环神经网络隐藏层的大小,假设输入向量为 x x x,隐藏状态维度为 n n n,则循环体的全连接层神经网络的输入为 n + x n+x n+x,即上一时刻的状态和当前时刻的输入拼接成一个向量作为循环体重神经网络的输入,如图2.3所示。全连接层的输出为当前时刻的状态,作为下一层的隐藏层,则输出节点数为n,与该层的隐藏层输入维度一致,全连接层的输出需要进一步计算,作为最终输出。循环体中参数个数为 ( n + x ) ∗ n + n (n+x)*n+n (n+x)∗n+n。
循环神经网络通过保存历史信息,充分利用建模信息来帮助当前决策,但是长期依赖(long-term dependencies)问题凸显。有些问题模型仅需要短期信息来执行当前任务,不需要要记忆更久的信息,这类问题相关的信息和待预测信息间隔很短,循环神经网络可较容易地利用先前的信息。如果相关信息和待预测信息时间间隔很长,循环神经网络性能会受限制,而LSTM可很好解决该问题。
LSTM结构由Sepp Hochreiter和Jurgen Schmidhuber与1997年提出,结构如图3.1所示。
LSTM结构的运行靠一些“门”结构计算让信息有选择地影响循环神经网络中每个时刻的状态。“门”结构即利用sigmoid神经网络和一个按位做乘法的操作。使用sigmoid作为激活函数的全连接神经网络层的输出值在[0,1]之间,当sigmoid输出为1时,全部信息通过,“门”开,当sigmoid输出为0时,信息无法通过,“门”关闭。
为使循环神经网络更有效地保存长期记忆,,图3.1中的“遗忘门”和“输入门”是LSTM的核心。
[参考文献]
[1]https://crl.ucsd.edu/~elman/Papers/fsit.pdf
[2]https://www.bioinf.jku.at/publications/older/2604.pdf
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。