序言
在序列建模的广阔领域中,循环神经网络( RNN \text{RNN} RNN)以其独特的能力在处理可变长度序列数据上展现出了巨大的潜力。然而,传统的 RNN \text{RNN} RNN在处理长期依赖问题时,往往面临着梯度消失或爆炸的困境,这限制了其在复杂序列任务中的应用。为了克服这一挑战,研究者们提出了长短期记忆( LSTM \text{LSTM} LSTM)和其他门控 RNN \text{RNN} RNN结构,这些结构通过引入精细的门控机制,显著提升了 RNN \text{RNN} RNN捕捉长期依赖关系的能力。
长短期记忆和其他门控RNN
- 本文撰写之时,实际应用中最有效的序列模型称为门控
RNN
\textbf{RNN}
RNN (
gated RNN
\text{gated RNN}
gated RNN)。包括:
- 基于长短期记忆 ( long short-term memory \text{long short-term memory} long short-term memory) ,
- 基于门控循环单元 ( gated recurrent unit \text{gated recurrent unit} gated recurrent unit) 的网络。
- 像渗漏单元一样, 门控
RNN
\text{RNN}
RNN想法也是基于生成通过时间的路径,其中导数既不消失也不发生爆炸。
- 渗漏单元通过手动选择常量的连接权重或参数化的连接权重来达到这一目的。
- 门控 RNN \text{RNN} RNN将其推广为在每个时间步都可能改变的连接权重。
- 渗漏单元允许网络在较长持续时间内积累信息(诸如用于特定特征或类的线索)。
- 然而,一旦该信息被使用,让神经网络遗忘旧的状态可能是有用的。
- 例如,如果一个序列是由子序列组成,我们希望渗漏单元能在各子序列内积累线索,我们需要将状态设置为 0 0 0 以忘记旧状态的的机制。
- 我们希望神经网络学会决定何时清除状态,而不是手动决定。这就是门控 RNN \text{RNN} RNN要做的事。
LSTM
- 引入自循环的巧妙构思,以产生梯度长时间持续流动的路径是初始长短期记忆 (
long short-term memory, LSTM
\text{long short-term memory, LSTM}
long short-term memory, LSTM) 的核心贡献 (
Hochreiter and Schmidhuber,1997
\text{Hochreiter and Schmidhuber,1997}
Hochreiter and Schmidhuber,1997)。
- 其中一个关键扩展是使自循环的权重视上下文而定,而不是固定的 ( Gers et al., 2000 \text{Gers et al., 2000} Gers et al., 2000)。
- 门控此自循环(由另一个隐藏单元控制)的权重,累积的时间尺度可以动态地改变。
- 在这种情况下,即使是具有固定参数的 LSTM \text{LSTM} LSTM,累积的时间尺度也可以因输入序列而改变,因为时间常数是模型本身的输出。
-
LSTM
\textbf{LSTM}
LSTM已经在许多应用中取得重大成功,如:
- 无约束手写识别 ( Graves and Schmidhuber, 2009 \text{Graves and Schmidhuber, 2009} Graves and Schmidhuber, 2009)
- 语音识别( Graves et al., 2013; Graves and Jaitly, 2014 \text{Graves et al., 2013; Graves and Jaitly, 2014} Graves et al., 2013; Graves and Jaitly, 2014)
- 手写识别 ( Graves et al., 2013 \text{Graves et al., 2013} Graves et al., 2013)
- 机器翻译 ( Sutskever et al., 2014 \text{Sutskever et al., 2014} Sutskever et al., 2014)
- 为图像生成标题 ( Kiros et al., 2014b; Vinyals et al.,2014b; Xu et al., 2015 \text{Kiros et al., 2014b; Vinyals et al.,2014b; Xu et al., 2015} Kiros et al., 2014b; Vinyals et al.,2014b; Xu et al., 2015)
- 解析 ( Vinyals et al., 2014a \text{Vinyals et al., 2014a} Vinyals et al., 2014a)
- LSTM块如
图例1
所示。- 在浅循环网络的架构下,相应的前向传播公式如下。
- 更深的架构也被成功应用 ( Graves et al., 2013; Pascanu et al., 2014a \text{Graves et al., 2013; Pascanu et al., 2014a} Graves et al., 2013; Pascanu et al., 2014a)。
- LSTM \text{LSTM} LSTM循环网络除了外部的 RNN \text{RNN} RNN循环外,还具有内部的 “ LSTM \text{LSTM} LSTM细胞’’ 循环(自环),因此 LSTM \text{LSTM} LSTM不是简单地向输入和循环单元的仿射变换之后施加一个逐元素的非线性。
- 与普通的循环网络类似,每个单元有相同的输入和输出,但也有更多的参数和控制信息流动的门控单元系统。
- 最重要的组成部分是状态单元
s
i
(
t
)
s_i^{(t)}
si(t) ,与
渗漏单元和其他多时间尺度的策略篇
讨论的渗漏单元有类似的线性自环。 - 然而,此处自环的权重(或相关联的时间常数)由遗忘门 (
forget gate
\text{forget gate}
forget gate)
f
i
(
t
)
f_i^{(t)}
fi(t) 控制(时刻
t
t
t 和细胞
i
i
i),由
sigmoid
\text{sigmoid}
sigmoid单元将权重设置为
0
0
0 和
1
1
1 之间的值:
f i ( t ) = σ ( b i f + ∑ j U i , j f x j ( t ) + ∑ j W i , j f h j ( t − 1 ) ) f_i^{(t)}=\sigma\left(b_i^f+\sum\limits_j U_{i,j}^f x_j^{(t)}+\sum\limits_j W_{i,j}^f h_j^{(t-1)}\right) fi(t)=σ(bif+j∑Ui,jfxj(t)+j∑Wi,jfhj(t−1)) — 公式1 \quad\textbf{---\footnotesize{公式1}} —公式1
公式1
参数明说:- 其中, x ( t ) \boldsymbol{x}^{(t)} x(t)是当前输入向量。
- h t \boldsymbol{h}^t ht是当前隐藏层向量, h t \boldsymbol{h}^t ht包含所有 LSTM \text{LSTM} LSTM细胞的输出。
- b f \boldsymbol{b}^f bf, U f \boldsymbol{U}^f Uf, W f \boldsymbol{W}^f Wf分别是偏置、输入权重和遗忘门的循环权重。
- 因此
LSTM
\text{LSTM}
LSTM细胞内部状态以如下方式更新,其中有一个条件的自环权重
f
i
(
t
)
f_i^{(t)}
fi(t):
s i ( t ) = f i ( t ) s i ( t − 1 ) + g i ( t ) σ ( b i + ∑ j U i , j x j ( t ) + ∑ j W i , j h j ( t − 1 ) ) s_i^{(t)}=f_i^{(t)}s_i^{(t-1)}+g_i^{(t)}\sigma\left(b_i+\sum\limits_j U_{i,j} x_j^{(t)}+\sum\limits_j W_{i,j} h_j^{(t-1)}\right) si(t)=fi(t)si(t−1)+gi(t)σ(bi+j∑Ui,jxj(t)+j∑Wi,jhj(t−1)) — 公式2 \quad\textbf{---\footnotesize{公式2}} —公式2
公式2
参数明说:- 其中, b \boldsymbol{b} b、 U \boldsymbol{U} U、 W \boldsymbol{W} W分别是 LSTM \text{LSTM} LSTM细胞中的偏置、输入权重和遗忘门的循环权重。
- 外部输入门(
external input gate
\text{external input gate}
external input gate)单元
g
i
(
t
)
g_i^{(t)}
gi(t)以类似遗忘门(使用
sigmoid
\text{sigmoid}
sigmoid获得一个
0
0
0和
1
1
1之间的值)的方式更新,但有自身的参数:
g i ( t ) = σ ( b i g + ∑ j U i , j g x j ( t ) + ∑ j W i , j g h j ( t − 1 ) ) g_i^{(t)}=\sigma\left(b_i^g+\sum\limits_j U_{i,j}^g x_j^{(t)}+\sum\limits_j W_{i,j}^g h_j^{(t-1)}\right) gi(t)=σ(big+j∑Ui,jgxj(t)+j∑Wi,jghj(t−1)) — 公式3 \quad\textbf{---\footnotesize{公式3}} —公式3 -
LSTM
\text{LSTM}
LSTM细胞的输出
h
i
(
t
)
h_i^{(t)}
hi(t)也可以由输出门(
output gate
\text{output gate}
output gate)
q
i
(
t
)
q_i^{(t)}
qi(t)关闭(使用
sigmoid
\text{sigmoid}
sigmoid单元作为门控):
h i ( t ) = tanh ( s i ( t ) ) q i ( t ) h_i^{(t)}=\tanh(s_i^{(t)})q_i^{(t)} hi(t)=tanh(si(t))qi(t) — 公式4 \quad\textbf{---\footnotesize{公式4}} —公式4
q i ( t ) = σ ( b i q + ∑ j U i , j o x j ( t ) + ∑ j W i , j o h j ( t − 1 ) ) q_i^{(t)}=\sigma\left(b_i^q+\sum\limits_j U_{i,j}^o x_j^{(t)}+\sum\limits_j W_{i,j}^o h_j^{(t-1)}\right) qi(t)=σ(biq+j∑Ui,joxj(t)+j∑Wi,johj(t−1)) — 公式5 \quad\textbf{---\footnotesize{公式5}} —公式5
公式5
参数明说:- 其中, b o \boldsymbol{b}^o bo、 U o \boldsymbol{U}^o Uo、 W o \boldsymbol{W}^o Wo分别是偏置、输入权重和遗忘门的循环权重。
- 在这些变体中,可以选择使用细胞状态
s
i
(
t
)
s_i^{(t)}
si(t)作为额外的输入(及其权重),输入到第
i
i
i个单元的三个门,如
图例1
所示。这将需要三个额外的参数。
-
LSTM
\text{LSTM}
LSTM网络比简单的循环架构更易于学习长期依赖,先是用于测试长期依赖学习能力的人工数据集 (
Bengio et al., 1994b; Hochreiter and Schmidhuber, 1997;Hochreiter et al., 2001
\text{Bengio et al., 1994b; Hochreiter and Schmidhuber, 1997;Hochreiter et al., 2001}
Bengio et al., 1994b; Hochreiter and Schmidhuber, 1997;Hochreiter et al., 2001),然后是在具有挑战性的序列处理任务上获得最先进的表现(
Graves, 2012, 2013; Sutskever et al., 2014
\text{Graves, 2012, 2013; Sutskever et al., 2014}
Graves, 2012, 2013; Sutskever et al., 2014)。
LSTM
\text{LSTM}
LSTM的变体和替代也已经被研究和使用,将在
下文
进行讨论。
其他门控RNN
-
LSTM \text{LSTM} LSTM架构中哪些部分是真正必须的?
-
还可以设计哪些其他成功架构允许网络动态地控制时间尺度和不同单元的遗忘行为?
-
最近关于门控 RNN \textbf{RNN} RNN的工作给出了这些问题的某些答案,其单元也被称为门控循环单元或 GRU \textbf{GRU} GRU ( Cho et al., 2014c; Chung et al., 2014, 2015a; Jozefowicz et al., 2015; Chrupala et al., 2015 \text{Cho et al., 2014c; Chung et al., 2014, 2015a; Jozefowicz et al., 2015; Chrupala et al., 2015} Cho et al., 2014c; Chung et al., 2014, 2015a; Jozefowicz et al., 2015; Chrupala et al., 2015)。
-
与 LSTM \text{LSTM} LSTM的主要区别是,单个门控单元同时控制遗忘因子和更新状态单元的决定。更新公式如下:
h i ( t ) = u i ( t − 1 ) h i ( t − 1 ) + ( 1 − u i ( t − 1 ) ) σ ( b i + ∑ j U i , j x j ( t ) + ∑ j W i , j r j ( t − 1 ) h j ( t − 1 ) ) h_i^{(t)}=u_i^{(t-1)}h_i^{(t-1)}+(1-u_i^{(t-1)})\sigma\left(b_i+\sum\limits_j U_{i,j} x_j^{(t)}+\sum\limits_j W_{i,j} r_j^{(t-1)} h_j^{(t-1)}\right) hi(t)=ui(t−1)hi(t−1)+(1−ui(t−1))σ(bi+j∑Ui,jxj(t)+j∑Wi,jrj(t−1)hj(t−1)) — 公式6 \quad\textbf{---\footnotesize{公式6}} —公式6
公式6
参数明说:- 其中, u u u代表“更新”门
- r r r表示“复位”门
- 它们的值分别就如通常所定义的:
u i ( t ) = σ ( b i u + ∑ j U i , j u x j ( t ) + ∑ j W i , j u h j ( t ) ) u_i^{(t)}=\sigma\left(b_i^u+\sum\limits_j U_{i,j}^u x_j^{(t)}+\sum\limits_j W_{i,j}^u h_j^{(t)}\right) ui(t)=σ(biu+j∑Ui,juxj(t)+j∑Wi,juhj(t)) — 公式7 \quad\textbf{---\footnotesize{公式7}} —公式7
r i ( t ) = σ ( b i r + ∑ j U i , j r x j ( t ) + ∑ j W i , j r h j ( t ) ) r_i^{(t)}=\sigma\left(b_i^r+\sum\limits_j U_{i,j}^r x_j^{(t)}+\sum\limits_j W_{i,j}^r h_j^{(t)}\right) ri(t)=σ(bir+j∑Ui,jrxj(t)+j∑Wi,jrhj(t)) — 公式8 \quad\textbf{---\footnotesize{公式8}} —公式8
-
复位和更新门能独立地 ‘‘忽略’’ 状态向量的一部分。
- 更新门像条件渗漏累积器一样可以线性门控任意维度,从而选择将它复制(在 sigmoid \text{sigmoid} sigmoid的一个极端)或完全由新的‘‘目标状态’’ 值(朝向渗漏累积器的收敛方向)替换并完全忽略它(在另一个极端)。
- 复位门控制当前状态中哪些部分用于计算下一个目标状态,在过去状态和未来状态之间引入了附加的非线性效应。
-
围绕这一主题可以设计更多的变种。
- 例如复位门(或遗忘门)的输出可以在多个隐藏单元间共享。
- 或者,全局门的乘积(覆盖一整组的单元,例如整一层)和一个局部门(每单元)可用于结合全局控制和局部控制。
- 然而,一些调查发现这些 LSTM \text{LSTM} LSTM和 GRU \text{GRU} GRU 架构的变种,在广泛的任务中难以明显地同时击败这两个原始架构 ( Greff et al., 2015; Jozefowicz et al., 2015 \text{Greff et al., 2015; Jozefowicz et al., 2015} Greff et al., 2015; Jozefowicz et al., 2015)。
- Greff et al. (2015) \text{Greff et al. (2015)} Greff et al. (2015) 发现其中的关键因素是遗忘门,而 Jozefowicz et al. (2015) \text{Jozefowicz et al. (2015)} Jozefowicz et al. (2015) 发现向 LSTM \text{LSTM} LSTM遗忘门加入 1 1 1 的偏置(由 Gers et al. (2000) \text{Gers et al. (2000)} Gers et al. (2000) 提倡) 能让 LSTM \text{LSTM} LSTM变得与已探索的最佳变种一样健壮。
- 图例1:
LSTM
\text{LSTM}
LSTM循环网络‘‘细胞’’ 的框图。
-
LSTM \text{LSTM} LSTM循环网络‘‘细胞’’ 的框图。
-
说明:
- 细胞彼此循环连接,代替一般循环网络中普通的隐藏单元。
- 这里使用常规的人工神经元计算输入特征。
- 如果 sigmoid \text{sigmoid} sigmoid 输入门允许,它的值可以累加到状态。
- 状态单元具有线性自循环,其权重由遗忘门控制。
- 细胞的输出可以被输出门关闭。
- 所有门控单元都具有 sigmoid \text{sigmoid} sigmoid 非线性,而输入单元可具有任意的压缩非线性。
- 状态单元也可以用作门控单元的额外输入。黑色方块表示单个时间步的延迟。
-
总结
-
长短期记忆( LSTM \text{LSTM} LSTM)作为门控 RNN \text{RNN} RNN的杰出代表,其核心贡献在于引入了自循环的概念,并巧妙地通过遗忘门、输入门和输出门等门控单元来控制信息的流动。这种设计使得 LSTM \text{LSTM} LSTM能够在长期记忆中保留重要信息,同时遗忘不相关信息,从而有效解决了传统 RNN \text{RNN} RNN的梯度问题。此外, LSTM \text{LSTM} LSTM的灵活性和扩展性也为其在语音识别、自然语言处理、图像处理等多个领域的应用提供了坚实的基础。
-
其他门控 RNN \text{RNN} RNN,如门控循环单元( GRU \text{GRU} GRU),也通过类似的门控机制,实现了对信息流的精细控制,并在一些特定任务上取得了与 LSTM \text{LSTM} LSTM相当甚至更好的性能。这些门控 RNN \text{RNN} RNN结构的出现,不仅丰富了序列建模的工具箱,更为解决复杂序列问题提供了更为有力的手段。
-
综上所述,长短期记忆和其他门控 RNN \text{RNN} RNN以其卓越的处理长期依赖能力和广泛的应用前景,在序列建模之循环和递归网络中占据了举足轻重的地位。随着深度学习技术的不断发展,这些结构将在更多领域发挥更大的作用。
往期相关重要内容回顾
序列建模之循环和递归网络 - 渗漏单元和其他多时间尺度的策略篇