数学之美-读书笔记-1-5章

文章目录

  • 第1章 文字和语言vs数字和信息
    • 信息
    • 文字和数字
    • 文字和语言背后的数学
    • 小结
  • 第2章 自然语言处理-从规则到统计
    • 前言
    • 机器智能
    • 从规则到统计
    • 小结
  • 第3章 统计语言模型
    • 1用数学的方法描述语言规律
    • 2延伸阅读
      • 2.1高阶语言模型
      • 2.2模型的训练、零概率问题和平滑方法
      • 2.3语料的选取问题
    • 个人总结
  • 第4章 谈谈分词
    • 1中文分词方法的演变
    • 2延伸阅读
      • 2.1分词的一致性
      • 2.2词的颗粒度和层次
  • 第5章 隐含马尔可夫模型
    • 1通信模型
    • 2延伸阅读

第1章 文字和语言vs数字和信息

本章带我们回到远古,回到语言、文字和数字产生的时代;

信息

早期人类会传播信息嘛?早期的人类如何传播信息?

  • 早期的人类其实就已经会传播信息了;
  • 只不过当时的信息比较简单,吱吱呀呀的声音;
  • 比如用某种特定的声音提示伙伴,表示“那里有只熊”;同伴可能也会吱吱两声,表示收到了信息

就上面简单的信息传递过程,其实也体现出了信息传播的模型:

  • 信息在信息源处 经过编码 传入信道 经过解码 传给接收者
  • 三要素:信息源、信道、接收者

因为早期人类了解到的信息很少,因此它们并不需要语言和数字,比如,它们想说那里有只熊,只需要手指着,呀呀两声就好了;

文字和数字

思考下语言是如何产生的?

  • 作者并没有解释,只是简单的说了下:
  • 我们祖先迅速学习新事物,语言也越来越丰富,越来越抽象

随着文明的发展,语言的共同要素:物体、数量、动作便被抽象出来;

当语言和词汇多到一定程度时,人们记不住了,高效记录信息的需求就产生了,这便是文字的起源

随着文明的发展,文字越来越多,问题是太多的话人们记不住,于是出现了“概念的第一次概括和归类”,这种概括和归类与机器学习中的聚类算法十分类似;

文字经过归类后,难免会产生歧义,比如中国古代的文言文,同理中国古代学者对儒家经典的注释和正义,其实都是在按照自己的理解做消除歧义性的工作;

埃及人通过文字记录了他们生活中很重要的信息,这使得我们对5000年前的埃及的了解要比1000年前的玛雅文明的了解要多得多,这要归功于埃及人通过文字记录了他们生活中最重要的信息,这能给我们一些指导意义:

  1. 信息的冗余是信息安全的保障,这里的信息安全是考虑的是信息的保存,而不是隐私保护;
  2. 语言的数据,称为语料对翻译至关重要,它是我们从事机器翻译研究的基础;

那么数字为什么出现呢?

  • 是因为人们的财产多到了需要数一数才能知道的程度,所以产生了计数系统;
  • 这个解释很有意思,不过很有道理;

最简单的计数系统:掰手指,所以手指头不够用了怎么办?简单暴力的方法:用脚指!

历史证明,使用脚指的这种文明消失掉了,那就是玛雅文明,他们采用20进制,因此玛雅人的一个世纪是四百年,而2012年刚好是这个太阳纪的最后一年,这就是讹传的世界末日;

我们的祖先也发现了手指头不够用了,我们的祖先很聪明,他们发明了进位制,中国人用个十百千万兆亿,罗马人用I表示1,V表示5,X表示10,L表示50等;

那么10亿分别用这两种方法如何表示?

  • 如果用罗马人的计数法表示的话,可能需要写满一个黑板。
  • 而我们的祖先的表示方法就是 10亿,很简洁;
  • 所以得出结论,中国人的编码要比罗马人的编码有效;

描述数字最厉害的人是古印度人,他们发明了包括0在内的10个阿拉伯数字,阿拉伯数字我们至今仍然在使用;

文字和语言背后的数学

拼音文字诞生于两河流域附近,之后经过了很多年的发展,传给了古希腊人发展,在他们那里拼写和读音已经紧密结合起来了;

从象形文字到拼音文字是一个飞跃,因为人们已经懂得对信息进行编码;

在罗马体系的文字中,常用字短,生僻字长,这就是信息论中的最短编码理论;

古希腊时期,语法出现,语法可以理解成语言的编码和解码规则,但是任何语言都有语法规则覆盖不到的地方,这些例外和不精确使得我们的语言丰富多彩;

语法的地位如何呢?

  • 是让语言的表达更准确、更丰富的至关重要的因素;
  • 但是语法也有其缺点,即不能覆盖所有;

小结

讲了文字、语言和数字的历史,目的是帮助读者感语言和数字天然的、内在的联系;

比如抽象概括的思想、比如建立语法规则的思想等等;

第2章 自然语言处理-从规则到统计

前言

机器能不能理解自然语言?这里涉及到两个认知层面的问题:

  1. 机器能不能处理自然语言
  2. 如果能,是不是和人处理的方式一样?

这两个问题的答案都是YES;

机器智能

图灵测试的概念:让人和机器交流,如果人无法判断自己交流的对象是人还是机器,就说明这个机器有智能了;

20世纪50年代到70年代,人们一致认为:要让机器翻译或语音识别,只有让机器能理解自然语言,而做到这一点就必须让机器拥有类似我们人类这样的智能;事实证明,这个观点是错误的;

20世纪60年代,摆在科学家面前的问题是怎样才能理解自然语言,而关键点是分析语句和获取语义,然后建立了一系列语法规则,当然规则可能会非常庞大,而且建立的语法规则不能做到完全覆盖;

  • 从数学角度讲,程序设计语言是一种上下文无关文法,而自然语言是上下文有关文法;
  • 前者算法的复杂度是语言长度的2次方,后者算法的复杂度是语言长度的6次方;
  • 对于这样6次方的复杂度:当时的机器是处理不了的,即使今天,效果也不会很好;
  • 所以说,那时人们的错误貌似没有意识到,使用规则性方法来解决该问题的复杂度会如此之高!

从规则到统计

1970年后,统计语言学出现,关键人物是贾里尼克和他领导的IBM华生实验室,他们利用统计模型,将语音识别率从70%提高到90%;

当时基于统计学方法的核心模型是通信系统加隐含马尔可夫模型;

一直到20世纪90年代末期,统计学方法才变得更有说服力,其中一部分原因也是那些老科学家的退休,他们不愿接受新的想法···

小结

基于统计学的数学模型和通信模型是相通的,但是科学家们,用了几十年的时间才意识到这一点;

另外前段时间还有同学跟我说,现在的自动驾驶,国家必须出一些相关的法律法规来规定一些特殊情况,比如如何非撞不可,是撞老人还是撞小孩,我们争论了半天···,我说,现在的统计学模型,你根本无法加这种规则啊,这里面的判断,全都是一堆矩阵数字,根本没法理解···,争论了一晚上都争论无果;

不过我知道,规则这种东西是无穷无尽的,而现在的自动驾驶的基本方向也是用数据集去训练,都是统计学的方法,根本不是规则化,所以我觉得我那位同学说的很没谱;

第3章 统计语言模型

有关自然语言的处理,可以用一句话来概括:

  • 如何给上下文有关文法做一个合理、有效的数学模型?

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

假设S是一个句子, S = w 1 , w 2 , w 3 , ⋅ ⋅ ⋅ , w n S=w_1, w_2, w_3, ···, w_n S=w1,w2,w3,,wn,其中wi表示词,那么P(S)就可以表示成: P ( S ) = P ( w 1 , w 2 , ⋅ ⋅ ⋅ , w n ) = P ( w 1 ) x P ( w 2 ∣ w 1 ) x P ( w 3 ∣ w 1 , w 2 ) ⋅ ⋅ ⋅ P ( w n ∣ w 1 , w 2 , ⋅ ⋅ ⋅ , w n − 1 ) P(S)=P(w_1, w_2,···,w_n)= P(w_1) x P(w_2|w_1) x P(w_3|w_1,w_2)···P(w_n|w_1, w_2, ···, w_n-1) P(S)=P(w1,w2,,wn)=P(w1)xP(w2w1)xP(w3w1,w2)P(wnw1,w2,,wn1)
的确 w n w_n wn出现的概率取决于它前面的词,但是这些条件概率怎么算呢?

第三个词的概率 P ( w 3 ∣ w 1 , w 2 ) P(w_3|w_1,w_2) P(w3w1,w2)已经非常难算了,因为涉及到3个变量,每个变量的可能性都是一种语言词典的大小;

那怎么办?能不能采用近似的方法,估算呢?

马尔可夫提出了一种偷懒的算法,假设每个词仅仅和其前面那个次有关,即:
P ( S ) = P ( w 1 ) x P ( w 2 ∣ w 1 ) x P ( w 3 ∣ w 2 ) ⋅ ⋅ ⋅ P ( w n ∣ w n − 1 ) P(S)=P(w_1) x P(w_2|w_1) x P(w_3|w_2)···P(w_n|w_n-1) P(S)=P(w1)xP(w2w1)xP(w3w2)P(wnwn1)
这就叫二元模型,当然也可以假定一个词由前N-1个词决定,那么就是N元模型;

那么条件概率就好算了:
P ( w i ∣ w i − 1 ) = P ( w i − 1 , w i ) P ( w i − 1 ) P(w_i|w_i-1)=\dfrac{P(w_i-1, w_i)}{P(w_i-1)} P(wiwi1)=P(wi1)P(wi1,wi)
根据大数定理,去分别统计他们出现的数量就OK了!

这种估算方法很多人怀疑,但是事实证明,这种方案比任何方案都有效;

当然实际的语言模型并没有那么简单,还有需要细节需要处理,见下文:

2延伸阅读

2.1高阶语言模型

高阶模型就是之前讲的N元模型,N的取值问题,在实际应用中最多的是N=3的模型,为什么不取大一点呢?

因为算法复杂度和N成指数关系,但是自然语言的上下文关系可能跨度很大,仅仅假设和前两个词有关系怎么能行呢?

这里还提到了其他长程依赖的方法;

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

模型训练:尽可能使用大的数据集

零概率问题:在语料中,某些词没有出现,那么能认为他们的概率为0嘛?不能的,这里用了些平滑方法:古德-图灵估计;

给那些零概率的词赋予了一个很小的非零值,从而解决了该问题;

还有卡茨退避法

之后在工程中,可能会遇到类似的问题,几乎都属于数据集的处理叭;

2.3语料的选取问题

给出的结论是:在成本不高的情况下,有必要对数据集进行过滤;

个人也做过有关深度学习相关的东西,不过的确好像没怎么去处理数据集,包括数据集过滤,数据集扩充;

个人总结

有时数学公式无法求解,不如退而求其次,求近似值,说不定也能取得不错的效果;

这是一个比较好的研究思路,不过像解决工程上的一些棘手问题,还是需要一些数学功底的;

第4章 谈谈分词

1中文分词方法的演变

什么是分词?
将中国航天官员分解成 中国 航天 官员 这就叫分词

怎么分?
简单,查字典,匹配最长词,但是这种方案只能解决七八成的问题;

用统计学模型:
假设有三种方案:
A1, A2, ···, A3
B1, B2, ···, B3
C1, C2, ···, C3
那么哪个出现的概率最大,哪个就最好咯;那么怎么算呢?

这是一个动态规划问题,使用的算法是维特比算法,具体怎么算笔记里就不说了,仅仅将算法名字写出来,如果以后用得到再去查资料;

而且读这本书最重要的我觉得不是数学细节问题,而是处理问题的思维问题,比如将上述分词问题转换成一个概率问题,概率问题再想办法转换成动态规划问题,然后求解;

2延伸阅读

2.1分词的一致性

这一点是因为歧义问题,有些人认为清华大学不用拆,有些人认为清华大学需要拆分成清华 和 大学

我觉得吧,不必去争论这些乱七八糟的问题,毕竟即使把嘴皮磨破了也无法说服某些人,要么忽略,要么用数学方法把这个问题解决掉;

调查发现人们对分词的一致性也只有80%-90%

但是其实可以忽略这一点;

2.2词的颗粒度和层次

更好的做法是让分词器支持不同层次的词的切分;

这是针对上述分词的不一致问题提出的解决方案,即清华大学的粒度比较大,而再拆分成:清华、大学粒度就比较小了;

第5章 隐含马尔可夫模型

1通信模型

之前提到过,其实模型很简单:

  • 信息在信息源处 经过编码 传入信道 经过解码 传给接收者
  • 三要素:信息源、信道、接收者

假设s1, s2, s3为发送者发送的信息,o1, o2, o3为接收端观测到的信号,那么如何根据o来推测s就是类似于语音识别了,这个问题怎么求解呢?
就是将条件概率最大化:
P(s1, s2, s3 | o1, o2, o3)
一堆数学公式不太好编辑:贝叶斯公式对上述公式做了变形,然后介绍了马尔可夫链,然后隐含马尔可夫模型,然后就能求解了;

个人觉得,某个实际问题不能解决,一般是因为两种障碍:

  • 不能有效的使用数学公式去表达该问题
  • 用数学公式表达出来之后,工程上很难求解,即复杂度很高

自然语言处理面临的就是第二个问题,采取的解决方案是马尔可夫提出的偷懒的办法,就是上面讲的N元模型;

2延伸阅读

介绍了如何训练隐含马尔可夫模型

一个无监督学习的算法:鲍姆-韦尔奇算法

无监督学习不能有效的找到全局最优点;

你可能感兴趣的:(Others)