NLP语言模型Language Model

2019-07-16  本文已影响0人  在努力的Jie

Language Model

语言模型用来判断:是否一句话从语法上通顺

方式:给定一个句子,计算该句子在当前LM下的概率。重点是LM的训练。

Noisy Channel Model

P(text | source) ∝ P(source | text)* P(text)

∝:proportional 等同于
此公式考虑贝叶斯公式

Recap:Chain Rule

Chain Rule for Language Model

条件若包含很多单词,会有稀疏问题

Markov Assumption(马尔可夫假设 )

有些情况概率很难计算,此时考虑markov assumption估计概率

Unigram, Bigram, N-gram

Language Model:Unigram

Language Model:Bigram

<=> first order markov assumption

Language Model: N-gram

<=> Higher order (n>2)

Estimating Probability of Language Model (估计语言模型的概率)

Unigram:Estimating Probability

P(Wn) = 词汇Wn出现次数 / 语料库所有词汇数量V

Bigram:Estimating Probability

p(w1,w2,w3,w4...wn) = p(w1)* p(w2|w1)* p(w3|w2,w1)...p(Wn|Wn-2,Wn-1)

对于其中一项概率为0,可以作平滑处理

N-gram:Estimating Probability

同理Bigram estimating probability

Evaluation of Language Model(评估语言模型)

Perplexity

Perplexity = 2^(-x) ,
x : average log likelihood

Perplexity计算

Perplexity = 2^(-x) ,
x : average log likelihood (平均 对数 似然)
计算X 的过程:

最后将x带入Perplexity公式。

一般情况下,N-gram LM 效果更好

Smoothing(平滑处理)

Add-one Smoothing 方法(Laplace Smoothing 方法)

若不考虑Smoothing,通常计算的是PMLE,

但是此方法可能出现P(Wn)为0的情况而导致无法评估,因此引入Smoothing方法。

Add-K Smoothing(Laplace Smoothing)

如何选择K

  1. K = 1,2,3...n ,一个一个计算对比找到最合适的 k
  2. 优化 f(k) ,此时Perplexity = f(k),故 Minperplexity= Minf(k) => k= argmink f(k)

Interpolation 方法

背景:现在不出现的概率,不代表未来数据更多anyway还不出现

上面公式 <=> Tri-gram = λ1Trigram+ λ2 Bigram+ λ3Unigram

对各方法加权平均,好的方法权重大些,加权平均的和为1

Good-Turning Smoothing

背景:在训练数据里没有见过的怎么处理?

没有出现过的单词,未来出现的概率

PMLE 方法: 在历史数据中看到过什么,依据此来给出概率结果

通过N1 / N来计算。通过出现过1次的情况来预测未来的这种小概率事件

出现过的单词,未来出现的概率

通常,PGT小于PMLE ,因为考虑到了新的情况(未出现),相当于把一些概率已经给到了新事件

缺点?如何解决?

Use Language Model to Generate Sentence(利用语言模型生成句子)

LM是生成模型:一旦模型训练好,该模型可以生成新的数据

上一篇 下一篇

猜你喜欢

热点阅读