循环神经网络
一、RNN的特点
通常情况下,深度神经网络都是水平方向延伸的,比如卷积神经网络CNN。隐藏层数量多了,但是没有考虑到单个隐藏层时序上的变化。
RNN关注隐层神经元在时间维度上的不断成长和进步。网络结构不变,不添加新的神经元,但是沿着时间轴recurrent(重复),建立时序上的关联。这里的层级扩展并非神经元数量的真实增加,而是表示隐层在不同时刻的状态。根据不同许哟啊,隐层的时间关联可以是全连接式的,所有的线都相连,但是也可以是自己对自己的。
如果用
W
s
W_s
Ws?来表示层级之间的权重矩阵,RNN通常会假定时序上不同的层共享一个权重矩阵
W
s
W_s
Ws?,这样可以有效减少训练参数。
加入了
W
s
S
t
?
1
W_sS_{t-1}
Ws?St?1?这一项,这让神经网络有了记忆的能力。对于图片分类,输入的每张图片往往都是独立的,前后无关,此时用CNN就够了,但是对于很多语言类的问题,输入的语境和语序都是非常重要的,RNN就有了用武之地。
RNN就是用一种看似级联,实际上是沿着时序反复迭代的网络结构,实现了对序列数据的学习。
二、几种示意图:
RNN对时序数据的建模,使他天生就是一个记账小能手,这种天赋让RNN在自然语言处理领域有了质的飞跃。
RNN的训练和传统的神经网络一样,也采用误差法相传播加上梯度下降来更新权重,只不过在计算隐层的时候要引入之前不同时刻的数据。
三、LSTM
但是就像人的记忆不能持久一样,RNN对时序的依赖不能无限延伸。通常情况下,超过十步就不行了,为了解决这个问题,人们又在普通的RNN的基础上提出了长短期记忆网络(Long Short-term Memory , LSTM)
四、根据输入输出的不同,解决不同的问题
由于时序上的层级结构,使得RNN在输入输出关系上具备了更大的灵活性,能够解决不同的问题:
输入可以是一幅图片,输出可以是 一段话或者一段music。
(1)多入单出(N - ONE)
输出可以是一种判定
(2)N - N
输入和输出两个序列是等长的,这种RNN可以用来生成诗歌、文章、代码
(3) Encoder-Decoder模型/Seq2Seq模型(输入和输出不等长)
它先将输入数据编码成一个上下文向量,然后通过它输出预测的序列,应用于机器翻译、文本摘要、阅读理解、对话生成等很多领域。
参考: 【LSTM长短期记忆网络】3D模型一目了然,带你领略算法背后的逻辑
|