N-gram模型和神经语言模型

概率模型

  • 统计语言模型实际上是一个概率模型,所以常见的概率模型都可以用于求解这些参数
  • 常见的概率模型有:N-gram 模型、决策树、最大熵模型、隐马尔可夫模型、条件随机场、神经网络等
  • 目前常用于语言模型的是 N-gram 模型和神经语言模型(下面介绍)

N-gram 语言模型

  • 马尔可夫(Markov)假设——未来的事件,只取决于有限的历史
  • 基于马尔可夫假设,N-gram 语言模型认为一个词出现的概率只与它前面的 n-1 个词相关


    image.png
  • 根据条件概率公式与大树定律,当语料的规模足够大时,有
    image.png
  • n=2 即 bi-gram 为例,有
    image.png
  • 假设词表的规模 N=200000(汉语的词汇量),模型参数与 `n· 的关系表
    image.png

可靠性与可区别性

  • 假设没有计算和存储限制,n 是不是越大越好?
  • 早期因为计算性能的限制,一般最大取到 n=4;如今,即使 n>10 也没有问题,
  • 但是,随着 n 的增大,模型的性能增大却不显著,这里涉及了可靠性与可区别性的问题
  • 参数越多,模型的可区别性越好,但是可靠性却在下降——因为语料的规模是有限的,导致 count(W) 的实例数量不够,从而降低了可靠性

OOV 问题

  • OOV 即 Out Of Vocabulary,也就是序列中出现了词表外词,或称为未登录词
  • 或者说在测试集和验证集上出现了训练集中没有过的词
  • 一般解决方案:
    **设置一个词频阈值,只有高于该阈值的词才会加入词表
    **所有低于阈值的词替换为 UNK(一个特殊符号)
  • 无论是统计语言模型还是神经语言模型都是类似的处理方式

平滑处理 TODO

  • count(W) = 0 是怎么办?
  • 平滑方法(层层递进):
    1 Add-one Smoothing (Laplace)
    2 Add-k Smoothing (k<1)
    3 Back-off (回退)
    4 Interpolation (插值法)
    5 Absolute Discounting (绝对折扣法)
    6 Kneser-Ney Smoothing (KN)
    7 Modified Kneser-Ney

神经概率语言模型 (NPLM)

  • 神经概率语言模型依然是一个概率语言模型,它通过神经网络来计算概率语言模型中每个参数
    image.png

    1 其中 g 表示神经网络,i_ww 在词表中的序号,context(w)w 的上下文,V_context 为上下文构成的特征向量。
    2 V_context 由上下文的词向量进一步组合而成

N-gram 神经语言模型

A Neural Probabilistic Language Model (Bengio, et al., 2003)

  • 这是一个经典的神经概率语言模型,它沿用了 N-gram 模型中的思路,将 w 的前 n-1 个词作为 w 的上下文 context(w),而 V_context 由这 n-1 个词的词向量拼接而成,即
    image.png
  1. 其中 c(w) 表示 w 的词向量
  2. 不同的神经语言模型中 context(w) 可能不同,比如 Word2Vec 中的 CBOW 模型
  • 每个训练样本是形如 (context(w), w) 的二元对,其中 context(w) 取 w 的前 n-1 个词;当不足 n-1,用特殊符号填充

    1. 同一个网络只能训练特定的 n,不同的 n 需要训练不同的神经网络

N-gram 神经语言模型的网络结构

  • 【输入层】首先,将 context(w) 中的每个词映射为一个长为 m 的词向量,词向量在训练开始时是随机的,并参与训练;

  • 【投影层】将所有上下文词向量拼接为一个长向量,作为 w 的特征向量,该向量的维度为 m(n-1)

  • 【隐藏层】拼接后的向量会经过一个规模为 h 隐藏层,该隐层使用的激活函数为 tanh

  • 【输出层】最后会经过一个规模为 N 的 Softmax 输出层,从而得到词表中每个词作为下一个词的概率分布

  • 其中 m, n, h 为超参数,N 为词表大小,视训练集规模而定,也可以人为设置阈值

  • 训练时,使用交叉熵作为损失函数

  • 当训练完成时,就得到了 N-gram 神经语言模型,以及副产品词向量

  • 整个模型可以概括为如下公式:
    image.png

    image.png

原文的模型还考虑了投影层与输出层有有边相连的情形,因而会多一个权重矩阵,但本质上是一致的:

image.png

image.png

模型参数的规模与运算量

  • 模型的超参数:m, n, h, N
    • m 为词向量的维度,通常在 10^1 ~ 10^2
    • n 为 n-gram 的规模,一般小于 5
    • h 为隐藏的单元数,一般在 10^2
    • N 位词表的数量,一般在 10^4 ~ 10^5,甚至 10^6
  • 网络参数包括两部分
    • 词向量 C: 一个 N * m 的矩阵——其中 N 为词表大小,m 为词向量的维度
    • 网络参数 W, U, p, q:
        - W: h * m(n-1) 的矩阵
        - p: h * 1      的矩阵
        - U: N * h    的矩阵
        - q: N * 1    的矩阵 
  • 模型的运算量
    • 主要集中在隐藏层和输出层的矩阵运算以及 SoftMax 的归一化计算
    • 此后的相关研究中,主要是针对这一部分进行优化,其中就包括 Word2Vec 的工作

相比 N-gram 模型,NPLM 的优势

  • 单词之间的相似性可以通过词向量来体现

    相比神经语言模型本身,作为其副产品的词向量反而是更大的惊喜

    词向量的理解

  • 自带平滑处理

你可能感兴趣的:(N-gram模型和神经语言模型)