1、概述
1.1 RNN(循环神经网络)
RNN主要用来处理序列数据,在传统的神经网络模型中,是从输入层到隐含 层再到输出层,每层内的节点之间无连接,循环神经网络中一个当前神经元的输出与前面的输出也有关,网络会对前面的信息进行记忆并应用于当前神经元的计算中,隐藏层之间的节点是有连接的,并且隐藏层的输入不仅包含输入层的输出还包含上一时刻隐藏层的输出。理论上,RNN
可以对任意长度的序列数据进行处理。

一个
RNN可认为是同一网络的多次重复执行
,每一次执行的结果是下一次执行的输入。循环神经网络展开图如右图所示。其中𝑥
𝑡是输入序列,𝑠
𝑡
是在
𝑡
时间步时隐藏状态,可 以认为是网络的记忆,计算公式为𝑠
𝑡
= 𝑓(𝑈𝑥𝑡
+ 𝑊S
t−1
)
,
其中
𝑓
为非线性激活函数 (如ReLU
),
𝑈
为当前输入的权重矩阵,
𝑊 为上一状态的输入的权重矩阵,可以看到当 前状态𝑠
𝑡
依赖于上一状态
𝑠
𝑡−1
。

RNN缺陷:长期依赖(Long Term Dependencies)问题,产生长跨度依赖的问题。

1.2 LSTM(长短期记忆神经网络)
长短期记忆网络将信息存放在递归网络正常信息流之外的门控单元中,这些单元可以存储、写入或读取信息,就像计算机内存中的数据一样。但愿通过门的开关判定存储哪些信息,何时允许读取、写入或清除信息。这些门是模拟的,包含输出范围全部在0
~
1
之间的
Sigmoid
函数的逐元素相乘操作。这些门依据接收到的信号开关,而且会用自身的权重集对信息进行筛选,根据强度和输入内容决定是否允许信息通过。这些权重会通过递归网络的学习过程进行调整。
长短期记忆网络的步骤如下:
– 决定从元胞状态中扔掉哪些信息。由叫做“遗忘门”的
Sigmoid
层控制。遗忘门会输出
0
~
1
之间的数,
1
表示保留该信息,
0
表示丢弃该信息
– 通过输入门将有用的新信息加入到元胞状态。首先,将前一状态和当前状态的输入输入到
Sigmoid
函数中滤除不重要信息。另外,通过
tanh
函数得到一个
-1
〜
1
之间的输出结果。这将产生一个新的候选值,后续将判断是否将其加入到元胞状态中。
– 将上一步中
Sigmoid
函数和
tanh
函数的输出结果相乘,并加上第一步中的输出结果,从而实
现保留的信息都是重要信息,此时更新状态即可忘掉那些不重要的信息。
– 最后,从当前状态中选择重要的信息作为元胞状态的输出。首先,将前一隐状态和当前输入
值通过
Sigmoid

最低0.47元/天 解锁文章
4551

被折叠的 条评论
为什么被折叠?



