2020-2-24 深度学习笔记10 - 序列建模:循环和递归网络 3(深度循环网络,递归神经网络,长期依赖的挑战,回声状态网络ESN)

第十章 序列建模:循环和递归网络

官网

2020-2-21 深度学习笔记10 - 序列建模:循环和递归网络 1(展开计算图,循环神经网络–经典 / 导师驱动 / 唯一单向量输出 / 基于上下文RNN建模)
2020-2-23 深度学习笔记10 - 序列建模:循环和递归网络 2(双向RNN,基于编码 - 解码的序列到序列结构–不等长输出序列,计算循环神经网络的梯度)

深度循环网络

大多数RNN中的计算可以分解成3块参数及其相关的变换:
(1)从输入到隐藏状态。
(2)从前一隐藏状态到下一隐藏状态。
(3)从隐藏状态到输出。

前面我们介绍的循环神经网络只有一个隐藏层,我们当然也可以堆叠两个以上的隐藏层,这样就得到了深度循环神经网络。

【吴恩达深度学习解释】
在标准的 RNN 中,只每一个时间上,只存在一个隐藏单元。
Deep RNN 是由多个隐藏层叠加而成,如下图所示(图源:吴恩达深度学习)
在这里插入图片描述
Deep RNN 中较低的层起到了将原始输入转化为对更高层的隐藏状态更适合表示的作用。

但是增加深度会带来优化困难,一般情况下,更容易优化较浅的架构。
另一种 Deep RNN 是在时间步 t 到 t+1 间扩展深度,或者引入跳跃连接(图源:深度学习):
在这里插入图片描述
因为 RNN 在时间的维度上很大,所以一般不会构建很深的 RNN 。

递归神经网络recursive neural network

递归神经网络(recursive neural network)是具有树状阶层结构且网络节点按其连接顺序对输入信息进行递归的人工神经网络(Artificial Neural Network, ANN),是深度学习算法之一 。

递归神经网络代表循环网络的另一个扩展,它被构造为深的树状结构而不是RNN的链状结构,因此是不同类型的计算图。

递归网络的典型计算图如下
在这里插入图片描述

递归网络已成功地应用于输入是数据结构的神经网络,如自然语言处理计算机视觉

递归网络的一个明显优势是,对于具有相同长度 τ \tau 的序列,深度(通过非线性操作的组合数量来衡量)可以急剧地从 τ \tau 减小为 O ( log τ ) O(\log \tau) ,这可能有助于解决长期依赖。

一个悬而未决的问题是如何以最佳的方式构造树。 一种选择是使用不依赖于数据的树结构,如平衡二叉树。

长期依赖的挑战

长依赖是指:在处理长时间问题的问题时,由于梯度消失造成的较远信息对此时几乎不产生影响,对于一段长文本而言,其中的语言含义可能存在于开头和结尾的两个词上,但是通常的神经网络由于梯度消失问题没办法建立起相应的语义联系。
目前大约有三类机制解决长期依赖的学习问题,分别是门机制、跨尺度连接和特殊初始化。

RNN面临的最大挑战就是无法解决长期依赖问题。例如对下面两句话:
在这里插入图片描述

最后的was与were如何选择是和前面的单复数有关系的,但对于简单的RNN来说,两个词相隔比较远,如何判断是单数还是复数就很关键。

长期依赖的根本问题是,经过许多阶段传播后的梯度倾向于消失(大部分情况)或爆炸(很少,但对优化过程影响很大)。对于梯度爆炸是很好解决的,可以使用梯度修剪(Gradient Clipping),即当梯度向量大于某个阈值,缩放梯度向量。但对于梯度消失是很难解决的。

如何从数学的角度来理解梯度消失或者爆炸问题呢,我们将以一个简单的、缺少非线性激活函数和输入x的循环神经网络为例。我们可以认为,循环联系为:
h ( t ) = W h ( t 1 ) h^{(t)}=W^⊤h^{(t−1)}
是一个非常简单的、缺少非线性激活函数和输入 x x 的循环神经网络。 这种递推关系本质上描述了幂法。 它可以被简化为
h ( t ) = ( W t ) h ( 0 ) h^{(t)}=(W^t)^⊤h^{(0)}
而当 W W 符合下列形式的特征分解
W = Q Λ Q W=QΛQ^⊤
其中 Q Q 正交,循环性可进一步简化为
h ( t ) = Q Λ t Q h ( 0 ) h^{(t)}=Q^⊤Λ^tQh^{(0)}
特征值提升到 t t 次后,导致幅值不到1的特征值衰减到零,而幅值大于1的就会激增。 任何不与最大特征向量对齐的 h ( 0 ) h^{(0)} 的部分将最终被丢弃。

解决方法

(1)渗透单元及其它多时间尺度的策略
(2)长短期记忆和其它门控RNN
(3)优化长期依赖(截断梯度、引导信息流的正则化)

之后将会对长短期记忆网络(LSTM)以及门控循环单元(GRU)做讲解。

回声状态网络Echo State Networks

回声状态网络ESN,是一种新型的人工神经网络。它被大量地应用到各种不同的领域中,包括动态模式分类、机器人控制、对象跟踪核运动目标检测、事件监测等,尤其是在时间序列预测问题上,取得了较为突出的贡献。

h ( t 1 ) h^{(t-1)} h ( t ) h^{(t)} 的循环权重映射以及从 x ( t ) x^{(t)} h ( t ) h^{(t)} 的输入权重映射是循环网络中最难学习的参数。 研究者提出避免这种困难的方法是设定循环隐藏单元,使其能很好地捕捉过去输入历史,并且只学习输出权重。回声状态网络Echo State Networks提出了这种想法。

ESN也是RNN的一种,也是由输入层,隐藏层,输出层组成,并且在隐藏层到隐藏层之间有一个连接,用来保留前面时刻留下的信息。不同于RNN,ESN的输入层到隐藏层、隐藏层到隐藏层的连接权值是随机初始化,并且固定不变。在训练的过程中,我们只需要去训练隐藏层到输出层的连接权值。这就变成了一个线性回归问题,所以ESN训练起来非常快。
在这里插入图片描述
观察上图
ESN由输入层、隐藏层(即储备池)、输出层组成。其将隐藏层设计成一个具有很多神经元组成的稀疏网络,通过调整网络内部权值的特性达到记忆数据的功能,其内部的动态储备池(DR)包含了大量稀疏连接的神经元,蕴含系统的运行状态,并具有短期训记忆功能。
ESN训练的过程,就是训练隐藏层到输出层的连接权值(Wout)的过程。总结如下三个特点:

(1)核心结构是一个随机生成且保持不变的储备池(Reservoir)
(2)其输出权值是唯一需要调整的部分
(3)简单的线性回归就可完成网络的训练

【1.ESN的各个参数与公式】
1-1.节点与状态

图中t时刻的输入u(t),一共有K个节点。储备池状态为x(t),N个节点。输出为y(t),L个节点。

t 时刻的状态为:
在这里插入图片描述
1-2.连接矩阵与状态方程

图中的储备池就是常规神经网络的隐藏层,

  • 输入层到储备池的连接为Win(N*K阶),
  • 储备池到下一个时刻储备池状态的连接为W(N*N阶),
  • 储备池到输出层的连接为Wout(L*(K+N+L)阶)。
  • 另外还有一个前一时刻的输出层到下一时刻的储备池的连接Wback(N*L阶),这个连接不是必须的(图中虚线表示)。

每一时刻输入u(t),储备池都要更新状态,它的状态更新方程为:
在这里插入图片描述
式中,

  • Win和Wback都是在最初建立网络的时候随机初始化的,并且固定不变
  • u(t+1)是这个时刻的输入,
  • x(t+1)是这个时刻的储备池状态,
  • x(t)是上一个时刻的储备池状态,在t=0时刻可以用0初始化。
  • f是DR内部神经元激活函数,通常使用双曲正切函数(tanh)。

注:在建模的时候,和一般的神经网络一样,会在连接矩阵上加上一个偏置量,所以输入u的是一个长度为1+K的向量,Win是一个[1+K, N]的矩阵,x是一个长度为N的向量。

ESN的输出状态方程为:
在这里插入图片描述

式中,fout是输出层神经元激活函数。

到这里有了储备池状态,有了ESN输出方式,就可以根据目标输出y(target)来确定Wout,以使得y(t+1)和y(target)的差距尽可能小。这是一个简单的线性回归问题,计算方法有多种,不再赘述。

1-3.储备池四个参数

储备池是该网络的核心结构,所谓的储备池就是随机生成的、大规模的、稀疏连接(SD通常保持1%-5%连接)的递归结构。

ESN的最终性能是由储备池的各个参数决定的,包括:储备池内部连接权谱半径SR、储备池规模N、储备池输入单元尺度IS、储备池稀疏程度SD。

(1)储备池内部连接权谱半径SR。
其为连接权矩阵W的绝对值最大的特征值,记为λmax。λmax<1是保证网络稳定的必要条件;
在这里插入图片描述
(2)储备池规模N。
其为储备池中神经元的个数,储备池的规模选择与样本个数有关,对网络性能影响很大,储备池规模越大,ESN对给定动态系统的描述越准确,但是会带来过拟合问题。

(3)储备池输入单元尺度IS。
其为储备池的输入信号连接到储备池内部神经元之前需要相乘的一个尺度因子,即对输入信号进行一定的缩放。一般需要处理的对象非线性越强,IS越大。
在这里插入图片描述
(4)储备池稀疏程度SD。
其表示储备池中神经元之间的连接情况,储备池中并不是所有神经元之间都存在连接。SD表示储备池中相互连接的神经元总数占总的神经元N的百分比,其值越大,非线性逼近能力越强。
在这里插入图片描述
【2.ESN网络的训练】

ESN的训练过程就是根据给定的训练样本确定系数输出连接权矩阵Wout的过程。
其训练分为两个阶段:采样阶段权值计算阶段

为了简单起见,这里假定Wback为0,同时输入到输出以及输出到输出连接权也假定为0。

2-1.采样阶段

采样阶段首先任意选定网络的初始状态,但是通常情况下选取网络的初始状态为0,即x(0)=0。

(1)训练样本(u(t), t=1,2,…,P)经过输入连接权矩阵Win被加入到储备池。

(2)按照前述两个状态方程,依次完成系统状态和输出y(t)的计算与收集。

为了计算输出连接权矩阵,需要从某一时刻m开始收集(采样)内部状态变量,并以向量为行构成矩阵B(P-m+1, N),同时相应的样本数据y(t)也被收集,并构成一个列向量T(P-m+1, 1)。

2-2.权值计算阶段

权值计算就是根据在采样阶段收集到系统状态矩阵和样本数据,计算输出连接权Wout。因为状态变量x(t)和预测输出之间是线性关系,所以需要实现的目标就是利用预测输出 y ^ ( t ) \hat y(t) ,逼近期望输出y(t):
在这里插入图片描述
至此,ESN网络训练已经完成,训练好的网络可以用于时间序列建模具体问题。

3.ESN实例

参考https://blog.csdn.net/zwqhehe/article/details/77025035?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

发布了151 篇原创文章 · 获赞 10 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_42555985/article/details/104471711
今日推荐