美文网首页
NLP语言模型Language Model

NLP语言模型Language Model

作者: 在努力的Jie | 来源:发表于2019-07-16 23:50 被阅读0次

Language Model

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

  • LM—Obgective(目标=) : Compute the probability of a sentence or sequence of words.
  • P(s) = P(w1,w2,w3,w4,w5...wn)

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

Noisy Channel Model

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

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

  • 应用场景:语音识别、机器翻译、拼写纠正、OCR、密码破解

    • 共同点:给定一个信号,将其转换成一个文本
  • 给定一个 source 要转换成指定text

  • 由于source是指定的,因此P(source)不受text影响,可看做常量

Recap:Chain Rule

  • P(A,B,C,D) =P(A)* P(B|A)* P(C|A,B)*P(D|A,B,C) ——chain rule

    • 把包含4个随机变量的联合分布,拆分成3个条件分布和1个P(A)
    • P(A,B) = P(A|B)* P(B) = P(B|A)*P(A)
  • P(w1,w2,w3,w4,w5...wn) = P(w1)* P(w2|w1)* P(w3|w1w2)* P(w4|w1,w2,w3)* P(w5|w1,w2,w3,w4)...P(wn|w1,w2...wn-1) ————chain rule

Chain Rule for Language Model

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

Markov Assumption(马尔可夫假设 )

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

  • first order markov assumption
    • p(w1,w2,w3,w4...wn) = p(w1)* p(w2|w1)* p(w3|w2)...p(Wn|Wn-1)
  • secod order
    • p(w1,w2,w3,w4...wn) = p(w1)* p(w2|w1)* p(w3|w2,w1)...p(Wn|Wn-2,Wn-1)
  • third order
  • ...

Unigram, Bigram, N-gram

Language Model:Unigram

  • P(w1,w2,w3,w4...Wn) = P(w1) * P(w2)* P(w3)...P(Wn)

Language Model:Bigram

<=> first order markov assumption

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

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)

  • P(Wn/Wn-2,Wn-1) = 出现Wn的同时也出现词汇Wn-1,Wn-2的次数 / 词汇Wn出现次数

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

N-gram:Estimating Probability

同理Bigram estimating probability

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

Perplexity

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

  • 将训练好的 LM 放入 语料库,计算 likelihood。
    likelihood 的越大,x越大,2^(-x) 越小,Perplexity越小,越小越好!!
    (可以画图像更生动展示变化曲线)

  • Perplexity 尤其适用 unsupervised 文本的情况

Perplexity计算

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

  • likelihood : 计算P(Wn)
  • log likelihood: 计算logP(Wn)
  • average log likelihood: x = (logP(W1)+...+logP(Wn))/n

最后将x带入Perplexity公式。

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

Smoothing(平滑处理)

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

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

  • PMLE(Wi | Wi-1) = c((Wi , Wi-1)) / c(Wi )

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

  • PAdd-1(Wi | Wi-1) = c((Wi , Wi-1)) + 1 / c(Wi ) + V
  • V是词典的大小(无重复词)
  • 在分母中加V,会使得所有P()的总和为1

Add-K Smoothing(Laplace Smoothing)

  • PAdd-1(Wi | Wi-1) = c((Wi , Wi-1)) + k / c(Wi ) + kV
  • k=1时, 是Add-one Smoothing

如何选择K

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

Interpolation 方法

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

  • 核心思路:在计算Trigram概率时同时Unigram,Bigram,Trigram出现的频次
  • P(Wn|Wn-1,Wn-2) = λ1P(Wn|Wn-1,Wn-2)+ λ2P(Wn|Wn-1)+ λ3P(Wn) , λ123 =1

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

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

Good-Turning Smoothing

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

  • Nc : 出现c次的单词的个数

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

  • PMLE=0

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

  • PGT=N1 / N

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

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

  • PMLE= c / N
  • PGT=(c+1)Nc+1 / Nc*N

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

缺点?如何解决?

  • 计算Ni-1,需要Ni,很多情况会有Nn的缺失
  • 解决:根据现有Nn的情况作一条曲线(机器学习的方法拟合)来估计缺失值

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

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

  • ungram model是最简单的,不考虑语言逻辑
  • Bigram model在随机的基础上,会大概率选取关联概率最大的单词,因此优于unigram
  • N-gram,在有大量的语料库的基础上,可以训练

相关文章

  • NLP语言模型Language Model

    Language Model 语言模型用来判断:是否一句话从语法上通顺 LM—Obgective(目标=) : C...

  • NLP复习(Lecture 9-15)

    Lecture 9 Language Model 语言模型分两类——概率语言模型和结构语言模型 1. N-Gra...

  • 概念整理

    统计语言模型 统计语言模型(Statistical Language Model)即是用来描述词、语句乃至于整个文...

  • word2vec与cw2vec的数学原理

    统计语言模型(Statistical Language Model) 传统的统计语言模型是表示语言基本单位(一般为...

  • Spark之导出PMML文件(Python)

      PMML,全称预言模型标记语言(Predictive Model Markup Language),利用XML...

  • NLP Language Model

    语言模型目标 马尔科夫假设 注意这里的计算公式 分完词后的每个词汇作为一个基本单元计算 评估语言模型 相当于在测试...

  • 循环卷积网络

    6.1 语言模型 语言模型(language model)是自然语言处理的重要技术。自然语言处理中最常见的数据是文...

  • N-gram

    N-gram模型是一种语言模型(Language Model,LM),语言模型是一个基于概率的判别模型,它的输入是...

  • 语言模型理论与实战

    原创:李孟启 1、前言 什么是语言模型(language model)?简单地说,语言模型就是用来计算一个句子的概...

  • 循环神经网络知识学习笔记

    教材选用《动手学深度学习》,李沐等著; 语言模型 语⾔模型(language model)是⾃然语⾔处理的重要技术...

网友评论

      本文标题:NLP语言模型Language Model

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