课程主页:https://web.stanford.edu/class/archive/cs/cs224n/cs224n.1194/

视频地址:https://www.bilibili.com/video/av46216519?from=search&seid=13229282510647565239

这里回顾CS224N Lecture 6的课程内容,这一讲介绍了RNN。

Language Models

考虑语言模型,即计算一个句子的概率,利用链式法则可得

后续讨论两个经典模型,分别是n-gram和RNN。

n-gram Language Models

n-gram是使用$n$阶马尔可夫条件,即每个单词只依赖于前$n$个单词,那么一个句子的概率为

那么$P\left(w_{i} | w_{i-n}, \ldots, w_{i-1}\right)$就成为了参数,这些参数利用频率估计,以二元三元语言模型为例:

但是该模型有很严重的问题,第一个问题是稀疏性。以三元模型为例,如果$w_1,w_2,w_3$没有出现在训练文本中,那么该参数就会估计为$0$;如果$w_1,w_2$没有出现在训练文本中,那么根本无法估计该参数。

第二个问题是存储问题,因为参数的数量为$|\mathcal V|^n$,其中$\mathcal V$为单词集合。

Window-based Neural Language Model

为了解决n-gram碰到的问题,考虑以神经网络为基础的模型:

该模型是根据前几个(固定值)单词预测下一个单词。

在该方法下,没有稀疏性问题,也不用存储所有的n-grams;但是注意到固定窗口还是太小,很容易忽略全局关系,所以该方法的效果依然一般。

Recurrent Neural Networks (RNN)

RNN是一个可以处理任意长度序列的模型,其模型如下(注意权重共用):

更具体的例子如下:

RNN Loss and Perplexity

在$t$时刻的损失为

所以总损失为

其中上述对数函数的底数为$2$。

Perplexity是语言模型的一种度量,其定义为

Backpropagation for RNNs

注意到$t$时刻的损失$J^{(t)}(\theta)$和其之前时刻都有关,所以$J^{(t)}(\theta)$关于$W_h$的导数需要对每一时刻关于$W_h$累加:

上述计算方式也带来了一些问题,这部分会在下一讲讨论。

Advantages, Disadvantages and Applications of RNNs

最后总结下RNN的优劣势:

优势

  1. 可以处理任意长度的序列
  2. 模型大小不会因为序列长度增加
  3. $t$时刻的计算可以使用其之前的所有信息
  4. 每个时间戳的权重相同,所以关于输入有对称性

劣势:

  1. 由于是序列计算,所以计算很慢
  2. 由于梯度爆炸或者梯度消失,实际上很难获取太久之前的信息