美文网首页
n元模型

n元模型

作者: Milkmilkmilk | 来源:发表于2018-10-12 16:24 被阅读0次

区分好 语言建模 和 语言模型。
理解好 直接预测P(w_1,w_2,w_3,...,w_l)的问题:
(1). 数据量需要庞大(为什么?)
(2). 计算量庞大。
如何解决这个问题?
(1). 条件概率链式法则
(2). 马尔可夫假设
理解n元模型的计算量。
理解n不同的时候的不同情况。
(1). n大的时候:
-有更多的语境信息。
-计算量大,数据量要求大,计算出来的概率结果不可靠。
(2). n小的时候:
-比较少的语境信息。
-计算量小,数据量要求小,计算出来的概率结果可靠。

n-元模型的训练:参数估计。不是隐马尔可夫,可以直接估计,可以使用相对频率估计,这种时候最大似然估计(MLE)和相对频率估计是一样的。

那么这里描述一下是怎么训练和跑出结果的:
考虑语料库:
<bos> John read Moby Dick <eos>
<bos> Mary read a different book <eos>
<bos> She read a book by Cher <eos>
对于bin-gram,我们会计算
P(John|<bos>) = \frac{c(<bos>John)}{c(<bos>)} = \frac{1}{3}
P(book|a) = \frac{c(a book)}{a}
...
所以这样我们就训练好了。训练的结果就是一个一个条件概率库。
那么对于一个句子。我们来计算句子的概率:
比如John read a book
所以求解如下:
P(John read a book) = P(John|<bos>)*P(read|John)*P(a|read)*P(book|a)*P(<eos>|book)

处理模型中可能碰到的问题:
(1). 计算句子概率的时候使用概率连乘,容易造成数字很小,应该扩张一下,可以使用对数概率。
(2). 自然语言处理中的数据是十分稀疏的,很有可能某个词是没有出现的。那么这样会导致句子概率=0,这个是不符合常理的。

考虑解决办法:增大数据量?
但是根据Zipf定律,增大数据量是解决不了问题的。(增加的仍然是高频词)
甚至有数据显示:用150万词的训练语料来训练三元模型。同样来源的测试语料中仍旧有23%的三元组是没有出现过的。

解决办法:平滑。

平滑方法:
Add_one平滑:规定每个n-元组比真实出现的次数多一次。

但是会出现两个问题:

  1. 不公平,“富人不公平”。
  2. 假设不公平。没有出现的元组都给了他相同的概率。

因为NLP中 很容易产生数据稀疏问题,所以平滑至关重要。之后另开一篇,讲各种平滑方法。

语言模型的评价-交叉熵。
针对X这个随机变量。(在n-gram当中就是n-元组的概率分布)那么会存在一个理想中的分布p(x).我们通过训练数据训练出来的是q(x)。那么怎么衡量,不同q(x)对p(x)更加接近呢?使用交叉熵。
H(X,q) = -\sum_{x\epsilon X}p(x)log q(x)
具体的操作:
比如说一元组模型。我们通过训练数据训练出模型,对于每个词w我们有对应的概率输出。
那么使用测试数据对模型进行评估。
设测试数据为T = w_1w_2w_3...w_{N^T}
那么我们可以计算出p(x)也就是
各种p(w)(注意了。w_1,w_2...,w_n有可能是相同的。)所以引入V_T来表示测试数据中出现w的种类数目。
从而交叉熵有以下:
p(w) = \frac{c(w)}{N^T}
\begin{equation} \begin{aligned} H(T,q)& = -\sum_{w\epsilon V_T} p(w)log q(w)\\ &=-\frac{1}{N^T}\sum_{w\epsilon V_T}c(w)*log q(w)\\ &=-\frac{1}{N^T}\sum_{w\epsilon T} log q(w)\\ &=-\frac{1}{N^T}log\prod_{w\epsilon T} q(w)\\ &=-\frac{1}{N^T}log q(T)\\ \end{aligned} \end{equation}
值得注意的是w是一个一元组。V_T是T这个测试数据中w的不同种类数目。而上述的T中一共有N^T个w。

那么接下来让我们考虑n-gram时候的模型评估。
引用上面的符号。T = w_1w_2w_3...w_{N^T}、Type:V_T
考虑我们应该评估什么,因为通过训练,我们获得的是条件概率p(w_i|w_{i-n+1}...w_{i-2}w_{i-1})。因此理论上我们应该是对条件概率分布求交叉熵。也就是求
p(w_n|w_1w_2...w_{n-1}) = \frac{c(w_1w_2...w_n)}{c(w_1w_2...w_{n-1})}
H(X,q) = \sum_{w_1w_2w_3...w_n\epsilon V_T}p(w_n|w_1w_2...w_{n-1})*logq(w_n|w_1w_2...w_{n-1})
但是实际中求的时候使用的是
p(w_1w_2...w_{n-1}w_{n}) = \frac{c(w_1w_2...w_n)}{N^T}
\begin{equation} \begin{aligned} H(X,q) &= -\sum_{w_1w_2w_3...w_n\epsilon V_T}p(w_1w_2...w_{n-1}w_{n})*logq(w_n|w_1w_2...w_{n-1})\\ &=-\frac{1}{N^T}\sum_{w_1w_2w_3...w_n\epsilon V_T}c(w_1w_2...w_{n-1}w_{n})*logq(w_n|w_1w_2...w_{n-1})\\ &=-\frac{1}{N^T}\sum_{w_1w_2w_3...w_n\epsilon T}logq(w_n|w_1w_2...w_{n-1})\\ &=-\frac{1}{N^T}logq(T)\\ \end{aligned} \end{equation}
个人认为可以的原因是对于每个项都只差一个常数级别。

相关文章

  • n元模型

    区分好 语言建模 和 语言模型。理解好 直接预测的问题:(1). 数据量需要庞大(为什么?)(2). 计算量庞大。...

  • 一元回归模型

    一元回归模型 回归模型 y = β1 * x + β2 + ε ε ~ N(0,σ^2) 模型解释:β1:斜率、...

  • 自然语言处理——5.1 语言模型(基本概念)

    n 元文法(n-gram)模型 当n=1 时,即出现在第i 位上的基元wi 独立于历史。一元文法也被写为uni-g...

  • dive-into-DL(pytotch)【第六章笔记】

    6.1 语言模型 n元语法查看p85页的例子。其中,二元文法(bigram)模型被称为一阶马尔科夫链。三元文法(t...

  • 机器学习:神经网络

    神经元模型 神经元具有如下三个功能  1. 能够接收 n 个神经元模型传递过来的信号  2. 能够在信号的传递过程...

  • Task1 - 3

    Task 1 线性回归 模型 线性回归用于回归预测,即预测一个连续的数值。一个n元线性回归模型 其中 是要模型学习...

  • 神经网络

    什么是神经网络 M-P神经元模型是一直沿用至今的神经元模型,神经元接收到来自n个其他神经元传递过来的输入信号,这些...

  • NLP第五篇-语言模型

    重点来了,语言模型的重要性就不用说了,这篇主要介绍n元语法模型、数据平滑技术、贝叶斯网络、马尔可夫模型、隐马尔可夫...

  • speech and language processing读书

    ch4 n元语法 n元语言模型是根据前面n-1个词猜测下面的单词。 广泛引用于语言识别,手写体识别,机器翻译,拼写...

  • NLP入门之N元语法模型

    在上边我们知道其实当今的自然语言处理的主流趋势是统计自然语言处理,而统计自然语言处理的基本目的就是结合语料库中的一...

网友评论

      本文标题:n元模型

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