文章:Sepp Hochreiter, Jürgen Schmidhuber; Long Short-Term Memory. Neural Comput 1997; 9 (8): 1735–1780. doi: https://doi.org/10.1162/neco.1997.9.8.1735
第2节 Previous Work(已有研究),这是论文对以往方法的一个评述,总结了已有递归神经网络在面对时间序列学习、尤其是长时依赖问题时的表现和限制。
翻译:本节将重点讨论具有时间变化输入的递归神经网络(而不是那些输入是静态的、且使用“固定点”式梯度计算的方法,如 Almeida 1987、Pineda 1987)。
关键词解释:
time-varying inputs:指输入是随时间变化的序列,比如语音、音乐、控制信号等
stationary inputs:输入不随时间变化,例如图像等静态数据
fixpoint-based gradient calculations:一类方法使用“固定点”收敛思想来计算梯度,主要用于稳态系统(静态RNN)
小结:本文关注的是真正处理时序数据的RNN,不讨论处理静态输入的RNN。
翻译:关于梯度下降的变体:Elman(1988)、Fahlman(1991)、Williams(1989)、Schmidhuber(1992a)、Pearlmutter(1989)等人的方法(包括 Pearlmutter 在1995年综述中提到的许多相关算法)都遭遇了与 BPTT 和 RTRL 相同的问题(详见第1和第3节)。
关键词解释:
Gradient-descent variants:各种基于梯度下降的递归网络学习方法
BPTT(Backpropagation Through Time) 和 RTRL(Real-Time Recurrent Learning):两种最经典的RNN训练算法,已知在长序列学习中易出现梯度爆炸/消失
小结:这些早期方法虽各有创新,但在长时间依赖上仍存在根本缺陷,未能有效解决梯度消失问题。
翻译:关于时间延迟:有些方法适用于较短时间间隔的情形,例如时间延迟神经网络(TDNN)(Lang 等,1990)和 Plate 的方法(1993),后者通过旧激活值的加权和来更新神经元状态(见 de Vries 和 Principe 1991)。
关键词解释:
TDNN(Time-Delay Neural Networks):一种显式引入“过去输入”的网络结构,适合固定短窗口
Plate's method:通过记录并加权过往神经元状态(类似记忆机制),但只适合短期依赖
weighted sum of old activations:利用过去激活值的加权平均来建模记忆
小结:这些方法处理短时依赖问题尚可,但在需要记住很久远信息时仍然力不从心。
翻译:
Lin 等人(1995)提出了时间延迟网络的一种变体,称为 NARX 网络。
关键词解释:
NARX(Nonlinear AutoRegressive with eXogenous inputs)网络:一种结合自回归和外部输入的神经网络结构,适合建模非线性时间序列
小结:NARX 网络在一定程度上改进了 TDNN,能够学习更复杂的时间序列关系,但其依赖预定义的输入延迟窗口,仍难以学习长期依赖。
继续回顾了历史上不同方法为了解决“长时间间隔依赖”(long time lags)问题所做的尝试,并一一指出了这些方法的局限性。
原文:
To deal with long time lags, Mozer (1992) uses time constants influencing changes of unit activations (de Vries and Principe's above-mentioned approach (1991) may in fact be viewed as a mixture of TDNN and time constants). For long time lags, however, the time constants need external fine tuning (Mozer 1992).
翻译与解析:为了解决长时间间隔的问题,Mozer(1992)提出使用“时间常数”机制(控制神经元激活值的变化速度)。而 de Vries 和 Principe(1991)的方法其实可以看作是“时间延迟神经网络(TDNN)”和“时间常数机制”的混合体。
但在应对长时间间隔时,这种方法需要对“时间常数”进行外部精细调节,这在实际应用中比较困难,泛化性较差。
关键词解释:
Time constant:控制神经元激活变化“快慢”的参数,可以帮助记忆过去状态
Fine tuning:需要人为微调,增加使用成本
总结:时间常数机制的核心思想是“放慢信息的遗忘速度”,但在实际使用中太依赖人为设定参数,难以扩展。
原文:
Sun et al.'s alternative approach (1993) updates the activation of a recurrent unit by adding the old activation and the (scaled) current net input. The net input, however, tends to perturb the stored information, which makes long-term storage impractical.
翻译与解析:Sun 等人(1993)提出了另一种方法:将神经元的激活值更新为“旧激活值 + 当前输入的加权和”。这种方法理论上可以延续之前的记忆,但实际中,新的输入容易干扰已存储的信息,导致记忆不稳定,无法实现长期存储。
关键词解释:
perturb the stored information:干扰已存信息,导致遗忘
scaled input:对当前输入进行缩放以控制影响大小
总结:这种方法试图“累加记忆”,但新输入可能导致原有信息被覆盖,不适合处理长依赖。
原文:
Ring (1993) also proposed a method for bridging long time lags. Whenever a unit in his network receives conflicting error signals, he adds a higher order unit influencing appropriate connections. Although his approach can sometimes be extremely fast, to bridge a time lag involving 100 steps may require the addition of 100 units. Also, Ring's net does not generalize to unseen lag durations.
翻译与解析:Ring(1993)提出了一种应对长时间依赖的新方法:当神经元接收到相互冲突的误差信号时,网络会添加一个“更高阶”的单元来调节连接。
这种机制在某些场景下确实很快,但问题是:每处理一个时间步的间隔,就需要增加一个新单元,比如要处理100步的时间滞后,就可能需要100个单元,代价非常高。而且这种网络无法泛化到未见过的时间间隔。
总结:Ring 的方法本质是“加结构换记忆”,牺牲模型简洁性来获得记忆能力,但扩展性差,泛化性弱。
原文:
Bengio et al. (1994) investigate methods such as simulated annealing, multi-grid random search, time-weighted pseudo-Newton optimization, and discrete error propagation. Their "latch" and "2-sequence" problems are very similar to problem 3a with minimal time lag 100 (see Experiment 3). Bengio and Frasconi (1994) also propose an EM approach for propagating targets. With n so-called "state networks", at a given time, their system can be in one of only n different states. See also beginning of Section 5. But to solve continuous problems such as the "adding problem" (Section 5.4), their system would require an unacceptable number of states (i.e., state networks).
翻译与解析:Bengio 等人(1994)探索了多种复杂优化方法,例如:模拟退火、多尺度随机搜索、时间加权伪牛顿法和离散误差传播。他们提出了两个任务:“锁存(latch)”和“两段式序列(2-sequence)”问题,这与本文的实验3(最小时间滞后为100)类似。
后来,Bengio 和 Frasconi(1994)又提出了基于 EM(期望最大化)算法传播标签的做法。他们使用一种“状态网络”,系统中某时刻只能处于 n 个状态中的一个。但如果要解决类似“加法问题”(一个典型的连续值任务),这种方法就会需要非常多的状态,使系统复杂到难以接受。
关键词解释:
State networks:将系统表示为有限状态机,每个状态用一个网络表示
Adding problem:连续值任务中典型测试问题,测试网络是否能长期记住两个数字的位置并加和
总结:Bengio 的方法在理论上有创新,但在实际处理连续型任务时代价太高,不切实际。
Puskorius 和 Feldkamp (1994) 利用了 Kalman 滤波 技术来优化循环神经网络(RNN)的表现。
他们引入了一个叫做 导数折扣因子(derivative discount factor) 的机制,使得过去时间步的导数对当前的影响会呈指数衰减。
这种方式快速地淡化了过去信息的影响,所以 不适用于需要保留长时依赖的任务。
Watrous 和 Kuhn (1992) 提出了使用 乘性单元(Multiplicative Units, MUs) 的二阶循环神经网络(second-order recurrent nets):
与后来的 LSTM 不同,他们的方法:
不强制实现恒定的误差传播路径(constant error flow),所以不适合解决长时间依赖问题;
使用了全连接的二阶 sigma-pi 单元,这是比较复杂的一种乘性结构;
计算复杂度为 O(W²),而 LSTM 结构的复杂度为 O(W),更高效。(W 表示网络中的权重数。)
Schmidhuber 和 Hochreiter 发现,对于某些非常简单的问题,不使用梯度训练,而是不断随机初始化网络的权重直到网络可以正确分类所有训练样本,反而效果更好、更快。
但是这并不意味着这种方法本身好,只是说明这些问题本身太简单;
对于现实中复杂的任务,网络需要:
大量参数;
或者对权重精度要求很高; → 所以这种猜测方法完全不可行。
Schmidhuber 的 hierarchical chunker 系统(1992b, 1993)是另一种应对长时间依赖的方法:
它使用层次化的循环神经网络结构来“分块”处理序列,并在存在可预测性(local predictability)时可以处理极长的时间延迟(超过1000步);
但是缺点是:如果序列中存在噪声或无法压缩的模式,系统表现就会明显下降;
相比之下,LSTM 不会因为序列不可压缩而表现变差。
方法 | 优点 | 局限 |
---|---|---|
Elman, RTRL, BPTT 等 | 能处理时序 | 容易梯度消失或爆炸 |
TDNN | 可处理短时延 | 固定窗口,不适应长依赖 |
Plate方法 | 简单记忆机制 | 只适合短期依赖 |
NARX | 支持外部输入、自回归 | 强依赖结构设定,难应对长期依赖 |
方法 | 主要机制 | 问题 |
---|---|---|
时间常数(Mozer) | 控制激活变化速度 | 需要手动调参 |
累加记忆(Sun) | 旧值 + 新输入 | 容易被干扰,信息丢失 |
高阶单元(Ring) | 加单元解决冲突 | 扩展性差,不泛化 |
状态网络(Bengio) | 每种状态一个网络 | 状态数量爆炸,不适合连续任务 |
方法 | 能否处理长时间依赖 | 缺点 |
---|---|---|
Kalman Filter | 否 | 过去信息影响衰减太快 |
Second-order nets | 否 | 结构复杂,不保留误差信息 |
权重猜测 | 仅适用于简单问题 | 无法扩展到复杂任务 |
Chunker 系统 | 是(部分) | 输入不压缩时性能下降 |
✅ LSTM | 是 | 无上述缺陷,且高效 |