斯坦福深度自然语言处理课程CS224N Lecture 6课程笔记,Language Models and Recurrent Neural Networks.
语言模型,Language Model
语言模型是用来预测“下一个词”的模型。即给模型输入一个词语序列,输出应该是下一个词(的概率分布)。对这个问题进行形式化的描述如下:
给定一个词语序列,计算下一个词的概率分布:
其中可以是词汇表 中的任意一个词。
也可以从另一个角度看待语言模型,将其看作是计算“一条文本”出现的概率。(一条文本指的就是一串词语)。即对于一条文本:,其出现的概率是:
(3)中的概率就是由语言模型给出的。
n-gram语言模型
模型
- 假设:的概率分布仅与其前个词有关
- 那么就可以得到其概率分布为:
缺陷
模型缺陷1:稀疏性问题
- 公式中,如果某个词序列在语料库中从来没有出现过,那么分子可能为0。为了解决这个问题,可以在每个计数值上加一个很小的平滑量(smoothing value)。
- 分母也可能为0(即在语料库中未出现过这样的上文),为了解决该问题,可以缩小上文的长度。
模型缺陷2:容量问题
- 模型需要计算并保存在语料库中出现的所有n-gram,那么随着n的增长,模型的大小也快速增长。
固定窗口大小的神经网络语言模型
- 基本假设与n-gram模型类似,预测某个位置的词的概率分布只与前n个词有关。
- 构建一个基本的多层感知机(MLP),输入前n个词,输出为下一个词。
- 仍存在问题。。。
循环神经网络,Recurrent Neural Network
模型
- 基本做法:重复地调用相同的权重矩阵。
- RNN的基本结构及展开结构如下图
可以看到,其基本结构就类似一个一维的多层感知机,每层有各自的权重矩阵。区别在于,隐藏层有两个输入来源——输入层的激活输出和上一个时间步的隐藏层激活输出,(和是各自的权重矩阵。)
Pros and cons
- 优点
- 可以处理任意长度的输入
- 理论上来说,计算每一步的输出时都是基于前面所有的信息
- 模型的大小不会随着输入增长而变大
- 因为使用的是同一个权重矩阵,因此处理输入时是类似的
- 缺点
- 循环计算非常慢
- 实践中,很难使用到很多步之前的信息。
评价语言模型
- 标准的语言模型评价指标——perplextiy,该指标越小,模型表现越好。
RNN的应用
打标签
- 如词性分类、命名体识别等
句子(文本)分类
- 如情感分类等
- 在RNN的输出层后再加一层,用于将RNN的输出做编码
作为编码模块
- 利用RNN为一条文本编码,用编码后的结果参与后续神经网络的计算