CS22N学习笔记(六)Language Modeling和RNNs

NLP task:Language Modeling
a new kind of neural networks:Recurrent Neural Networks (RNNs)

Language Modeling

语言模型的基本任务是根据已经知道的文本,预测计算下一个单词。
CS22N学习笔记(六)Language Modeling和RNNs
更正式的说法就是,给定一系列的单词序列x(1),x(2)…x(T),计算下个单词是谁的概率:
CS22N学习笔记(六)Language Modeling和RNNs
那么,要用语言模型输出一段文本的概率就是:
CS22N学习笔记(六)Language Modeling和RNNs

n-gram Language Models

这里n-gram的意思就是n个连续单词组成的块:
CS22N学习笔记(六)Language Modeling和RNNs
就是用预测单词的前n-1个词,预测下个单词。
CS22N学习笔记(六)Language Modeling和RNNs
通过计数的比例,来计算n-gram和n-1 -gram的概率,即:
CS22N学习笔记(六)Language Modeling和RNNs
以句子as the proctor started the clock, the students opened their _____为例:
取4-gram,就会忽略前面所有的单词,取最后四个来预测:students opened their __,然后计算:
CS22N学习笔记(六)Language Modeling和RNNs

n-gram Language Models中的问题

稀疏性问题(Sparsity Problems):
由于是从语料库中计数,可能你选择的n-gram或者(n-1)-gram再语料库中出现的次数很少,造成稀疏性问题:
CS22N学习笔记(六)Language Modeling和RNNs
选择的n越大,条件越特殊,则稀疏的特点越明显。
储存问题(Storage Problems):选择的n越大,则需要存的n-gram越大。
CS22N学习笔记(六)Language Modeling和RNNs

fixed-window neural Language Model

流程原理如图所示:
CS22N学习笔记(六)Language Modeling和RNNs
就是简单的将前n-1个词汇输入到一个bp神经网络,然后用softmax函数得到输出的概率分布。
它有一些优点:解决了稀疏的矩阵的问题,同时无需储存n-gram
它也有缺点:对于神经网络而言,这种窗口大小不够大,另外在训练的时候,只会训练对应的参数W,而不会共享参数。
CS22N学习笔记(六)Language Modeling和RNNs

RNN神经网络

它的结构是这个样子:
CS22N学习笔记(六)Language Modeling和RNNs
课程当中是这样:
CS22N学习笔记(六)Language Modeling和RNNs
从左到右是时间步数的传递,里面的权重参数是不变的,用公式表示如图所示:
CS22N学习笔记(六)Language Modeling和RNNs

A RNN Language Model

结构如图所示:
CS22N学习笔记(六)Language Modeling和RNNs
输入词向量,输出下一个单词的概率分布。
它的优点:可以计算任意长度的输入,且模型不随着输出的增加而变得复杂;具有一定的记忆特性,之前的输入会对之后产生一定的影响;每个时间节点上的权重参数是一致,因此在处理输入时具有对称性。
它的缺点:计算比较缓慢;实际计算时,有多个时间步时会难以从之前获得信息。
该模型的lossfuntion:每一个输出的交叉熵代价函数求和平均数。
CS22N学习笔记(六)Language Modeling和RNNsCS22N学习笔记(六)Language Modeling和RNNs

Training a RNN Language Model

CS22N学习笔记(六)Language Modeling和RNNs
训练时,像SGD方法一样,分批次的输入数据,计算代价函数,反向传播,更新权重。

Backpropagation for RNNs

RNN中,代价函数对权重的总的导数,等于每个时间节点上的导数的求和。即:
CS22N学习笔记(六)Language Modeling和RNNs
CS22N学习笔记(六)Language Modeling和RNNs
用多元函数求导的链式法则可以进行推导,主要思路如图所示:
CS22N学习笔记(六)Language Modeling和RNNs
具体计算时,从时间步t向前计算,每计算一步求和,如图:
CS22N学习笔记(六)Language Modeling和RNNs

其他关于语言模型和RNN

评估语言模型:利用perplexity函数,他在本质和交叉熵代价函数相同,因此可以用来进行评估。
CS22N学习笔记(六)Language Modeling和RNNs
CS22N学习笔记(六)Language Modeling和RNNs
perplexity数值越低越好。
课程还说了一些其他应用。