处理长期依赖的一种方法是设计工作在多个时间尺度的模型,使模型的某些部分在细粒度时间尺度上操作并能处理小细节,而其他部分在粗时间尺度上操作并能把遥远过去的信息更有效地传递过来。 存在多种同时构建粗细时间尺度的策略。 这些策略包括在时间轴增加跳跃连接,"渗漏单元"使用不同时间常数整合信号,以及去除一些用于建模细粒度时间尺度的连接。
[success]
问:为什么要构建多时间尺度的模型? 答:不同的时间尺度有不同的作用:
细粒度:处理小细节
粗粒度:能把遥远过去的信息更有效地传递过来
以下是构建多时间尺度的模型的方法。
1.1. 时间维度的跳跃连接
增加从遥远过去的变量到目前变量的直接连接是得到粗时间尺度的一种方法。 使用这样跳跃连接的想法可以追溯到{Lin-ieeetnn96},紧接是向前馈网络引入延迟的想法{cite?}。
[warning] 为什么这里会提到前馈网络?
在普通的循环网络中,循环从时刻的单元连接到时刻单元。 构造较长的延迟循环网络是可能的{cite?}。
正如我们在\sec?看到,梯度可能\emph{关于时间步数}呈指数消失或爆炸。 {cite?}引入了延时的循环连接以减轻这个问题。 现在导数指数减小的速度与相关而不是。 既然同时存在延迟和单步连接,梯度仍可能成指数爆炸。 这允许学习算法捕获更长的依赖性,但不是所有的长期依赖都能在这种方式下良好地表示。
[success] 优点:
(1)减轻梯度消失/爆炸问题。
(2)捕获更长的依赖
1.2. 渗漏单元和一系列不同时间尺度
获得导数乘积接近1的另一方式是设置\emph{线性}自连接单元,并且这些连接的权重接近1。
我们对某些值应用更新累积一个滑动平均值,其中是一个从到线性自连接的例子。 当接近1时,滑动平均值能记住过去很长一段时间的信息,而当接近0,关于过去的信息被迅速丢弃。
[success]
代表历史信息,代表当前信息。
a接近1相当于粗粒度,a接近0相当于细粒度。
线性自连接的隐藏单元可以模拟滑动平均的行为。 这种隐藏单元称为渗漏单元。
时间步的跳跃连接可以确保单元总能被个时间步前的那个值影响。 使用权重接近1的线性自连接是确保该单元可以访问过去值的不同方式。 线性自连接通过调节实值(而不是调整整数值的跳跃长度)更平滑灵活地调整这种效果。
这个想法由{Mozer-nips92}和{ElHihi+Bengio-nips8}提出。 在回声状态网络中,渗漏单元也被发现很有用{cite?}。
我们可以通过两种基本策略设置渗漏单元使用的时间常数。
[success]
1.设置为常量2.自己学习
一种策略是手动将其固定为常数,例如在初始化时从某些分布采样它们的值。 另一种策略是使时间常数成为自由变量,并学习出来。 在不同时间尺度使用这样的渗漏单元似乎能帮助学习长期依赖{cite?}。
1.3. 删除连接
处理长期依赖另一种方法是在多个时间尺度组织RNN状态的想法{cite?},信息在较慢的时间尺度上更容易长距离流动。
这个想法与之前讨论的时间维度上的跳跃连接不同,因为它涉及主动\emph{删除}长度为一的连接并用更长的连接替换它们。 以这种方式修改的单元被迫在长时间尺度上运作。 而通过时间跳跃连接是\emph{添加}边。 收到这种新连接的单元,可能会学习在长时间尺度上运作,但也可能选择专注于自己其他的短期连接。
强制一组循环单元在不同时间尺度上运作有不同的方式。 一种选择是使循环单元变成渗漏单元,但不同的单元组关联不同的固定时间尺度。 这由{Mozer-nips92}提出,并被成功应用于{Pascanu+al-ICML2013-small}。 另一种选择是使显式且离散的更新发生在不同的时间,不同的单元组有不同的频率。 这是{ElHihi+Bengio-nips8}和{Koutnik-et-al-ICML2014}的方法。 它在一些基准数据集上表现不错。
[warning] 这一段没看懂。