CS224N Natural Language Processing with Deep Learning Lecture 6
课程主页: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的优劣势:
优势
- 可以处理任意长度的序列
- 模型大小不会因为序列长度增加
- $t$时刻的计算可以使用其之前的所有信息
- 每个时间戳的权重相同,所以关于输入有对称性
劣势:
- 由于是序列计算,所以计算很慢
- 由于梯度爆炸或者梯度消失,实际上很难获取太久之前的信息