【读书笔记】数学之美2--从规则到统计

这本书重于“道”,所以不应该着眼于其中的“术”。悟“道”才可以在今后的研究生涯中笃定地前行。

目录

 

1.文字和语言vs数字和信息

1.1 信息

1.2 文字和数字

1.3 小结

2.自然语言处理

3.统计语言模型

3.1 用数学的方法描述语言规律

3.2 统计语言模型的工程诀窍

扫描二维码关注公众号,回复: 3953593 查看本文章

3.2.1 高阶语言模型

3.2.2 模型的训练、零概率问题和平滑方法

3.2.3 语料的选取问题

4.谈谈分词

4.1 中文分词

4.2 如何衡量分词的结果

5.隐含马尔可夫模型

5.1 通信模型

5.2 隐含马尔可夫模型

5.3 隐含马尔可夫模型的训练

6.信息的度量和作用

6.1 信息熵

6.2 信息的作用

6.3 互信息

6.4 相对熵

7.贾里尼克和现代语言处理


1.文字和语言vs数字和信息

1.1 信息

无论是语言、图像、手势等等,它们通信的模型都是如下图所示,有产生、编码、解码、接收这几步:

1.2 文字和数字

远古时期的文字比较简单、而且意思比较单一,随着人们所需要表达的信息的增多,文字的数量和意思也逐渐增多。而一字多意则就是--聚类,会造成歧义,于是对于单个字词意思的判断需要通过上下文来理解。

由罗塞塔石碑得来的指导意义:①信息的冗余是信息安全的保障;②语言的数据,即语料,对于翻译至关重要。

数字亦如文字一般,由于需要表达的不够,于是发展出了表示大数量的数字。

1.3 小结

语言的出现是为了人类之间的通信。字母、文字和数字实际上是信息编码的不同单位。任何一种语言都是一种编码的方式,而语言的语法规则就是编解码的算法。

 

2.自然语言处理

早期对自然语言的解决是基于规则的,即基于语法的。后来发展成为基于统计的。所以研究方向的选取其实也要根据大环境和自己对事物本质的认知吧,因为算力的提升和大数据时代的到来,才使得基于统计的语言模型成为潮流。

 

3.统计语言模型

计算机处理自然语言,一个基本的问题:为自然语言这种上下文相关的特性建立数学模型。

3.1 用数学的方法描述语言规律

一个句子:由若干个词组成。想要看这个句子是否合理,则我们可以看它的可能性大小如何,而可能性则用概率来衡量。设一个句子S:由按顺序的w1,w2,w3,...,wn词构成。则有:

\mathbf{P(S)=P(w1,w2,...,wn) =P(w1)*P(w2|w1)*P(w3|w1,w2)\cdot\cdot \cdot P(wn|w1,w2,...w(n-1))}       (3.1)                 

基于马尔可夫的假设,即一个词wi出现的概率只同他前面的词w(i-1)有关,于是上式就变成:

\mathbf{P(S)=P(w1)*P(w2|w1)*P(w3|w2)\cdot\cdot \cdot P(wn|w(n-1))}    (3.2)

上式所对应的统计语言模型是二元模型。当然,也可以假设一个词由前面N-1个词决定,对应的模型稍微复杂些,被称为N元模型。

我们根据基本问题,提出了统计语言模型,则如今的任务就是如何求解模型,即求解(3.2)中的条件概率P(wi|w(i-1)),根据它的定义:

\mathbf{P(w_{i-1}|w_{i})=\frac{P(w_{i-1},w_{i})}{P(w_{i-1})}}    (3.3)

变为估计联合概率P(wi,w(i-1))和边缘概率P(w(i-1))。只要在语料库中数一数w(i-1),w(i)这对词在统计的文本中前后相邻出现了多少次#(w(i-1),w(i)),以及w(i-1)本身在同样的文本中出现了多少次#(w(i-1)),然后用两个数除以语料库的大小#,即可得到这些词或者二元组的相对频度,再根据大数定理,只要统计量足够,相对频度就等于概率:

\mathbf{P(w_{i-1}|w_{i})=\frac{P(w_{i-1},w_{i})}{P(w_{i-1})}=\frac{f(w_{i-1},w_{i})}{f(w_{i-1})}}=\frac{\#(w_{i-1},w_{i})}{\#(w_{i-1})}    (3.4)

3.2 统计语言模型的工程诀窍

3.2.1 高阶语言模型

实际中应用最多的是N=3的三元模型,更高阶的模型就很少使用了。N取值一般比较小的原因:

  1. N元模型的大小几乎是N的指数函数,即O(|words|^{N})
  2. 模型从3到4时,效果提升不明显,但对资源的耗费却增加的非常快。

3.2.2 模型的训练、零概率问题和平滑方法

基本问题:统计样本的不足,导致基于大数定律的统计语言模型出现可靠性问题。

解决方法:

  1. 增加数据量,但还会出现大部分条件概率依然是零的情况,这种模型我们称之为“不平滑”
  2. 古德-图灵估计:对于没有看见的事件,我们不能认为它发生的概率就是零,因此我们从概率的总量中,分配一个很小的比例给这些没有看见的事件。还要就是,对于出现次数较少的词通过dr=(r+1)*N(r+1)/Nr来减小概率,因为当r较小时,它的统计可能不可靠。

3.2.3 语料的选取问题

  1. 训练语料和模型应用的领域要一致;
  2. 训练数据是越多越好;
  3. 对于能找到模式的、量比较大的噪音有必要过滤掉。

 

4.谈谈分词

4.1 中文分词

利用统计语言模型分词的方法,假定一个句子S可以有几种分词的方法:

\mathbf{A_{1},A_{2},A_{3},\cdot \cdot \cdot ,A_{k}}   

\mathbf{B_{1},B_{2},B_{3},\cdot \cdot \cdot ,B_{m}}   

\mathbf{C_{1},C_{2},C_{3},\cdot \cdot \cdot ,C_{n}}

那么最好的分词方法应该保证分完词后这个句子出现的概率最大。如此便可转化为如第三章的求解。

分词的两点说明:①该问题已解决,不是什么难题;②英文没有这样的问题。

4.2 如何衡量分词的结果

人工分词产生不一致性的原因主要在于人们对词的颗粒度的认识问题。所以我们可以让一个分词器同时支持不同层次的词的切分。

如图所示:

分词器有好有坏,这里面的差别主要在于数据的使用和工程实现的精度。

5.隐含马尔可夫模型

5.1 通信模型

一个典型的通信系统:

在通信中, 大多数情况是已知接收端的观测信号o1,o2,o3,...来推测信号源发送的信息s1,s2,s3,...。就像SLAM当中的状态估计问题:已知输入数据u和观测数据z的条件下,求计算状态x的条件概率分布,并求取最大值时候的x。模型如下所示:

\mathbf{s_{1},s_{2},s_{3},\cdot \cdot \cdot =Arg\ Max\ P(s_{1},s_{2},s_{3},\cdot \cdot \cdot|o_{1},o_{2},o_{3},\cdot \cdot \cdot)}    (5.1)

贝叶斯公式和P(o1,o2,o3,...)=可忽略的常数(因为输出已经产生了)可得上面公式的等价:

\mathbf{P(o_{1},o_{2},o_{3},\cdot \cdot \cdot |s_{1},s_{2},s_{3},\cdot \cdot \cdot) *P(s_{1},s_{2},s_{3},\cdot \cdot \cdot )}    (5.2)

这个公式完全可以用隐含马尔可夫模型来估计。

5.2 隐含马尔可夫模型

隐含马尔可夫模型是马尔科夫链(如上二元模型所述)的扩展:任一时刻t的状态st是不可见的。但是隐含马尔可夫模型在每个时刻t会输出一个符号ot,而且ot跟st相关且仅跟st相关。这个被称为独立输出假设。如图所示:

基于马尔可夫假设和独立输出假设,有:

\mathbf{P(s_{1},s_{2},s_{3},\cdot \cdot \cdot )=\prod_{t}P(s_{t}|s_{t-1})}    

\mathbf{P(o_{1},o_{2},o_{3},\cdot \cdot \cdot|s_{1},s_{2},s_{3},\cdot \cdot \cdot )=\prod_{t}P(o_{t}|s_{t})}          (5.3)

将(5.3)带入(5.2)得

\mathbf{P(o_{1},o_{2},o_{3},\cdot \cdot \cdot |s_{1},s_{2},s_{3},\cdot \cdot \cdot) *P(s_{1},s_{2},s_{3},\cdot \cdot \cdot )=\prod_{t}P(s_{t}|s_{t-1})*P(o_{t}|s_{t})}    (5.4)

所以求解(5.1)当中的模型,就等于求解使得(5.4)取最大值时的字符串(s1,s2,s3,...)。

5.3 隐含马尔可夫模型的训练

围绕着隐含马尔可夫模型有三个基本问题:

  1. 给定一个模型,如何计算某个特定的输出序列的概率;
  2. 给定一个模型和某个特定的输出序列,如何找到最可能产生这个输出的状态序列;
  3. 给定足够量的观测数据,如何估计隐含马尔可夫模型的参数

解决的算法:

  1. Forward-Backward Algorithm
  2. Vterbi Algorithm
  3. Baum-Welch Algorithm

第三个问题就是这一节要讨论的模型训练问题。这三个问题是递进解决的。

然后我们需要估计隐含马尔可夫模型的参数有:

  1. 转移概率(Transition Probability):从前一个状态s(t-1)进入到当前状态st的概率P(st|s(t-1));
  2. 生成概率(Generation Probability):每个状态st产生相应输出符号ot的概率P(ot|st)。

计算或者估计这些参数的过程称为模型的训练。

有监督的训练方法(Supervised Training):

若如前面统计语言模型一样从语料库中进行大数统计来近似概率的话,需要知道#(ot,st)--(若在机器翻译中,则是大量的中英对照的语料,还要把中英文的词组一一对应起来),如此成本是非常高的!

无监督的训练方法(Unsupervised Training):

因此,训练隐含马尔可夫模型更实用的方式是仅仅通过大量观测到的信号o1,o2,o3,...就能推算模型参数的P(st|s(t-1))和P(ot|st)的方法,其中主要是用的是Baum-Welch Algorithm。

Baum-Welch Algorithm的思想如下:

1.初始化模型,一个能够产生输出序列O的模型(如此便已知转移概率和生成概率),称之为\mathbf{M_{\theta 0}}

2.运用Forward-Backward和Viterbi解决问题1和2,算出这个模型产生O的概率\mathbf{P(O|M_{\theta 0})};(用于衡量模型的可靠性)

3.而且能够找到这个模型产生O的所有可能的路径以及这些路径的概率(这些可能的路径,实际上记录了每个状态经历了多少次,到达了哪些状态,输出了哪些符号),代入以求得一组新的\mathbf{M_{\theta 1}}

     \mathbf{P(o_{t}|s_{t})=\frac{P(o_{t},s_{t})}{P(s_{t})}}

     \mathbf{P(s_{t}|s_{t-1})=\frac{P(s_{t-1},s_{t})}{P(s_{t-1})}}      (5.5)

4.再从\mathbf{M_{\theta 1}}出发,可以找到一个更好的模型\mathbf{M_{\theta 2}},并且不断地找下去,直到输出的概率(我们的目标函数)达到最大化(EM过程,但所求的为局部最优点,若目标函数是凸函数(比如信息熵),则只有一个最优点)。

 

6.信息的度量和作用

6.1 信息熵

在热力学中学过,熵代表的就是不稳定性的度量,在此处一样,代表的是不确定性的多少,也即信息量。它们的关系就是--变量的不确定性越大,熵也就越大,要把它搞清楚,所需信息量也就越大。

熵的定义如下:

\mathbf{H(X)=-\sum_{x\ in\ X}P(x)logP(x)}    (6.1)

熵在各元素的概率一样大时候是最大的,在其中一个元素占大头时候比较小。就像世界杯里面猜32支球队的胜负,如果大家实力相当,则获胜的概率差不多大,则不确定性就大了;假如像勇士一样在NBA里面实力值爆棚的话,它的胜率肯定是最高的,这样不确定性就小了,进而熵就小了。

6.2 信息的作用

信息是消除系统不确定性的唯一办法。那么“相关的”信息就能够帮助我们消除不确定性,由此引入条件熵:

已知X的随机分布P(X),那么也就知道了X的熵:

\mathbf{H(X)=-\sum_{x\ in\ X}P(x)logP(x)}   (6.1)

假定还知道Y的一些情况,包括它和X一起出现的概率即联合概率分布P(x,y),以及在条件概率分布P(x|y)。定义在Y的条件下的条件熵为:

\mathbf{H(X|Y)=-\sum_{x,y\ in\ X,Y}P(x,y)logP(x|y)}    (6.2)

同理可以定义有两个条件的条件熵:

\mathbf{H(X|Y,Z)=-\sum_{x,y,z\ in\ X,Y,Z}P(x,y,z)logP(x|y,z)}    (6.3)

可以证明:\mathbf{H(X)\geq H(X|Y)\geq H(X|Y,Z)}    (6.4)

当我们获得的信息和要研究的事物毫无关系时,等号成立。

所以说,自然语言处理的大量问题就是寻找相关的信息,以消除系统的不确定性。

6.3 互信息

由上一节可知,只有相关性的信息才有用,那么如何度量“相关性”呢?假定有两个随机事件X和Y,它们的互信息定义如下:

\mathbf{I(X;Y)=\sum_{x,y\ in\ X,Y}P(x,y)log\frac{P(x,y)}{P(x)P(y)}}    (6.5)

\mathbf{I(X;Y)=H(X)-H(X|Y)}    (6.6)

只要有足够的语料,就不难估计P(x,y),P(x),P(y),所以互信息被广泛用于度量一些语言现象的相关性。

就比如“ball”这个单词,它的意思有“球”和“舞会”。若想要确定“ball”在一个句子中的准确意思,则可以从大量文本中找出和“球”一起出现的互信息最大的一些词,如篮球、运动、投射等等;再用同样方法找出和“舞会”一起出现的互信息最大的词,如俊男俊女、交际、裙子、鸡尾酒等等。有了这两组词,在翻译“ball”时,看看上下文中哪类相关的词多就可以了。

6.4 相对熵

相对熵,也被称为“交叉熵”,也用来衡量相关性,但和变量的互信息不同,它用来衡量两个取值为正数的函数的相似性,它的定义如下:

\mathbf{KL(f(x)||g(x))=\sum_{x\ in\ X}f(x)log\frac{f(x)}{g(x)}}    (6.7)

重点在于以下三条结论:

  1. 对于两个完全相同的函数,它们的相对熵等于零;
  2. 相对熵越大,两个函数差异越大;反之,相对熵越小,两个函数差异越小;
  3. 对于概率分布或者概率密度函数,如果取值均大于零,相对熵可以度量两个随机分布的差异性。

因为相对熵是不对称的:\mathbf{KL(f(x)||g(x))\neq KL(g(x)||f(x))}

这样使用起来有时不是很方便,为了让它对称,詹森和香农提出一种新的相对熵的计算方法,将上面的不等式量变取平均,即:

\mathbf{JS(f(x)||g(x))=\frac{1}{2}[KL(f(x)||g(x))+KL(g(x)||f(x))]}    (6.8)

相对熵的应用十分广:可以衡量两个随机信号的差异、两篇文章中词频分布以查重、衡量两个常用词在不同文本中的概率分布,看它们是否同义。

 

7.贾里尼克和现代语言处理

一个好的导师,他教给你的应该是:

  1. 不要去做什么,以少走歪路;
  2. 考虑问题的方法。

知之为知之,不知为不知。有不懂的就积极去理解,去探索。

猜你喜欢

转载自blog.csdn.net/qq_29567851/article/details/83420045