美文网首页NLP
自然语言处理——5.3 语言模型(数据平滑)

自然语言处理——5.3 语言模型(数据平滑)

作者: SpareNoEfforts | 来源:发表于2018-10-03 22:16 被阅读270次

基本思想

  • 数据平滑的基本思想
    调整最大似然估计的概率值,使零概率增值,使非零概率下调,“劫富济贫”,消除零概率,改进模型的整体正确率。

  • 基本目标
    测试样本的语言模型困惑度越小越好。

  • 基本约束
    \sum\limits_{{\omega _i}} {p({\omega _i}|{\omega _1},{\omega _2},...,{\omega _{i - 1}})} = 1

困惑度定义:

  • 对于一个平滑的 n-gram,其概率为p({\omega _i}|\omega _{i - n + 1}^{i - 1}),可以计算句子的概率:p(s) = \mathop \prod \limits_{i = 1}^{m + 1} p({\omega _i}|\omega _{i - n + 1}^{i - 1})
  • 假定测试语料Tl_T个句子构成(t_1,...,t_{l_T}),那么整个测试集的概率为:p(T) = \mathop \prod \limits_{i = 1}^{{l_T}} p({t_i})
  • 模型p({\omega _i}|\omega _{i - n + 1}^{i - 1})对于测试语料的交叉熵:
    {H_p}(T) = - \frac{1}{{{W_T}}}{\log _2}p(T)
    其中,W_T 是测试文本 T 的词数。
  • 模型 p 的困惑度PP_p(T) 定义为: P{P_p}(T) = {2^{{H_p}(T)}}
    PS: n-gram 对于英语文本的困惑度范围一般为50~1000,对应于交叉熵范围为6~10 bits/word。

数据平滑方法1——加1法(Additive smoothing )

  • 基本思想: 每一种情况出现的次数加1。
    例如,对于 uni-gram,设 w_1, w_2, w_3 三个词,概率分别为:1/3, 0, 2/3,加1后情况?
  • 举例
    <BOS>John read Moby Dick<EOS>
    <BOS>Mary read a different book<EOS>
    <BOS>She read a book by Cher<EOS>
    词汇量:|V|=11
    平滑以后:
    p(Cher|<BOS>) = (0+1)/(11+3) = 1/14
    p(read|Cher) = (0+1)/(11+1) = 1/12
    p(a|read) = (1+2)/(11+3) = 3/14
    p(book|a) = (1+1)/(11+2) = 2/13
    p(<EOS>|book)= (1+1)/(11+2) = 2/13
    p(Cher{\text{ read a book}}) = \frac{1}{{14}} \times \frac{1}{{12}} \times \frac{3}{{14}} \times \frac{2}{{13}} \times \frac{2}{{13}} \approx 0.00003

数据平滑方法2——减值法/折扣法(Discounting)

1. 基本思想:

修改训练样本中事件的实际计数,使样本中(实际出现的)不同事件的概率之和小于1,剩余的概率量分配给未见概率。

2. Good-Turing 估计
  • 基本思想

假设 N 是原来训练样本数据的大小, n_r 是在样本中正好出现 r次的事件的数目(此处事件为 n-gram),即出现 1 次的n-gram有 n_1个,出现 2 次的 n-gram 有n_2个, ……,出现 r 次的有 n_r 个。
那么:N = \sum\limits_{r = 1}^\infty {{n_r}r} = \sum\limits_{r = 0}^\infty {{n_{r+1}}(r+1)}
由于我们要减小r,记为:r^*N = \sum\limits_{r = 1}^\infty {{n_r}r^*},所以:r^* = (r + 1)\frac{{{n_{r + 1}}}}{{{n_r}}}
那么,Good-Turing估计在样本中出现r次的事件的概率为:{p_r} = \frac{{{r^*}}}{N}

  • 举例说明

假设有如下英语文本,估计2-gram概率:
<BOS>John read Moby Dick<EOS>
<BOS>Mary read a different book<EOS>
<BOS>She read a book by Cher<EOS>
……
从文本中统计出不同 2-gram 出现的次数:
<BOS> John 15
<BOS> Mary 10
……
read Moby 5
……

假设要估计以 read 开始的 2-gram 概率,列出以read开始的所有 2-gram,并转化为频率信息:


得到r^*后,便可计算概率:{p_r} = \frac{{{r^*}}}{N}

其中,N 为以 read 开始的bigram的总数(样本空间),即read出现的次数。那么,以 read开始,没有出现过的 2-gram的概率总和为:{p_0} = \frac{{{n_1}}}{N}

以read作为开始,没有出现过的 2-gram的个数等于:{n_0} = |{V_T}| - \sum\limits_{r > 0} {{n_r}},其中,|V_T|为语料的词汇量。

那么,没有出现过的那些 以read为开始的概率平均为:\frac{{{p_0}}}{{{n_0}}}


注意:
4. 绝对减值法(Absolute discounting )
  • 基本思想

从每个计数r 中减去同样的量,剩余的概率量由未见事件均分。
R 为所有可能事件的数目(当事件为n-gram 时,如果统计基元为词,且词汇集的大小为L, 则R=L^n )。

那么,样本出现了r次的事件的概率可以由如下公式估计:


其中,n_0 为样本中未出现的事件的数目。b 为减去的常量,b ≤ 1b(R - n_0)/N 是由于减值而产生的剩余概率量。N 为样本中出现了r 次的事件总次数:n_r \times r

b 为自由参数,可以通过留存数据(heldout data)方法求得 b 的上限为:b \leqslant \frac{{{n_1}}}{{{n_1} + 2{n_2}}} < 1

5. 线性减值法(Linear discounting )
  • 基本思想

从每个计数r 中减去与该计数成正比的量(减值函数为线性的),剩余概率量\alphan_0个未见事件均分。
{p_r} = \left\{ {\begin{array}{*{20}{c}} {\frac{{(1 - \alpha )r}}{N}{\text{ r > 0}}} \\ {\frac{\alpha }{{{n_0}}}{\text{ r = 0}}} \end{array}} \right.
自由参数α 的优化值为:{\frac{{{n_1}}}{N}}

绝对减值法产生的n-gram 通常优于线性减值法。
6. 四种减值法的比较

数据平滑方法3——删除插值法(Deleted interpolation)

  • 基本思想:
    用低阶语法估计高阶语法,即当 3-gram 的值不能从训练数据中准确估计时,用 2-gram 来替代, 同样,当 2-gram 的值不能从训练语料中准确估计时, 可以用 1-gram 的值来代替。插值公式:
    p({\omega _3}|{\omega _1}{\omega _2}) = {\lambda _3}p'({\omega _3}|{\omega _1}{\omega _2}) + {\lambda _2}p'({\omega _3}|{\omega _2}) + {\lambda _1}p'({\omega _3})
    其中\lambda_1+\lambda_2+\lambda_3=1

  • \lambda_1,\lambda_2,\lambda_3的确定

将训练语料分为两部分,即从原始语料中删除一部分作为留存数据(heldout data)。
第一部分用于估计p '(w_3 | w_1w_2 ),p '(w_3 | w_2 )p '(w_3)
第二部分用于计算\lambda_1,\lambda_2,\lambda_3:使语言模型对留存数据的困惑度最小。

相关文章

网友评论

    本文标题:自然语言处理——5.3 语言模型(数据平滑)

    本文链接:https://www.haomeiwen.com/subject/kvdtaftx.html