本章介绍了动态网络以及动态网络的学习规则。
在了解动态网络工作方式的特点的基础上,动态网络的学习规则的重点仍然是在求梯度上,大致方法与静态网络是一致的。只不过由于结构的原因,动态网络求解更加复杂。
第十四章 动态网络
动态网络
动态网络不但依赖于当前的网络输入,而且依赖于当前或之前时刻的输入、输出以及状态等。动态网络是包含延迟(或连续时间网络中的积分器)并且处理序列输入的网络,输入的顺序对网络的运算十分重要。
动态网络有可能只含有前馈连接。
动态网络含有记忆,它们在任一给定时刻的响应不但依赖于当前的输入,而且依赖于输入序列的历史。由于动态网络含有记忆,可以训练它们用于学习序列的模式或随时间变化的模式。动态网络可以逼近一个动力学系统。
动态网络可以采用之前讨论过的标准优化方法进行训练,然而所需要的梯度和雅克比矩阵不能用标准的反向传播算法计算。动态网络中梯度和雅克比矩阵的计算方法总体上可分为两种:时间反向传播BPTT以及实时回复学习RTRL。
在BPTT算法中,首先计算每个时刻的网络响应,然后从最后一个时刻开始计算梯度,并按时间顺序的反方向进行计算。该方法在梯度计算上非常高效,然而由于该方法需要从最后一个时刻开始按时间顺序的反方向计算梯度,因此难以实现在线训练。
在RTRL算法中,因为梯度从第一个时刻开始计算,并且从前往后随着时间前进方向计算,所以梯度可以与网络响应同时计算。在梯度的计算上,RTRL比BPTT计算量更大,然而RTRL提供了一个方便实现在线计算的框架。一般而言,对于雅克比矩阵的计算,RTRL算法比BPTT算法更高效。
分层数字动态网络
这里介绍用于表示一般性动态网络的神经网络框架,我们称此框架为分层数字动态网络(LDDN)。该框架扩展了用于介绍静态多层网络的数字记号。我们可以方便地表示具有多个回复连接及抽头延迟线的网络。
LDDN中第m层净输入
进而第m层的输出计算为:
与静态多层网络相比,LDDN网络中可以由多个层连接到第m层,其中的一些连接可能通过抽头延迟线形成回复连接。LDDN网络还可以有多个输入变量,这些输入变量可以连接到网络中的任意层,相比之下,对静态多层网络我们假设只有一个输入向量,且只连接到第一层。
在静态多层网络中,曾与层之间按照数值顺序依次相连。在LDDN框架中,任意层可以与任意层相连,甚至是与自己相连。为了计算每一层的净输入,需要按照一定顺序计算各层的输出。为了得到正确的网络输出,各层所需要遵循的计算顺序称为模拟顺序。模拟顺序不唯一,可能存在多个可行的模拟顺序。梯度计算需要通过反向传播导数进行,我们需要按模拟顺序的反向顺序进行,称之为反向传播顺序。
LDDN中的每一层由五个部分构成:
- 一组连接到该层的权值矩阵(可以是来自其他层或来自外部输入的连接)
- 任意数量的抽头连接线(记为 ),它们作为一组权值矩阵的输入(可以是任意一组接收抽头延迟线作为输入的权值矩阵。)
- 一个偏置向量
- 一个求和点
- 一个传输函数
LDDN的输出不仅是权值、偏置值以及当前网络输入的函数,而且也是之前时刻一些层输出的函数。因此。计算网络输出对权值和偏置值的梯度并不是简单的事情。权值和偏置值对网络的输出有两方面的作用:一是直接作用,可以通过标准反向传播算法进行计算;二是间接作用,由于部分网络输入也是之前的输出,这些输出也是权值和偏置值的函数,以下两节的主要内容就是讨论任意LDDN上一般性的梯度计算方法。
在引入动态训练之前,先举一个动态网络的示例。下图是一个用LDDN框架表达的ADALINE滤波器。该网络输入中有一条抽头延迟线,其中
假设输一个方波,并且将所有的权值都设为1/3。
该网络的响应计算如下(由于只有一层输入和一层网络,省去了权值和输入的上标):
网络的响应如下图所示,空心圆圈表示方波输入信号
上面这个动态网络具有记忆,它在任意时刻的响应不仅依赖当前输入,还依赖输入序列的历史。如果网络中不包含任何反馈连接,那么响应只受到一段有限长度的历史影响。下面是一个具有无限记忆的网络。
上图中是一个回复动态网络,网络运算的公式如下(由于只有一个神经元和一层网络,省去了最后一行中的上标):
如果假设权值为
动态学习的基本原则
对于上面的回复网络,加入我们想通过最速下降法训练这个网络,首先要计算性能函数的梯度。这里我们采用平方误差和作为性能指标:
梯度的两个分量为:
上式中的关键项是网络输出对权值的导数:
对于回复网络,权值对网络输出有两方面作用。一是直接作用,这与静态网络中的作用相同;二是间接作用这时由于网络输入的一部分来自于前一时刻的网络输出。上面两式中的第一项表示每个权值对网络输出的直接作用,第二项则表示间接作用。
下图a展示了动态导数,我们可以看到总的导数
在下图中,可以看到权值
接下来考虑一个稍复杂的动态网络,如下图,它包含一个静态多层网络和一个从网络输出到网络输入的单步延迟反馈网络。图中,向量x表示网络的所有参数,向量a(t)表示多层网络在t时刻的输出。这个网络可以帮助我们展示动态训练中的关键步骤。
对于动态网络,我们需要修改标准反向传播算法。
其中上标e表示显式导数,这种倒数不考虑跨越时刻的间接作用。显式导数可以通过标准反向传播算法获得。
上面两组公式中,
组成了实时回复学习算法(RTRL)。其中关键一项是 ,这一项需要按照时间顺序正向传播。
组成了时序反向传播算法(BPTT),其中关键一项是
总的来说,计算梯度时RTRL比BPTT需要更多的计算量,但BPTT首选需要计算所有时刻的输出,然后将导数通过时间反向传播到起始时刻,不便实现为实时算法。
动态反向传播
这里对于LDDN框架表示的动态网络的一般性RTRL算法与BPTT算法进行介绍。实际上是对以上四个公式的推广。这里直接给出计算方法(伪代码)。