CS224n-08 Recurrent Neural Networks and Language Models

08 Recurrent Neural Networks and Language Models

内容提要:

1、传统的语言模型
2、RNNs
3、RNN语言模型
4、重要的训练问题和技巧
(1)梯度消失问题的一个例子
(2)梯度消失和爆炸
5、其他序列任务中的RNNS
6、双向和深度RNNs

语言模型:

语言模型就是用来计算句子中单词序列出现的概率: ,在机器翻译中是有用处的。
1、词序(Word ordering):p(the cat is small) > p(small the is cat)
2、词汇选择(Word choice):p(walking home after school) > p(walking house after school)

传统的机器翻译:

1、在窗口(上下文中)计算n个词的条件概率。
2、一个不恰当但是正确的马尔科夫假设。

3、为单个或者两个词计算概率(条件是在以前的一个或者两个词上)(根据前面的词计算后面的概率)。

4、性能的提升是由于保持更高的n-grams计数和做一些平滑处理,所以叫做补偿(e.g. if 4-gram not found, try 3-gram, etc))。
5、更多的n-grams带来了更多的内存需求。

循环神经网络(RNN,Recurrent Neural Networks!):

1、RNN在每个时间步例共享权重。
2、之前所有的单词都是影响神经网络的条件。
3、 内存只与词表大小成正比,不取决于序列长度。
CS224n-08 Recurrent Neural Networks and Language Models_第1张图片

RNN语言模型

给定一系列词向量:

在一个时间步上:
CS224n-08 Recurrent Neural Networks and Language Models_第2张图片

输出的softmax值可以判断每一个时间步上词汇表中的词,在这个地方的出现的条件概率。

核心思想:使用相同的权重W在每一个时间步中。
CS224n-08 Recurrent Neural Networks and Language Models_第3张图片
是一个覆盖率了词汇表的概率分布
相同的交叉熵损失,但是用预测词来代替类别: CS224n-08 Recurrent Neural Networks and Language Models_第4张图片

为了计算方便(很多细节处理在吴恩达的深度学习可中详细说明)变为: CS224n-08 Recurrent Neural Networks and Language Models_第5张图片

训练一个RNNs模型很困难:

1、前向传播的时候每一个时间步都具有相同的矩阵。
CS224n-08 Recurrent Neural Networks and Language Models_第6张图片
2、从过去了很多时间步的输入来改变输出y是理性情况。(长序列预测问题)
3、梯度(损失求导),出现梯度消失和爆炸问题。

梯度消失和爆炸问题:

1、反向传播的时候每一个时间步都具有相同的矩阵。
CS224n-08 Recurrent Neural Networks and Language Models_第7张图片

梯度消失细节:

1、相同的更简单的RNN公式:
2、总误差是每个时间步上误差之和:
3、链式规则的应用:
4、反向传播中相同的但是更有效的公式:
5、记住:
6、更多的链式规则:
7、雅克比矩阵的每个部分: CS224n-08 Recurrent Neural Networks and Language Models_第8张图片
CS224n-08 Recurrent Neural Networks and Language Models_第9张图片

梯度为什么会消失?

在反向传播的时候理想上每一步的误差才能告诉以前的时间步去改变。
CS224n-08 Recurrent Neural Networks and Language Models_第10张图片

语言模型中的梯度消失:

在语言建模或问答问题的情况下,当训练预测下一个单词时,没有考虑到很远的距离。
CS224n-08 Recurrent Neural Networks and Language Models_第11张图片

IPython Notebook中的梯度消失例子:

1、简单清晰地神经网络实现。
2、比较sigmoid和ReLu激活函数。
3、梯度消失问题。

CS224n-08 Recurrent Neural Networks and Language Models_第12张图片
比较sigmoid和ReLu两个激活函数的梯度变化。

梯度爆炸的改善技巧:裁剪

1、这个方法是由Mikolov提出来的,是为了裁剪暴涨的梯度。
CS224n-08 Recurrent Neural Networks and Language Models_第13张图片
2、这种方法在RNN中这样是大不一样的。
一种暴力的方法是,当梯度的长度大于某个阈值的时候,将其缩放到某个阈值。虽然在数学上非常丑陋,但实践效果挺好。
CS224n-08 Recurrent Neural Networks and Language Models_第14张图片
(1)一个简单的RNN隐层误差表面图。
(2)高曲率
(3)实线是标准的梯度下降轨迹线。
(4)短虚线是梯度调整之后的线。

梯度消失解决方法:初始化+ReLus

1、将随机初始化参数改为初始化为一个单位矩阵(W)。
2、用ReLus代替sigmod激活函数
CS224n-08 Recurrent Neural Networks and Language Models_第15张图片
CS224n-08 Recurrent Neural Networks and Language Models_第16张图片

困惑度结果(Perplexity Results):

相较于传统的NGram,RNN的困惑度要小一些。
CS224n-08 Recurrent Neural Networks and Language Models_第17张图片

问题:softmax很大很慢

技巧:基于类别的词预测(类别分的越多越细困惑度越好,但是计算速度越慢)

CS224n-08 Recurrent Neural Networks and Language Models_第18张图片
一个最后实现的技巧:你只需要经历一次反向传播,并且累加每一个时间步t的误差。

序列模型完成其他任务:

分类每一个词:
NER(命名实体识别)
Entity level sentiment in context(实体层面的情感分析)
opinionated expressions(意见表达)

用深度RNN进行观点挖掘:

目标:分类每一个词
直接的主观表达(DSEs,direct subjective expressions)
间接地主观表达(ESEs,expressive subjective expressions)

标注例子(经典的BIO方法):

CS224n-08 Recurrent Neural Networks and Language Models_第19张图片

方法:循环神经网络

CS224n-08 Recurrent Neural Networks and Language Models_第20张图片
但是这个网络无法利用当前词语的下文辅助分类决策,解决方法是使用一些更复杂的RNN变种。

双向RNN:

CS224n-08 Recurrent Neural Networks and Language Models_第21张图片

深度BIRNN:

CS224n-08 Recurrent Neural Networks and Language Models_第22张图片
CS224n-08 Recurrent Neural Networks and Language Models_第23张图片
层数不是越多越好
CS224n-08 Recurrent Neural Networks and Language Models_第24张图片

总结:

1、循环神经网络是很好的深度NLP模型之一。
2、训练会出现梯度消失和爆炸问题。
3、RNN模型可以被用于很多方面,通过一些技巧提高性能。
4、下一次:介绍更强大的LSTM和GRU。

softmax问题:No Zero Shot Word Predictions

1、只有在训练过程中,以及在softmax的一部分中,才能预测出答案。
2、但是在积极的对话中学习新单词是很自然的,系统应该能够把它们接起来。

通过预测看不见的未来词来解决障碍(Tackling Obstacle by Predicting Unseen Words):

CS224n-08 Recurrent Neural Networks and Language Models_第25张图片
CS224n-08 Recurrent Neural Networks and Language Models_第26张图片
CS224n-08 Recurrent Neural Networks and Language Models_第27张图片

神经网络基于转换解析的结构化训练(Structured Training for Neural Network Transition-Based Parsing):

CS224n-08 Recurrent Neural Networks and Language Models_第28张图片
CS224n-08 Recurrent Neural Networks and Language Models_第29张图片
CS224n-08 Recurrent Neural Networks and Language Models_第30张图片
CS224n-08 Recurrent Neural Networks and Language Models_第31张图片
CS224n-08 Recurrent Neural Networks and Language Models_第32张图片
贪婪搜索:每个词进行,可能整体句子并不是最好的。
定向搜索:针对一小段句子序列进行搜索。
CS224n-08 Recurrent Neural Networks and Language Models_第33张图片
CS224n-08 Recurrent Neural Networks and Language Models_第34张图片

参考:
http://web.stanford.edu/class/cs224n/
http://www.hankcs.com/nlp/word-vector-representations-word2vec.html



你可能感兴趣的:(自然语言处理)