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

之前:数学和人类对自然的认识以及生产活动联系起来,如天文学、几何和工程学、经济学、力学、物理学、生物学等。

香农(信息论)——第一次将数学语言学联系起来

信息

  • 很久以前人类以不同的叫声表示不同的信息,达到彼此交流的目的。
  • 信息传播的基本模式:  源信息 -> 编码 -> 信道传输 -> 接收者解码 -> 还原信息

文字和数字的起源

文字:文字是信息的载体。知道“罗塞塔”石碑的典故。

  1. 信息冗余的重要性:当石碑经历风吹日晒,一部分文字被腐蚀掉时,还有另一部分重复的文字作为备份,可以还原石碑的信息。类似的还有人体的DNA,在人体当中,有99%的DNA是无效的,正是这99%保证了人类的正常繁衍,当遇人类遇到辐射时,DNA发生变异的概率是1%。
  2. 语料,尤其是双语或多语的对照语料对翻译至关重要,它是我们从事机器翻译研究的基础。
  3. 不同的文字系统在记录信息上的能力是等价的。这个结论是翻译的基础。
  4. 文字按意思聚类(多义性)和利用上下文消除歧义性(disambiguation)。

数字:进制的产生

为了表达大数,不同的文明产生了不同的数字表示方法,最终只有使用10进制的文明生存了下来。

  • 10进制:古中国、古印度、阿拉伯
  • 12进制:印度、斯里兰卡
  • 20进制:玛雅,玛雅文明失败的原因之一就是进制太复杂,不利于科学进步,咱们现在要背九九乘法表,他们背的是361路围棋棋盘。
  • 单位进制:罗马(5、10、50、100、500、1000)

数字的表示方法(编解码原理)

  • 中国:编解码的密钥是乘除 二百万 = 2 x 100 x 10000
  • 罗马:编解码的密钥是加减 IV = 5-1 = 4  ,要用罗马文字表达10亿的话,一黑板是写不下的。

文字和语言背后的数学

  1. 符合最短编码原理(信息论):(罗马体系文字)常用字短,生僻字长。(意型文字)常用字笔画少,生僻字笔画长。
  2. 古汉语的文言文是压缩的汉语。古人日常口头交流用的是白话文,与现在的口头语相差不大。 那为什么有文言文呢?当时没有高效的保存文字的方法,文字需要刻在竹子、龟壳上,比较费时费力,于是古人就把语言压缩成简练的文言文,以节省信息存储量。道理:当传输信道比较窄的时候,信息就要压缩编码。
  3. 抄圣经的校验方式:将每个字母映射成一个数字。把每一页文字对应的数字按行列加起来,写在每行每列的尾部。在抄写时,把自己的数字和原文的数字进行对照,可以以最快的速度检查是否有抄写错误,而且还能定位行列。这种简单有效的方法已经开始展现出数学之美了。
  4. 语法不能覆盖所有的语言,即无法消除所有的“病句”,试图消除“病句”,纯化语言是徒劳的。“到底是语言对,还是语法对?”,前者从语法规则出发,后者从真实语言(语料)出发。现代自然语言处理的成就证明了语言获胜。

 

第二章 自然语言处理的两条路

1、语意理解(失败):让计算机像人脑一样分析语句的意思,建立语法分析树。失败原因有两点:

  1. 当遇到长难句时,计算量大幅增加,计算机的解码是上下文无关的,而自然语言是上下文相关的。
  2. 要理解语意必须建立大量的语法规则,然而即使规则再多,也不能覆盖全部的自然语言,总会有新的流行语言产生,它们处于语法规则之外。

2、数学与统计(成功):通过隐含马尔可夫模型来估计句子出现的可能性。

  • 马尔可夫假设:在一个句子中,每个词x出现的概率只与它前面的一个词x-1有关,而与更前面的0~x-2个词无关。这是一个偷懒却有效的假设,这个著名的假设使得语言处理的计算速度大幅提升且不失准确。(上下文相关性)
  • 马尔可夫链是马尔可夫模型的基础。它是一个有向图,各个状态之间有转移概率。同时,马尔可夫链也对概率论的研究产生了巨大贡献。
  • 马尔可夫链的训练:鲍姆-韦尔奇算法。

  统计学陷阱:

  • 当统计样本不足时(分母太小),统计结果的说服力将降低,此时可以用古德-图灵方法对统计结果进行打折平滑处理
  • N阶马尔可夫假设:每个词和它前面的N-1个词有关,N元模型的大小是N的指数关系。Google翻译使用的是4阶模型
  • 了解贾里尼克对现代语言处理的贡献。由贾里尼克(Frederick Jelinek)和他领导的IBM华生实验室通过统计的方法将语言识别率从70%提高到90%,基于统计的自然语言处理研究方法宣告成功。

 

 

第三章 统计语言模型(Statistical Language Model)

   1. 语言从一开始就是上下文相关的信息表达和传递方式。统计语言模型就是为处理上下文相关的语言而建立的数学模型。
 
    2. 基于规则的语言处理过程(失败): 分析一个句子的序列是否合乎文法,含义是否正确。
        基于统计的语言处理过程(成功): 按照这种词的顺序,组成句子的可能性有多大:
        P(w1,w2,w3,....wn) = P(w1)*P(w2|w1)(P(w3|w1,w2)*...*P(wn|w1...wn-2,wn-1)。w是word的意思。
        这是理论上的条件概率模型,实际使用时,往往只能做到P(wi|wi-1,wi-2)或P(wi|wi-1),前者叫2元文法模型(Bigram Model),后者叫3元文法模型。
        如果认为wi的概率与其他w没有关系,那就是一元模型。
 
    3. 条件概率工程化。以二元模型为例,P(wi|wi-1)= P(wi, wi-1)/ P(wi-1). 这是贝叶斯定理。
        根据大数定律,P(wi,wi-1)在样本足够大(这里就是语料足够多)时,可以用#(wi,wi-1)/#(语料库)近似逼近。
        一般来说,N-gram模型中,N越大,信息量越大,效果越好,同时计算量也越大,呈N的指数增长。
       更多工程细节,如零概率的概率平滑问题,见原书。

 

 第四章 中文分词

    1. 方法演变历史:查字典+最长匹配(哈工大王晓龙博士)。能解决7、8成的问题。无法解决的是“上海大学城书店”这类。
  • 统计方法。假设一个句子S有三种分法:A1...Ak、B1...Bm、C1....Cn。那么最佳的分法就是max(P(A1...Ak),P(B1,..Bm),P(C1...Cn)所对应的分法。具体寻找最大的联合概率是一个动态规划问题,可以用维特比(Viterbi)算法解决。
  • 方法的改进:孙茂松(清华大学)和吴德凯(香港科技大学)。孙茂松解决无词典的分词,吴德凯用中文分词的方法划分英文词组
    2. 工程细节:
  (1)分词一致性。 根据各人以及应用的需求,分词是不一致的,比如“清华大学”到底分为“清华”和“大学”还是不分词,要看具体应用。
  (2)分词粒度。一致性达不到是因为分词的粒度需求不一样。粒度要根据应用决定。例如,如果是搜索引擎,把“清华大学”不分词的话,人们搜索单个“清华”的时候,可能就找不到包含清华大学的网页搜索结果。
 
  分词的不准确可分为:
  (1)错误。错误又分为两种,一种是越界型错误,如把“北京大学生”分成“北京大学/生”;另一种是覆盖型错误,如把“贾里尼克”分成四个字。

  (2)颗粒度不一致。如人工分词的不一致性。可不视为错误。

 

 第五章 隐含马尔可夫模型

    1. 以翻译为例,输入信息串(源语言)S1,S2,...,Sn ,输出信息串(目标语言)O1,O2,...,On。他可以解决的问题是找到接收串对应的最可能的输入串。
        s1,s2,...,sn = ArgMax(P(s1,s2,...,sn|o1,o2,...,on))=ArgMax(P(o1,o2,...,on|s1,s2,...,sn)*P(s1,s2,...,sn)/P(o1,o2,...,on))。这大规模的联合概率可以用隐含马尔科夫模型来估计。HMM认为s1->o1,s2->o2,...,sn->on,且这些是独立的。

  P(s1,s2,...,sn,o1,o2,..,on)=P(o1,o2,...,on|s1,s2,...,sn)*P(s1,s2,...,sn)=连乘t(P(st|st-1)*P(ot|st))。这个公式就是HMM(隐马尔可夫模型),这些概率就是HMM的参数。

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

  1. 给定一个模型,如何计算某个特定的输出序列的概率;(Forward-Backward算法,Frederick Jelinek(弗里德里克。贾里尼克))
  2. 给定一个模型和某个特定的输出序列,如何找出最有可能产生这个输出的状态序列;(Vetebi Algorithm(维特比算法))
  3. 给定足够数量的观测数据,如何估计隐含马尔可夫模型的参数。(隐含马尔科夫模型的训练:有监督(人工标注)和无监督(鲍姆韦尔奇算法
3. 隐含马尔科夫模型的训练使用到无监督训练鲍姆韦尔奇算法(期望值最大化(Exceptation-Maximization,简称EM过程))
  因为HMM的参数估计需要大量的从s到o的标注数据,工作量太大,只能用算法来解决了。算法的思想上,先假设这些概率均等,于是得到一个初始模型M0,用这个初始模型标注样本,然后再根据HMM公式计算出新的模型参数,得到M1,可以证明的是P(O|M1)>P(O|M0),于是反复迭代,直到Mi+1和Mi相差无几。
 

 

 第六章 信息的度量和作用

    1. 信息熵。如果一个信息有32种可能性,你至少需要多少次才能猜中?答案是通过二分法,至少log32=5次就可以猜中。5就是信息熵。
        公式:H(x)=求和【-(P(x)*logP(x)】.
        实际上信息熵表示的是不确定性的度量。
    2. 信息的作用:消除不确定性。假如你不知道地方将要做出什么动作,那么给你一个相关信息,你就能降低对方动作的不确定性判断。
    3. 那什么是相关信息:就是能降低不确定性的信息。那怎么衡量他降低了多少不确定性?答案是看目标信息与提供信息的条件熵:H(X|Y)=-求和【P(X,Y)*P(X|Y)】X是目标信息,Y是提供的信息。可以证明的是H(X|Y)<=H(X)。更进一步,H(X|Y,Z)=-求和【P(X,Y,Z)*P(X|Y,Z)】<=H(X|Y) <= H(X).就是说条件越多,条件熵越小,目标信息X的不确定性越少。等号成立的条件是,提供的信息与X无关。
    4.源熵H(X)-条件熵H(X|Y)=I(X;Y),就是减少的不确定性的量化值,它的名字叫互信息
    5. 还有一个概念叫相对熵,衡量的是两个分布函数的相似性,TF-IDF的理论依据就是它。
 

 第七章 贾里尼克和现代语言处理

    1. 书可以早点读,也可以晚点读,读不懂就不读,当你到了大学,就可能读懂了,因为人长大了,理解能力会上升,理解的快,学习的也快,比小时候读书的效率高,小时候就是要成长,确立志向。学习是一个人一辈子的过程。
    2. 贾里尼克的开创性贡献是首创统计方法建立语音识别框架,以及BCJR算法(数字通信应用最广的两个算法之一,另一个是维特比算法)。
 

第八章 布尔代数和搜索引擎的索引

    1. 道与术:事情的原理是道,具体的做事方法叫术。追求的术的人,一生工作辛苦,只有掌握道,才能游刃有余。追求术的人,往往是希望走捷径,
        希望有一个模型能把事情毕其功于一役,但这是不现实的。
    2. 布尔代数:就是真、假的组合四则运算(与、或、非)
    3. 索引是怎么建立的。基本原理:有多少文章就建多长的一个位串,一个词在哪些文章中出现过,就把那些文章对应的位标为1。具体应用时,
        还有根据文章的重要性等指标,建立不同级别的索引,因为索引太大了。如果有100亿个网页,没条索引的长度就是100亿位。
 

第九章:图论和网络爬虫

    1. 引例:哥尼斯堡七桥问题。是一个图遍历问题。引理是,如果要能够一遍遍历所有的边,不重复,那么每个节点的度必然是偶数(对于每个点,
                   出去多少边,就有多少进入的边)。
    2. 图的广度优先遍历深度优先遍历。对应爬虫就是广度优先爬取和深度优先爬取。深度优先的好处是节省”握手“时间。广度优先的好处是可以先
        爬取重要的首页,然后再爬取次重要的。
    3. 有的网页需要运行一段脚本才能生成,那么爬虫就要模拟浏览器,运行一下网页在爬取分析。
    4. 一个URL应该让指定的机器去爬取,只样就只有一台机器发起判断该URL是否已经爬取过。否则每个机器遇到该URL都去服务器上判断一下是否
        已经抓取过,浪费时间。
 

第十章:PageRank,GOOGLE的民主表决式网页排名技术

    1. 一个网页的重要性取决于指向它的其他网页的重要性之和。
   
    2. pagerank算法的核心是迭代计算每个网页的权重,然后通过权重的大小对网页排名。迭代初始时每个网页的权重是一样的,然后通过计算更新每个网页的权重,规则如下:

      (1)当一个网页被越多的网页引用时,它的权重越大

      (2)当一个网页的权重越大时,它引用的网页的权重也随之变大

      (3)当一个网页引用的网页越多时,被它引用的网页获得的权重就越小

      如此反复迭代,算法最终会收敛到一个固定的排名。

 
 

第十一章:如何确定网页和查询的相关性

    1. 关键词相关性权重的科学度量:TF-IDF
        TF(Term Frequency)=(该词在该文档中出现的次数/该文档的总词数)
        IDF(Inverse Document Frequency)=log(总文档数/出现该词的文档数),为什么要取log?因为IDF是特定条件下关键词概率分布的相对熵(交叉熵)
 

第十二章:地图和本地搜索的基本技术-有限状态机和动态规划

    1. 当google的第一款具有导航功能的android手机发布时,传统导航公司麦哲伦导航的估计狂跌4成。
    2. 地址分析:就是有限状态机的状态转移。先分析省,再到第二个阶段市或者县,再到第三个阶段街道,最后是号。必需是这种顺序的才是合法的地址。AT&T有有限状态机的公开源码。
    3. 导航与动态规划。如果一条路径是最短的,那么其子路径也必然是最短的,都在这条路径就不会是最短的。要计算北京到广州的最短路径,那么先把北京到广州的中途路径,横切几刀,然后再在分开的小段里面寻找到达该阶段每个城市的最短路径,当计算到最后一个阶段时,全局最短路径就产生了。(运筹学 图论 寻找最短路径)
 

第十三章:Google AK-47的设计者 - 阿密特.辛格博士

    1. 不要一开始就把项目目标想得100%的完美,只要能解决80%的需求就可以开始着手了。过分追求完美,在长时间内无法达成这个完美,最后就不了了之了。也就是项目失败了。这就是完美主义的悲哀,不是他不聪明,而是方法不对。
    2. 做模型,每天分析badcase,这是王道。

 

第十四章:余弦定理与新闻分类

    1. 将文本表示为词的向量后,计算文本向量的余弦值,可以衡量文本的相似度,值越大,相似度越高。而且和文本的长度没有关系。
    2. 余弦向量积的计算技巧:向量的长度可以先保存下来;向量内积可以只考虑非零元素;删除虚词;给处于段落开头部分的词更高的权重,可以提高分类的准确性。

 

第十五章:矩阵运算与文本处理的两个分类问题

    1. 两个问题是:文本按主题分类(比如把介绍奥运会的新闻归为体育类)、词按意思归类(比如把运动项目的词,归为体育类)。这两者都可以通过矩阵运算来完美解决。
    2. 新闻分类的本质是聚类。一次性把10万个新闻两两相似度计算出来的方法是矩阵的奇异值分解(SVD)。SVD的缺点是存储需求大。
    3. Amn=Bmm * Cmn * Dnn. 这是未经降维的原始公式。Amn是文档与词的关系,B是词到此类别,C是此类别到文档类别,D是文档类别到文档。
 

第十六章:信息指纹及其应用

    1. 信息指纹就是把信息随机地映射到一个多维二进制空间的一个点(就是一个数字)。Hash是其中的一种。目的是为了搜索、去重、和加密。
    2. 理论上,一个信息指纹需要的最少位数是他的信息熵。
    3. 判断集合相同:最佳办法是,计算两集合的指纹,然后判断指纹是否相同。
    4. 信息指纹有可能是重复的,即,两个不同的信息,对应了相同的指纹。但概率极低。
    5. 相似哈希。用于google网页判重。
 

第十七章:由电视剧《暗算》所想到的 - 谈谈密码学的数学原理

    1. 加密后的密文的概率分布不能和明文的概率分布相同,否则,通过收集大量密文,就有可能通过统计来破解。
    2. 目前最好的加密算法是不可逆算法。
    3. 所有的密码都可以通过穷举来破解,只是穷举的时间超过一定阈值就认为是不可破解。
 

第十八章:闪光的不一定是金子-谈谈搜索引擎反作弊问题

    1. 排在搜索引擎非广告位第一位的结果不一定是最好的,TA有可能是作弊了。
    2. 解决作弊的道是信息论的噪音处理。作弊的就是噪音
        1)从信息源出发,加强抗噪
        2)从传输中过滤噪音
       关键是找到噪音的频率特征。这里就是找到作弊网站的特殊性。比如它一般含有大量的外链。作弊网站直接由于链接相似,往往能形成clique
 

第十九章:谈谈数学模型的重要性

    1. 真正的数学模型应该是可以证明的,而不是为了解决某个问题凑出来的。例子就是托勒密为了计算拟合行星的轨迹,采用大圆套小圆的方法,比较晦涩,复杂。其实,这里真正的模型是牛顿根据万有引bu力推导出来的椭圆模型。
    2. 一个真正的数学模型应该是简单的。
    3. 正确的模型刚开始可能没有经过精雕细琢的一个错误模型准确。
    4. 准确的数据对发现模型很重要
    5. 正确的模型可能受噪音干扰。正确的做法不是想办法拟合噪音,而是找出噪音的根源,这也许是个重大发现。
 

第二十章:不要把鸡蛋放到一个篮子里- 谈谈最大熵模型

    1. 原理:预测应当完全满足已知的条件,对未知的情况不做任何主观假设,在这种情况下,概率分布均匀,预测风险最小。因为这时候概率分布的信息熵最大。
    2. 已经证明,任何一组不自相矛盾的信息,最大熵模型是存在并且是唯一的。
    3. 最大熵模型的训练:GIS(通用迭代法)、IIS(实际上,现在用的是L-BFGS,SGD,书中的算法比较老,效果没有现在的好)。
 

第二十一章:拼音输入法的数学原理

    1. 输入法实际上是一种将语言转变为字母序列的编码方法。好坏的衡量指标是平均击键次数*寻找这个键的平均时长
    2. 复杂的编码规则不具有实用性。人一边在思考,一边还得想编码,效率是极低的。
    3. 香农第一定律:对于一个信息,任何编码长度都不小于ta的信息熵。
    4. 拼音输入法的拼音转汉字的算法就是动态规划:根据拼音序列,找最可能的汉字序列。具体计算需要用到HMM模型,即拼音序列的转移概率以及拼音与汉字的生成概率。与寻找地图上的最短路径相似,这里的路径长度就是转移概率与生成概率的积。
    5. 输入法模型是可以个性化的,因为不同的用户,ta经常使用的词的范围或类型是特定的。所以可以根据ta的输入语料来训练ta的辅助模型。
 

第二十二章:自然语言处理的教父马库斯和它的弟子们

    1. 从规则到统计的转移,开创性任务是贾里尼克,发扬光大的是马库斯(Mitch Marcus)
    2.真正的学术牛人从不吝啬ta的研究成果,因为当你理解了ta的研究,ta已经到达了另一个高地。(感觉这和商业中的保密完全是相反的)
 

第二十三章:布隆过滤器

    1. 原理:将源信息均匀随机地映射到一个很大的位串中,把相应位串的位标为1. 查找时,就是看位串中要查找的信息对应的位是不是1.做一个布尔与运算就可以。
    2. 但是布隆过滤器的布隆码有可能重复。重复的概率是极低的。如果真有重复,补救办法是对重复的记录建立白名单。
 

第二十四章:马尔科夫链的扩展-贝叶斯网络

    1. 贝叶斯网络就是多路径形式的马尔科夫链,也是有向的。
    2. 贝叶斯网络的训练分为两个部分:先生成网络的结构,再计算节点之间的权重即概率。选择哪些因素组成网络,使用互信息的方法。概率的计算使用最大熵模型。
 

第二十五章:条件随机场和句法分析

    1. 条件随机场是计算联合概率密度的模型。句法分析是识别句子中的名词、名词短语、动词短语等结构。
    2. 条件随机场实际上是无向的贝叶斯网络。他们都是概率图的一种
    3. 用于句法分析就是寻找一个句子在不同句法分割下,取得最大联合概率的那个分法。
 

第二十六章:维特比和他的维特比算法

    1. 维特比算法就是针对篱笆网络寻找最短路径的动态规划算法。类似于在地图上找最短路径。
    2. CDMA的创始人是一位美丽的女演员,名叫海蒂.拉马尔。
    3. CDMA码分多址的码是密码的意思,接收端根据自己的密码解码信道信息,解码不了的就表示不是发给ta的。
 

第二十七章:再谈文本自动分类问题-期望最大化算法

    1. k-centroids聚类算法背后的理论基础就是EM
    2. k-centroids的E就是点到类中心的距离d和类之间的距离D。目标函数就是D-d
    3. EM的过程分为两步:计算E,根据E重新计算模型参数,以最大化目标函数。
    4. EM是一类算法,不是具体算法。比如前面的GIS也是EM的一种。
    5. E的最大化能不能达到全局最优?如果目标函数的凸函数,那么就可以,否则达到的是局部最优。熵是凸函数,欧式距离是,余弦距离不是。
 

第二十八章:逻辑回归和搜索广告

    1. 搜索广告的一个优化目标就是预测用户会点击哪个广告。叫CTR(Click Through Rate)预估
    2. 这个模型的参数很多,达百万。
    3. 逻辑回归模型能很好地融合大量的参数,并把联合概率适应到一个介于0,1之间的逻辑曲线上,而自变量的范围是负无穷到正无穷。当然自变量也是需要甄选的。
    4. google和腾讯的点击率预估用的就是逻辑回归。
 

第二十九章:各个击破算法和google云计算

    1. 各个击破算法就是分治算法。
    2. MapReduce的原理来自于分治算法。把大人物切分成小任务,分别计算,然后再合并。