写点什么

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

2019 年 9 月 10 日

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 的误差传递公式:



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



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


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


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



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


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


LSTM 的结构

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



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



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



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


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



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



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



最后,是输出门。根据新的细胞状态和输入信息,产生新的输出 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


2019 年 9 月 10 日 19:392368

评论

发布
暂无评论
发现更多内容

架构师训练营 - 第12周

袭望

第十二周 架构方法学习总结 —— 数据应用

兵长

「奇淫技巧」如何写最少的代码

Kerwin

Java 代码设计 代码技巧

架构第12周作业

Geek_Gu

极客大学架构师训练营

架构师训练营第十二周学习笔记

一马行千里

架构师训练营 2 期 Week08 作业

CJian

week8-作业一

未来已来

第十二周 学习总结

熊桂平

极客大学架构师训练营

减肥为什么会失败,有可能是因为你仍然在摄入容易消化的食用糖。

叶小鍵

科普 减肥、廋身 盖里·陶比斯 加工食用糖

架构师训练营 12 周笔记

郎哲158

第三周总结

胡益

架构师训练营 2 期 Week08 总结

CJian

ARTS打卡 第25周

引花眠

微服务 ARTS 打卡计划 springboot

第十二周 作业1

Yangjing

极客大学架构师训练营

ARTS打卡 第26周

引花眠

微服务 ARTS 打卡计划 springboot

ARTS打卡 第27周

引花眠

微服务 ARTS 打卡计划 springboot

Week 12 學習總結

Christy LAW

week8-作业二-根据当周学习情况,完成一篇学习总结

未来已来

第十二周 作业

熊桂平

极客大学架构师训练营

架构1期 第十二周作业

haha

第十二周 作业2

Yangjing

极客大学架构师训练营

架构第12周总结

Geek_Gu

极客大学架构师训练营

架构师训练营 1 期 - 第 十二周作业(vaik)

行之

极客大学架构师训练营

Week_12 总结

golangboy

极客大学架构师训练营

第12周作业

paul

与前端训练营的日子 --Week07

SamGo

学习

数据应用(一)

wing

极客大学架构师训练营

架构师训练营 1 期 - 第 十二周总结(vaik)

行之

极客大学架构师训练营

SpringBoot系列(6)- 测试

引花眠

spring springboot

第十二周 数据应用(一)总结

钟杰

极客大学架构师训练营

Week 12 作業

Christy LAW

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

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