语言模型

统计语言模型

语言模型就是用来计算一个句子的概率的模型,即P(W1,W2,...Wk)。利用语言模型,可以确定哪个词序列的可能性更大,或者给定若干个词,可以预测下一个最可能出现的词语。给定句子(词语序列)S=W1,W2,...,Wk,它的概率可以表示为:

语言模型        (1)

n-gram语言模型

n-gram模型也称为n-1阶马尔科夫模型,它有一个有限历史假设:当前词的出现概率仅仅与前面n-1个词相关。因此(1)式可以近似为:

语言模型                        (2)

 当n取1、2、3时,n-gram模型分别称为unigram、bigram和trigram语言模型。最常用的是bigram,其次是unigram和trigram,n取≥4的情况较少。

 模型的参数估计也称为模型的训练,一般采用最大似然估计(Maximum Likelihood Estimation,MLE)的方法对模型的参数进行估计:

语言模型           (3)

C(X)表示X在训练语料中出现的次数。

n-gram模型的数据平滑

数据平滑是对频率为0的n元对进行估计。

          加法平滑

    基本思想是为避免零概率问题,将每个n元对得出现次数加上一个常数δ(0<δ≤1):

语言模型              (4)

·         Good-Turing平滑

    利用频率的类别信息来对频率进行平滑:

 语言模型       (5)

语言模型

    其中,N(c)表示频率为c的n-gram的数量。

·         线性插值平滑

    该数据平滑技术主要利用低元n-gram模型对高元n-gram模型进行线性插值。因为在没有足够的数据对高元n-gram模型进行概率估计时,低元n-gram模型通常可以提供有用的信息。

语言模型          (6)

    λn可以通过EM算法来估计。

·         Katz平滑

    也称为回退(back-off)平滑,其基本思想是当一个n元对的出现次数足够大时,用最大似然估计方法估计其概率;当n元对的出现次数不够大时,采用Good-Turing估计对其平滑,将其部分概率折扣给未出现的n元对;当n元对的出现次数为0时,模型回退到低元模型。

语言模型            (7)

    参数α和β保证模型参数概率的归一化约束条件,即语言模型

神经网络语言模型(Neural Network Lauguage Model,NNLM)

不同于 N-gram 的直接统计频率的方式, NNLM 用一个关于 θθ 的函数 F(w,context(w),θ) 来表示 语言模型 ,意思就是说,当前词为 语言模型 时,其上下文为 语言模型 的概率可以用一个关于 语言模型 的函数 F(w,context(w),θ) 表示,然后问题就转变为了求得最优的参数 语言模型 来生成 Language Model , 待求得 θ∗ 后 ,对于任意在词表 语言模型 中的词语 语言模型 ,都可以直接带入到 F(w,context(w),θ∗)中,得到其对应的概率 语言模型, NNLM 即是采用神经网络结构来构造函数 F(w,context(w),θ∗)的,构造完成后,根据训练语料 语言模型 来求得最优的参数 语言模型 即可。这里求解算法采用的是参数估计中极大似然估计,即:

  语言模型

以上公式何解呢?就是假设语料库 C是按照 F(w,context(w),θ) 生成的 , 现在 C已经在那里了,但参数 θ∗ 还不知道,很简单的 MLE 的思想就可解决了,此处 R(θ) 是引入 θ 的先验信息来构造成 MAP ,也可以叫做正则化,但是 NNLM 里是没有引入任何先验信息的,所以这里不考虑 R(θ) ,Bengio 提出的 NNLM 就长下边的那个样子

语言模型

输入层:

这里就是词w的上下文,如果用N-gram的方法就是词w的前n-1个词了。每一个词都作为一个长度为V的one-hot向量传入神经网络中

投影层:

在投影层中,存在一个look-up表C,C被表示成一个V*m的*参数矩阵,其中V是词典的大小,m 为人工定义的词向量的长度。

表C中每一行都作为一个词向量存在,这个词向量可以理解为每一个词的另一种分布式表示。每一个one-hot向量都经过表C的转化变成一个词向量。

n-1个词向量首尾相接的拼起来,转化为(n-1)m的列向量输入到下一层。
 

隐藏层:

之后再对列向量语言模型进行计算

 

语言模型

输出层:

最后得到的向量 语言模型 , 现在为了让 语言模型 的每个分量 语言模型 表示当前当前词为词表的第 语言模型 个且当前上下文为 语言模型 的概率,做一个softmax 归一化即可:

  语言模型

 此处,语言模型 = 语言模型 表示为词表中的第 i 个词,以上便为我们用 NN 构造出的代表概率的函数 语言模型 ,然后采用 MLE 估计即可,这里待估计参数 语言模型 分别为整个词表词语的词向量与 NN 中的权值 语言模型 ,网络中还有一些需要设定的参数,比如上下文词语 语言模型 的设定一般不大于 5 ,词向量的长度 语言模型 一般介于 语言模型 之间,另外需要注意 NNLM是自带平滑的,因为任意词语 语言模型 的概率 语言模型 都经过了 softmax 归一化,所以 语言模型 取值介于(0-1)之间。