大概是在10年前,无意间读到吴军老师撰写得数学之美,感觉吴老师对数学与信息论的结合讲述的太好了,吴老师结合自身的多年工作经历将信息技术中用到的数学,特别是数学里面的很多概率论、线性代数、模型算法、编解码规则等,用非常通俗易懂的语言阐述给大家,比如我们天天用到的搜索引擎、商品推荐、语言识别、自然语言处理、文章分类、人脸识别等问题的底层数学原理,如果大家能够在上初高中或者大学期间能够读到这本书,我想应该会让好多觉得数学学习枯燥的人获得启发和价值引导灵感,同样也让我们非常直观的了解到为什么大家要从小学1年级到大学都在学习数学,数据的价值在哪里,数学是一种逻辑思维,一种解决问题和描述问题本质的方式方法,很多科学、工程问题或物理学的问题最终都要借助数学来解决。以下是一些关键细节,供参考。
一、文字和语言,数字和信息
信息:最早是声音传播,方便人类交流通信,促使语言的产生,语言和通信的联系是天然的,详见下图。大学期间学过信号处理课程的同学一定非常熟悉这个模型,以及工作中从事后端数据传输处理(比如电子邮件的发送接收设计等)的小伙伴一定非常熟悉,原来,这些技能其实早在人类祖先的交流中就拥有了,只是没有一个相对规范的称呼,通信模型。
文字(包括数字)是高效记录信息的方式,但文字需要上下文,否则会产生歧义,比如日 表示太阳,也表示一天。文字最早是象形文字,后来是拼音文字,汉字笔画其实也是一种字母表示,也是拼音文字。
数字进制的概念描述是不同位置的数字表示不同的量,中国用个十百千万千万亿兆,罗马人用I:1,V:5,X:10,L:50,C:100,D:500,M:1000。单200万的数字,用罗马编码估计得一黑板,现在我们用的阿拉伯数字(0~9)其实是印度人发明的,经过阿拉伯人传到欧洲。
文字的编码也是常用字笔画短,生僻字笔画多。符合信息论的最短编码原理
通信原理和信息传播模型
信源编码和最短编码
解码的规则和语法
聚类
校验位
双语对照文本,语料库和机器翻译
多义性和利用上下文消除歧义性
二、自然语言处理(NLP)--从规则到统计
经过多年的自然语言的研究,科学家发现,要让机器具有智能,不是让机器理解自然语言,而是靠数学,准确的说是靠统计学。发明飞机的怀特兄弟靠的是空气动力学研究,也是工程和数学的结合,不是仿生学(理解鸟怎么飞的)
基于规则的自然语言处理:是早期对自然语言处理的理解,需要进行句法分析和语义分析
基于统计的自然语言处理方法,在数学模型上和通信是相通的,甚至就是相同的;在数学意义上,自然语言处理又和语言的初衷(即上面的通信原理)联系在了一起。
三、统计语言模型
科学家要让计算机处理自然语言,需要为自然语言这种上下文相关的特性建立数学模型,简称统计语言模型
IBM的贾里尼克认为:一个句子是否合理,是否出现,就看他的可能性大小如何。概率
整句话出现的概率P(S),w1表示第一个词,wn表示第n个词
P(S)=P(w1,w2,w3,...,wn)=P(w1)*P(w2|w1)*P(w3|w1,w2)*P(w4|w1,w2,w3)...*P(wn|w1,w2,w3,...,wn-1).
马尔可夫提出来一种偷懒但有效的方法:假设任意一个词wi出现的概率只与它前面一个词(wi-1)有关,于是上面的公式就变为
P(S)=P(w1)*P(w2|w1)*P(w3|w2)*P(w4|w3)...*P(wn|wn-1).
事实证明:统计语言模型比任何已知的借助某种规则的解决方法更有效。数学的精彩之处就在于利用简单的模型可以干大事。
马尔可夫模型其实和俄罗斯的数学家马尔可夫没关系,是美国数学家鲍姆.韦尔奇发现的。后来不断变化,又出现了隐含马尔可夫模型。