预训练语言模型(一):定义及语言模型
- 关于语言模型
- 统计语言模型
- 神经网络语言模型
参考一个很全的总结:
预训练语言模型的前世今生 - 从Word Embedding到BERT
关于语言模型
语言模型的本质是计算一个句子序列的概率。
即对于语言序列 ,语言模型就是计算 。
由此引入乘法公式:
统计语言模型
统计语言模型又叫做N-Gram模型,这里N是指词典 中的词数。
定义 为一个具有 个单词的词典,即所有词的词集合; 。
对于公式:
使用马尔科夫链思想:
假设 只和它之前的 个词有相关性, 时称作一个单元语言模型, 时称为二元语言模型。由此可以推出二元语言模型的公式为:
有时会出现数据稀疏的情况,这时我们为了避免0值的出现,使用平滑策略(分子分母都加入一个非0正数)【注:这里还有其它的平滑策略,可以查到】,此时将公式(5)改为:
神经网络语言模型
引入神经网络架构估计单词分布,能够通过词向量衡量单词之间的相似度,对于没有出现过的单词,也可以通过整个句子序列进行词向量的估计,可以有效解决数据稀疏问题。
上图NNLM神经网络共有三层:
- 输入层:将前面 个单词进行one-hot编码,之后乘以一个随机初始化的矩阵Q之后获得词向量 ,处理后得到输入 ,此时
- 隐藏层:使用 作为激活函数,输出为 , 为输入层到隐层的权重矩阵,
- 输出层:使用 作为激活函数,输出为 ,此处的 为输入层直接到输出层的权重矩阵,
NNLM最大的贡献在于将神经网络引入了LM中,此外,Word Embedding(参数矩阵 )作为NNLM的副产品,在后续研究中也起到了很关键的作用。
另一方面,NNLM的缺点在于,它只能处理定长的序列,本质上还是遵从了马尔科夫假设,相当于用神经网络编码的N-Gram Model,无法解决长期依赖的问题。