NLP 中应用最广泛的特征抽取模型 -LSTM

阅读数:1948 2019 年 9 月 10 日 19:39

NLP中应用最广泛的特征抽取模型-LSTM

NLP中应用最广泛的特征抽取模型-LSTM

本篇介绍在 NLP 中应用最为广泛的特征抽取模型 LSTM,详细介绍 LSTM 提出的由来及其模型结构,并由此分析了 LSTM 能够解决 RNN 不能够对长序列进行处理和训练的原因。

在此前的文章中我曾提到过 RNN 模型结构及其反向传播和正向传播机制,文末提到 RNN 会出现梯度消失等问题,使得训练变得困难。既然 RNN 有这样的问题,该怎么解决呢?我们今天的主角 LSTM(Long Short-Term Memory) 就该登场了。

LSTM 的提出

在 LSTM 提出之前,RNN 的训练基于 BPTT(Back-Propagation Through Time) 或者 RTRL(Real Time Recurrent Learning)。通过这两种方式对 RNN 进行训练时,当误差在序列内进行传播时,会出现梯度消失或者爆炸的情况。

当出现梯度消失时,在训练时,权重会出现摇摆和震荡;梯度消失使得训练会耗费大量的时间,甚至干脆就停滞。

基于这样的情况,两位大神 Sepp Hochreiter 和 Jürgen Schmidhuber 提出了 LSTM:

Hochreiter, S, and J. Schmidhuber. “Long short-term memory.” Neural Computation 9.8(1997):1735-1780。

我们先回顾一下 RNN 的误差传递公式:

NLP中应用最广泛的特征抽取模型-LSTM

一个很简单的想法,如果误差在不同时刻相互连接的 RNN 单元之间,传递的是一个常量,即令下式是一个常量。其中 f 为激活函数。

NLP中应用最广泛的特征抽取模型-LSTM

这样,梯度消失或者爆炸的问题是不是就可以解决了?

因此,Sepp Hochreiter 和 Jürgen Schmidhuber 提出了 CEC(Constant Error Carrousel),这也是 LSTM 的核心特点。

所谓 CEC,就是令 (如下图)

NLP中应用最广泛的特征抽取模型-LSTM

Sepp Hochreiter 和 Jürgen Schmidhuber 指出可以选择恒等函数作为激活函数,并且令 w_j,j=1 便可满足上式,保证梯度在误差随时间传递之后不至于出现梯度消失或者梯度爆炸。这个想法很简单和朴素,因此 Sepp Hochreiter 和 Jürgen Schmidhuber 称之为Naive Approach

但是对 RNN 仅仅是做这样的修改也还会有一些问题,不管是输入权重还是输出权重,在更新都既要考虑“记住”前面时刻的内容;又要考虑不要让前面时刻的内容干扰到当前时刻的输入,这种矛盾会使训练变得困难。因此两位大神针对这个问题,设计新的模型结构,下面介绍 LSTM 的模型结构。

LSTM 的结构

现在网络上讲 LSTM 结构的文章,实在是太多了,小 Dream 哥本来是不想再讲的。出于文章完整性和系统性的考虑,这里还是将 LSTM 的模型结构和前向传播过程列一下。

NLP中应用最广泛的特征抽取模型-LSTM

可以看到 LSTM 的结构要比 RNN 的复杂的多,其主要是增加了细胞状态和 3 个门结构。看上去比较复杂,同学们先不要着急,下面我们一步一步来讲一讲 LSTM 的结构。

NLP中应用最广泛的特征抽取模型-LSTM

如上图,细胞状态 C_t 横向穿过,看起来像一条传送带,只是经过了少量的线性变化,因此状态容易保持下来。

NLP中应用最广泛的特征抽取模型-LSTM

上图是 LSTM 的第一个门,遗忘门。这个门根据输入信息 (h_t-1 和 x_t) 决定要忘记细胞状态 C_t-1 的哪些部分。

接下来是信息更新门,决定了细胞状态 C_t,它分为两个部分。

NLP中应用最广泛的特征抽取模型-LSTM

第一步,根据输入信息,用 tanh 产生该时刻需要更新到细胞状态中的内容;用 sigmoid 函数产生更新的比例。

NLP中应用最广泛的特征抽取模型-LSTM

第二步,将需要更新的内容更新到细胞状态中去,生成 C_t。

NLP中应用最广泛的特征抽取模型-LSTM

最后,是输出门。根据新的细胞状态和输入信息,产生新的输出 h_t。

上面大致介绍了 LSTM 的结构,及其前向传播过程,图片来自:

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

这里先总结一下,LSTM 在原本 RNN 的基础上增加了 CEC 的内容,CEC 保证了误差以常数的形式在网络中流动,这部分通过引入细胞状态 C来体现。并且,为了解决输入和输出在参数更新时的矛盾,在 CEC 的基础上添加 3 个门使得模型变成非线性的,就可以调整不同时序的输出对模型后续动作的影响。

LSTM 局限性

LSTM 提出之后,在语音处理、机器翻译、实体识别等 NLP 领域迅速取得很好的效果,在工业界获得很好的应用。但其也有一定的局限性,下面我们做一下介绍。

(1) 相较于 RNN,LSTM 的网络结构复杂很多,因为引入了更多的权重参数,这增加了计算的复杂度。

(2) 不管是 RNN,还是它的衍生 LSTM 等,都需要随着时间推移进行顺序处理。因此对于输入序列的处理效率很低。

(3) 特征提取能力不强,t 时刻的输入不能提取到 t 时刻之后序列信息的内容。这点在 transformer 出来之后,体现的尤为明显。

总结

上文详细讲述了 LSTM 提出的由来,大致介绍了其模型结构,由此分析了其能够解决 RNN 无法训练的问题。最后,介绍了 LSTM 的局限性。

LSTM 是一个应用广泛的模型,但随着 Attention 机制的提出,transfomer 开始作为一种更为强大的特征抽取模型,开始横扫各大 NLP 任务的榜单。不出意外,transformer 将会取代 RNN 及其衍生 (LSTM GRU) 模型,成为 NLP 中,最受欢迎、最为强大的特征抽取模型。

原文链接

https://mp.weixin.qq.com/s/9Go7TmJkuEZha4KIl2Ueyw

评论

发布