数学之美读书笔记

这是一本通俗易懂的科技好书。
第一章:文字和语言vs数字和信息
    1. 文字是信息的载体。信息传播的基本模式:
            源信息 -> 编码 -> 信道传输 -> 接收者解码 -> 还原信息
    2. 不同的语言,其表达的能力是等价的。这个结论是翻译的基础。
    3. 阿拉伯数字是印度人人发明的,由阿拉伯人传播到欧洲并发扬光大。
    4. 古汉语的文言文是压缩的汉语。古人日常口头交流用的是白话文,与现在的口头语相差不大。
        那为什么有文言文呢?当时没有高效的保存文字的方法,文字需要刻在竹子、龟壳上,比较费时费力,于是古人就把语言压缩成简练的文言文,
        以节省信息存储量。道理:当传输信道比较窄的时候,信息就要压缩编码。
    5. 语法不能覆盖所有的语言,即无法消除所有的“病句”,试图消除“病句”,纯化语言是徒劳的。
        “到底是语言对,还是语法对?”,前者从语法规则出发,后者从真实语言(语料)出发。现代自然语言处理的成就证明了语言获胜。

第二章:自然语言处理-从规则到统计
    1. “计算机能否处理自然语言?处理语言的方式与人类是否相同?”答案都是肯定的。
    2. 怎样验证一个机器是否是只能的? 方法是:让人和机器交流,当人感觉不到对方是机器时,就说明机器有智能了。
    3. 自然语言处理的历史误区:“要让机器处理自然语言,必需先让机器具有人的智能”,这叫”鸟飞派“。认为,造飞机必须模仿鸟的
        飞行机理。实际上现代飞机是建立在流体力学基础上的。
    4. 由贾里尼克(Frederick Jelinek)和他领导的IBM华生实验室通过统计的方法将语言识别率从70%提高到90%,基于统计的自然语言处理研究
        方法宣告成功。
第三章:统计语言模型
    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. 工程细节:分词一致性。根据各人以及应用的需求,分词是不一致的,比如“清华大学”到底分为“清华”和“大学”还是不分词,要看具体应用。
                         分词粒度。一致性达不到是因为分词的粒度需求不一样。粒度要根据应用决定。如果是搜索引擎,把“清华大学”不分词的话,人们搜索
                        单个“清华”的时候,可能就找不到包含清华大学的网页搜索结果。
第五章:隐含马尔科夫模型HMM
    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,
        其中,P(st|st-1)叫转移概率,P(ot|st)叫生成概率,表示由源st产生ot。 这些概率就是HMM的参数。
    2. 隐含马尔科夫模型的训练使用到无监督训练的鲍姆韦尔奇算法。因为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无关。
        源熵H(X)-条件熵H(X|Y)=I(X;Y),就是减少的不确定性的量化值,它的名字叫 互信息
     4. 还有一个概念叫 相对熵 ,衡量的是两个分布函数的相似性,TF-IDF的理论依据就是它。
第七章:贾里尼克和现代语言处理
    1. 贾里尼克,原捷克人,父亲在二战的纳粹集中营里遇难,后跟随母亲移民美国,十几岁时还在打工。上大学前的读书很少。
    2. 书可以早点读,也可以晚点读,读不懂就不读,当你到了大学,就可能读懂了,因为人长大了,理解能力会上升,理解的快,学习的也快,
        比小时候读书的效率高,小时候就是要成长,确立志向。(但中国的情况是,小时候读不懂书,就上不了大学,呵呵)
    3. 贾里尼克的开创性贡献是首创统计方法建立语音识别框架,以及BCJR算法。
    4. 他一直开着一辆丰田车,生活节俭,虽然比较有钱。一直工作到生命的最后一刻。
第八章:布尔代数和搜索引擎的索引
    1. 道与术:事情的原理是道,具体的做事方法叫术。追求的术的人,一生工作辛苦,只有掌握道,才能游刃有余。追求术的人,往往是希望走捷径,
        希望有一个模型能把事情毕其功于一役,但这是不现实的。
    2. 布尔代数:就是真、假的组合四则运算(与、或、非)
    3. 索引是怎么建立的。基本原理:有多少文章就建多长的一个位串,一个词在哪些文章中出现过,就把那些文章对应的位标为1。具体应用时,
        还有根据文章的重要性等指标,建立不同级别的索引,因为索引太大了。如果有100亿个网页,没条索引的长度就是100亿位。
第九章:图论和网络爬虫
    1. 引例:哥尼斯堡七桥问题。是一个图遍历问题。引理是,如果要能够一遍遍历所有的边,不重复,那么每个节点的度必然是偶数(对于每个点,
                   出去多少边,就有多少进入的边)。
    2. 图的广度优先遍历和深度优先遍历。对应爬虫就是广度优先爬取和深度优先爬取。深度优先的好处是节省”握手“时间。广度优先的好处是可以先
        爬取重要的首页,然后再爬取次重要的。
    3. 有的网页需要运行一段脚本才能生成,那么爬虫就要模拟浏览器,运行一下网页在爬取分析。
    4. 一个URL应该让指定的机器去爬取,只样就只有一台机器发起判断该URL是否已经爬取过。否则每个机器遇到该URL都去服务器上判断一下是否
        已经抓取过,浪费时间。
第十章:PageRank,GOOGLE的民主表决式网页排名技术
    1. 一个网页的重要性取决于指向它的其他网页的重要性之和。就这么简单。
    2. PageRank的工程计算方法:先假设每个网页的重要性均等,根据这个假设,算出第一次迭代排名。然后根据第一次排名结果再算第二次排名,
        以此迭代,直至收敛。理论证明是可以收敛到真实排名的。
第十一章:如何确定网页和查询的相关性
    1. 关键词先关性权重的科学度量:TF-IDF
        TF=(该词在该文档中出现的次数/该文档的总词数)
        IDF=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的原理来自于分治算法。把大人物切分成小任务,分别计算,然后再合并。

你可能感兴趣的:(数据挖掘)