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

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

作者&编辑 | 小Dream哥

上周介绍了RNN模型结构及其反向传播和正向传播机制。文末提到了RNN会出现梯度消失等问题,使得训练变得困难,但因为篇幅限制,没有介绍其具体的原因,后面小Dream哥在 有三AI-NLP 知识星球里详细介绍了这一方面的内容,感兴趣的同学可以移步如下链接:

RNN梯度消失原因详解:https://t.zsxq.com/7qzRBeE

那好,既然RNN有这样的问题,该怎么解决呢?我们今天的主角LSTM(Long Short-Term Memory)就该登场了。

1 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的模型结构。

2 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个门使得模型变成非线性的 ,就可以调整不同时序的输出对模型后续动作的影响。

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中,最受欢迎、最为强大的特征抽取模型。

下期预告:Attention及transformer介绍

知识星球推荐

知识星球主要有以下内容:

(1) 聊天机器人。考虑到聊天机器人是一个非常复杂的NLP应用场景,几乎涵盖了所有的NLP任务及应用。所以小Dream哥计划以聊天机器人作为切入点,通过介绍聊天机器人的原理和实践,逐步系统的更新到大部分NLP的知识,会包括语义匹配,文本分类,意图识别,语义匹配命名实体识别、对话管理以及分词等。

(2) 知识图谱。知识图谱对于NLP各项任务效果好坏的重要性,就好比基础知识对于一个学生成绩好坏的重要性。他是NLP最重要的基础设施,目前各大公司都在着力打造知识图谱,作为一个NLP工程师,必须要熟悉和了解他。

(3) NLP预训练模型。基于海量数据,进行超大规模网络的无监督预训练。具体的任务再通过少量的样本进行Fine-Tune。这样模式是目前NLP领域最火热的模式,很有可能引领NLP进入一个全新发展高度。你怎么不深入的了解?

转载文章请后台联系

侵权必究

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章