传统语言模型
N元文法
大规模语料库的出现为自然语言统计处理方法的实现提供了可能,统计方法的成功应用推动了语料库语言学的发展。基于大规模语料库的统计方法可以:
-发现语言使用的普遍规律
-通过机器学习模型自动获取语言知识
-对未知语言现象进行推测
说明:(1) wi 可以是字、词、短语或词类等,统称为统计基元。通常以“词”代之;(2) wi 的概率取决于 w1, …, wi-1,条件序列w1, …, wi-1 称为wi 的历史(history)。
划分方法:
将两个历史映射到同一个等价类,当且仅当这两个历史中的最近 n-1 个基元相同,即:
这种计算语言(通常指句子)概率的模型称为语言模型(language model)。由于通常只考虑历史基元与当前词构成n元词序列(即只考虑前n-1个词的历史情况),因此这种模型又称为n元文法模型(n-gram model)。n为整数,通常n=1~5。
当 n=1 时,出现在第 i 位置上的基元 wi 独立于历史,称为一元文法,记作 uni-gram 或 monogram;
当 n=2 时, 出现在第 i 位置上的基元 wi 只与i-1位置上的基元相关,称为2元文法(2-gram 或 bi-gram)。2元文法序列又被称为1阶马尔可夫链;
当 n=3 时, 出现在第 i 位置上的基元 wi 与i-2 和 i-1位置上的基元相关,称为三元文法(3-gram 或 tri-gram)。三元文法序列又被称为2阶马尔可夫链。
依次类推。
二元文法:m-1个
三元文法:m-2个
参数估计
基本思路
Ø 收集、标注大规模样本,我们称其为训练数据/语料(training data / corpus)。
Ø 利用最大似然估计(maximum likelihood evaluation,MLE)方法计算概率。
举例:
神经语言模型
问题提出的原因:
物理世界:物体相互独立地存在
认知世界:概念互相联系、语义连续分布
前馈神经网络语言模型
导数容易计算-易于传递
概率计算转换为神经元的计算
两个需要解决的核心问题
词向量表示:
每一个词对应其中的一列-look-up table
一般常常采用第三种方法
D:任务简单(分词)设置简单,任务复杂则设置很高(机器翻译);此外还可以根据数据规模确定
如何学习L– 通常先随机初始化,然后通过目标函数优化词的向量表达(e.g. 最大化语言模型似然度)
F的设计:
此处使用的是均方误差
加入正则化后:
求导计算公式如下:
计算图如下:
复杂的计算过程如下:
过程总结如下:
举例,该例子中N=5
循环神经网络语言模型
举例论证:
LSTM网络:3个门和一个记忆单元
自我注意机制语言模型-Transformer
一步操作可以实现把X1信息传递到第N步~
可以并行化:
之前的RNN是逐步计算x1-x2-x3-……
现在每一层的神经元可以同时计算,效率会上升很多~
示例如下: