语言模型(Language Model)旨在为一个长度为m的词语序列{w1,w2,…,wm}计算一个概率P(w1,w2,…,wm),表示这段词语序列在真实情况下存在的可能性,在信息检索、语音识别、机器翻译、分词及词性标注、事件抽取等自然语言处理任务中有重要应用[28−32]。利用语言模型,可以确定哪个词语序列出现的可能性更大,或者给定若干上文语境词来预测下一个最可能出现的词语。对概率的一般求解过程如下:
在实际应用中,如果词语序列的长度m比较大,就会导致P(wi|w1,w2,…,wi−1)的估算非常困难。为了解决语言模型计算问题,通常采用一种简化模型,即N元(N−Gram)模型[33−34]。N−Gram模型又称N−1阶马尔可夫模型,其假设:当前词语的出现概率仅与其前面(上文)N−1个词语相关,而距离当前词语距离大于或者等于N的上文词语会被忽略。因此,P(wi|w1,w2,…,wi−1)≈ P(wi|wi−(n−1),…,wi−1)。不难看出,N−Gram模型的参数就是条件概率P(wi|wi−(n−1),…,wi−1)。假设词表规模为,则N−Gram模型的参数数量为。N的值越大,模型就越精确、越复杂,计算开销就越大。最常用的是当N的值分别取1、2、3时[35]。
当N=1时,称为一元模型(Uni-Gram Model),式(2−22)右侧乘法因子全部退化成为P(wi),整个词语序列的概率为P(w1,w2,…,wm)=P(w1)·P(w2)·…· P(wm)。由式(2−22)可知,在一元模型中,给定词语序列片段出现的概率为其中所包含的各个词语出现概率的乘积,即一元模型假设各个词语之间互相独立。因此,一元模型丢失了词语之间的词序信息,这虽然计算方便,但其性能有限。当N=2时,称为二元模型(Bi-Gram Model),式(2−22)右侧乘法因子为P(wi|wi−1);当N=3时,称为三元模型(Tri-Gram Model),式(2−22)右侧乘法因子为P(wi|wi−2,wi−1)。二元模型和三元模型保留了一定的词序信息。
N−Gram模型的参数估计(Parameter Estimation)又称参数训练,通常分为两种方法,即传统的基于频率计数的方法、基于神经网络的方法。传统基于频率计数的方法通常采用最大似然估计(Maximum Likelihood Estimation,MLE)方法[36]对模型的参数进行估计,即
式中,n(wi−(N−1),…,wi−1)——词语序列{wi−(N−1),…,wi−1}在大规模语料中的出现次数。
训练语料规模越大,参数估计结果就越可靠。但是,即使所使用的训练语料规模非常大,还是会有很多语言现象在训练语料中没有出现过,导致很多参数为0;特别地,当N的取值比较大时,长度为N的词语序列出现次数会非常少。这就造成N−Gram模型的参数估计过程中的数据稀疏问题。很多研究在尝试多种数据平滑(Data Smoothing)方法[37−38]来解决数据稀疏问题。
综上,基于频率计数的方法的主要工作是在语料库中统计各种词语序列出现的次数,并计算概率值以及进行平滑处理。将计算出的概率值存储,下次需要计算某个句子的概率时,只需要找到相应的概率参数,然后将它们连乘起来即可。(www.xing528.com)
然而,在机器学习研究领域有一种通用的问题解决思路:在对所研究的问题建模后,首先为其构造一个目标函数(Objective Function);然后,对该目标函数进行优化,进而求得一组最优的参数;最后,使用这组最优参数对应的模型来进行预测。对于上述基于频率计数的统计语言模型而言,利用最大似然,可以把目标函数设为
式中,Δ——语料库;
Context(wi)——词语wi的上下文。
对于N−Gram模型,Context(wi)={wi−N+1,…,wi−1}。当Context(wi)为空时,通常取P(wi|Context(wi))=P(wi)。在实际应用中,常采用最大对数似然,即把目标函数设为
所要求解的概率P(wi|Context(wi))可以被视为关于wi和的Context(wi)函数,即P(wi|Context(wi))=F(wi,Context(wi),Λ)。其中,Λ为需要求解的参数集合;一旦最优化求解得到最优参数集合,函数F(·)也就随之被确定,以后任何频率都可以通过函数来计算。与基于频率计数的方法相比,这种方法不需要先存储所有概率值、再在计算时去查找对应的概率值来进行计算,而是可以直接通过计算来获取语言模型,并且通过选择适当的模型可以使得参数集合Λ中的参数个数远小于N−Gram中模型参数的个数。神经网络语言模型是构造上述函数F(·)的一种典型且重要的方法,也是词向量相关研究(如Word2Vec[39]等)的前身和基础。
神经网络语言模型服从分布假说(Distributional Hypothesis),即上下文语境相同的词语具有相近的语义[19,25]。因此,统计上有价值的共现关系对于理解词语语义和内涵有很大帮助。本质上,神经网络语言模型依然是一个统计语言模型。Xu 等[40]首次探索使用神经网络求解二元语言模型。Bengio等[28]正式提出了神经网络语言模型,该模型能够在学习语言模型的同时,得到词语的分布式向量表示。词嵌入通常用低维实数向量(常用的维度有50维、100维、300维和500维等)来表示词典中的每一个词语。Mnih等[41]在神经网络语言模型基础上提出了log双线性语言模型(Log-Bilinear Language Model,LBL),随后该模型的扩展版——本层级log双线性语言模型[42]、基于向量的逆语言模型[43]相继被研发。Mikolov等[44]提出了直接对P(wi|w1,w2,…,wi−1)进行建模的循环神经网络语言模型(Recurrent Neural Network based Language Model,RecurrentNNLM)。值得注意的是,上述神经网络语言模型能够以副产品的形式产生词向量,对后期词向量的发展起到了决定性作用。Collobert等[45]提出了C&W模型,这是第一个直接以生成词向量为目标的神经网络语言模型。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。