自然语言处理N天-Day0901神经序列模型RNN及其变种LSTM、GRU

自然语言处理N天-Day0901神经序列模型RNN及其变种LSTM、GRU_第1张图片
新建 Microsoft PowerPoint 演示文稿 (2).jpg

说明:本文依据《中文自然语言处理入门实战》完成。目前网上有不少转载的课程,我是从GitChat上购买。

这一课开始讲深度学习部分的RNN(LSTM和GRU),之前也在教程中学过,但是仅仅是实现了一个LSTM,然后使用RNN构建了一个词向量模型用来做词嵌入预测。

第九课 神经序列模型RNN及其变种LSTM、GRU

前言 N-gram模型和NNLM模型

1.词袋模型。最早的时候谈过BOW词袋模型,就是一个忽略语法和单词顺序,对每一个单词进行统计,计算词频的无序的词汇集合。缺点很明显,在处理具有逻辑特征的长句时会出现错误。
2.N-gram模型。基于词袋的缺点,产生N-gram模型,考虑句子中词与词之间的顺序。N-gram模型需要知道当前词以及前面的词,而后对后面的词进行预测,因为一个句子中每个词的出现并不是独立的。类似于我们人的联想,N-gram 模型知道的信息越多,得到的结果也越准确。
N-gram的缺点很明显:需要很大规模的训练文本来确定模型的参数,当 N 很大时,模型的参数空间过大。所以常见的 N 值一般为1,2,3等。还有因数据稀疏而导致的数据平滑问题。
3.NNLM。基于N-gram模型的缺陷,神经网络语言模型出现,即Neural Network based Language Model(NNLM),这是一个四层神经网络(包含一个嵌入、一个隐藏、一个输出)。NNLM 最大的缺点就是参数多,训练慢,要求输入定长 N 这一点很不灵活,同时不能利用完整的历史信息。

自然语言处理N天-Day0901神经序列模型RNN及其变种LSTM、GRU_第2张图片
微信图片_20190218081846.jpg

4.RNNLM。针对 NNLM 存在的问题,提出RNNLM,使用RNN代替NNLM里的隐层,这样做的好处,包括减少模型参数、提高训练速度、接受任意长度输入、利用完整的历史信息。同时,RNN 的引入意味着可以使用 RNN 的其他变体,像 LSTM、BLSTM、GRU 等等,从而在序列建模上进行更多更丰富的优化。

RNN、LSTM和GRU的原理

1.RNN。是具有记忆性的神经网络,因为它的每次迭代都包含有上一时刻隐藏层输出结果,类似于记忆。但是RNN存在梯度消失和梯度爆炸问题。
2.LSTM。目前来看用的比较多,我做NLP的同学言必称LSTM,但是在2018年基于Transformer的Bert模型出来之后,RNN(包括LSTM和GRU)都有被取代的危险。LSTM是通过三个门(遗忘、输入、输出)的操作来控制不同时刻的输入和输出。
3.GRU。GRU是LSTM的变体,它将长时状态和短时状态合并为一个向量。用同一个门控制遗忘门和输入门。如果门控制输入 1,输入门打开,遗忘门关闭,反之亦然。也就是说,如果当有新的记忆需要存储,那么就必须实现在其对应位置事先擦除该处记忆。这也构成了 LSTM 本身的常见变体。GRU单元取消了输出门,单元的全部状态就是该时刻的单元输出。与此同时,增加了一个控制门来控制哪部分前一时间步的状态在该时刻的单元内呈现。

你可能感兴趣的:(自然语言处理N天-Day0901神经序列模型RNN及其变种LSTM、GRU)