10.9 渗漏单元和其他多时间尺度的策略
处理长期依赖的一种方法是设计工作在多个时间尺度的模型,使模型的某些部分在细粒度时间尺度上操作并能处理小细节,而其他部分在粗时间尺度上操作并能把遥远过去的信息更有效地传递过来。存在多种同时构建粗细时间尺度的策略。这些策略包括在时间轴增加跳跃连接,“渗漏单元”使用不同时间常数整合信号,并去除一些用于建模细粒度时间尺度的连接。
10.9.1 时间维度的跳跃连接
增加从遥远过去的变量到目前变量的直接连接是得到粗时间尺度的一种方法。使用这样跳跃连接的想法可以追溯到Lin et al.(1996),紧接是向前馈网络引入延迟的想法(Lang and Hinton,1988)。在普通的循环网络中,循环从时刻t的单元连接到时刻t+1单元。构造较长的延迟循环网络是可能的(Bengio,1991)。
正如我们在第8.2.5节看到,梯度可能关于时间步数呈指数消失或爆炸。(Lin et al.,1996)引入了d延时的循环连接以减轻这个问题。现在导数指数减小的速度与相关而不是τ。既然同时存在延迟和单步连接,梯度仍可能成t指数爆炸。这允许学习算法捕获更长的依赖性,但不是所有的长期依赖都能在这种方式下良好地表示。
10.9.2 渗漏单元和一系列不同时间尺度
获得导数乘积接近1的另一方式是设置线性自连接单元,并且这些连接的权重接近1。
我们对某些ν值应用更新µ(t)←αµ(t-1)+(1-α)ν(t)累积一个滑动平均值µ(t),其中α是一个从µ(t-1)到µ(t)线性自连接的例子。当α接近1时,滑动平均值能记住过去很长一段时间的信息,而当α接近0,关于过去的信息被迅速丢弃。线性自连接的隐藏单元可以模拟滑动平均的行为。这种隐藏单元称为渗漏单元(leaky unit)。
d时间步的跳跃连接可以确保单元总能被d个时间步前的那个值影响。使用权重接近1的线性自连接是确保该单元可以访问过去值的不同方式。线性自连接通过调节实值α更平滑灵活地调整这种效果,而不是调整整数值的跳跃长度。
这个想法由Mozer(1992)和El Hihi and Bengio(1996)提出。在回声状态网络中,渗漏单元也被发现很有用(Jaeger et al.,2007)。
我们可以通过两种基本策略设置渗漏单元使用的时间常数。一种策略是手动将其固定为常数,例如在初始化时从某些分布采样它们的值。另一种策略是使时间常数成为自由变量,并学习出来。在不同时间尺度使用这样的渗漏单元似乎能帮助学习长期依赖(Mozer,1992;Pascanu et al.,2013a)。
10.9.3 删除连接
处理长期依赖的另一种方法是在多个时间尺度组织RNN状态的想法(El Hihi and Bengio,1996),信息在较慢的时间尺度上更容易长距离流动。
这个想法与之前讨论的时间维度上的跳跃连接不同,因为它涉及主动删除长度为一的连接并用更长的连接替换它们。以这种方式修改的单元被迫在长时间尺度上运作。而通过时间跳跃连接是添加边。收到这种新连接的单元,可以学习在长时间尺度上运作,但也可以选择专注于自己其他的短期连接。
强制一组循环单元在不同时间尺度上运作有不同的方式。一种选择是使循环单元变成渗漏单元,但不同的单元组关联不同的固定时间尺度。这由Mozer(1992)提出,并被成功应用于Pascanu et al.(2013a)。另一种选择是使显式且离散的更新发生在不同的时间,不同的单元组有不同的频率。这是El Hihi and Bengio(1996)和Koutnik et al.(2014)的方法。它在一些基准数据集上表现不错。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论