书评:本书讲的是道而不是术,真正的术还要自己细致的研究下去,目前看的第一遍总结的不是很好,后面再看会继续完善。
第1章:文字和语言VS数字和信息
1.文字和数字
讲了一堆古代文字,其实就是为了引出下面两个概念用于翻译
1.信息的冗余是安全保障
2.古代语料的多样性(一个句子或者词多种写法)对翻译很有用
2.文字和语言背后的数学
1.古代人讲话宽信道,而传竹筒是窄信道,所以我们古时候就有压缩这个思想啦
2.圣经有90-100W字,犹太人很认真,但是还是会错误,所以出现校验码的思想(每个字都是一个数字,每行内相加都是一个固定值,能查出改行是否出错)
3.语言中的语法肯定会有人不精确,这个无法避免,最后实践表明,我们要从语言出发,而不是语法,因为语法我很难完全遵守
3.总结思考
1.通信原理
2.最短编码(哈夫曼),编码(文字和数字其实就是一种不同的编码)
3.解码规则、语法
4.聚类(相类的东西聚集在一起,类似K-means)
5.校验 (检测信息错误)
6.语义,语料,双语对照,机器翻译
7.利用上下句和多意性消除歧义
以上就是结合故事说明的与数学相关的规律啦
第2章:自然语言处理-规则到统计
回答了2个问题:计算机可以处理自然语言,且方法可以做到与人一样,所以有研究下去的意义。
- 机器智能
1避免误区:机器不可能做到人脑那样学习语言,而是要通过数学模型和统计方法的实现的。
2.两个路线:语法分析和语义分析,英文通常语法分析,而中文以前通常是语义分析
3.机器分析句子:
1)普通的,主谓宾直接分,很简单
2)复杂的,可能主谓宾宾补,或者主语有同位语,普通机器根本没法分析,因为规则太多,就算规则都已经完备,但是目前计算机也计算不过来呀,所以完全语义规则分析不可行,需要过渡到结合下面的统计
4.规则到统计:语言机器很难用规则来翻译而是依赖于上下文,甚至常识,渐渐的过度到利用统计翻译机器语言(所以要打破常规,不要固执于一个思想,就像文章里面的老科学家的固执,表现出作者想在意识清晰(固执)之前退休)。
2.总结:
自然语言的发展,从语法语义过度到现在的统计,不要墨守成规。
第3章:统计语言模型
1.最简单的统计模型:
P(S) = P(w1)P(w2|w1)P(w3| w1 w2)…P(wn|w1 w2…wn-1)
这样的方式在计算上比较麻烦,而有了一个较为偷懒的假设“马尔科夫假设”,假设后一个词的出现只与前一个词相关,公式的形状如下:
P(S) = P(w1)P(w2|w1)P(w3|w2)…P(wi|wi-1)
最终是 P(wi | wi-1) = P(wi-1,wi)/P(wi-1)
这种假设的局限性在于:“在自然语言中,上下文之间的相关性跨度可能很大,甚至可以从一个段落跨到另一个段落。因此即便再怎么提高模型的阶数,对这种情况也无可奈何.”
2.解决跨度:
目前最高的是google的4元模型,上面是相邻的两个相关词,跨度为1,如果是跨度为2,3时即为3、4元模型,P(wi |w1,w2,········……… wi-1) = P(wi | wi-n+1,wi-n+2, ……….,wi-1)
3.训练模型:0概率(非平滑)和平滑方法:
1.使用语言模型需要知道模型中所有的条件概率,我们称之为模型的参数。通过对语料的统计,得到这些参数的过程称作模型的训练。
2.一般来说P(wi | wi-1)是有可能出现0和1概率的,而且很多时候不合理,增加数据量(大数定理就完全能解决,但是不可能完全的大数)虽然可以避免大多数这些情况,但是还是会出现,所以需要解决。这里使用了古德图灵估计的方法,把未看见事件分配一个不为0的概率从而使整体概率平。
第4章:谈谈中文分词
1.中文分词的演变:
一开始是以字典法进行分词,但是二义性太大啦,渐渐的也由规则演变成基于统计的分词方法,而且实践中他也非常有效。(动态规划和维特比算法),需要注意的是,在不同应用中需要用到不同的分词器
2.分词的一致性和粒度、层次问题:
不同的人分词粒度是不同的,比如北京大学,有些人可能会分为北京-大学,而有些人直接理解为一整个词,这就是分词粒度,和一致性的问题,所以对于不同层次的次,我们需要挖掘出更多的复合词,从而完善复合词词典。
第5章:隐含马尔可夫模型
1.通信模型:
语言输入(s1,s2,s3……sn)编码―――》语言输出(o1,o2,o3……on)解码
2.马尔可夫链:
天气状态可假设为m1,m2,m3,m4之间的转换
可以用概率来统计,比如有很多天的天气预报,我们知道m2天为j次,m3天为k次,以此类推,最后他们的比值除以总数就是他们的状态改变概率(其中每个状态只和前面一个有关)。
3.隐含马尔可夫模型:
是马尔可夫的一个拓展,我们根据前面的语音输入s1,s2,s3……sn――》输出o1,o2,o3……on,其中s1,s2,s3……sn的概率值我们是能计算的出来的,而o1,o2,o3……on,我们没法得知,他是一个不可见的状态,但是我们大概知道一个每个时刻的st会输出特定的ot,也就是说他们之间有一个特定的函数,从而我们可以推导出ot的大概输出。
所以通信的解码可以利用隐含马尔可夫模型来解决,完全没想到可以这样做·······…太牛了!
4.总结:
需要2种算法:训练算法(鲍姆-韦尔奇算法),解码算法(维特比算法)之后才能使用隐含马可夫模型这个工具
第6章:信息的度量和作用
1.信息熵
,也就是,单位为比特。
2.信息的作用:
信息的作用是用于消除不确定性,自然语言处理的最大问题就是为了找到相关信息,比如我们根据前面章节可知一元模型,直接找信息,二元模型是根据上下文来找信息,所以可以把1的公式改为其中x在y的条件下得到的信息概率。
3.互信息:
书里有个句子,就是bush到底是总统还是灌木丛,这种二义性的问题很难用语法和规则等方法解决,但是根据上下文,如出现美国,华盛顿等字样就可以知道他是总统啦,如果是土壤,植物就可以证明他是灌木丛的意思,这就是互信息的作用,其中信息的条件熵差异为:,X,Y完全相关时取值为1,无关时为0
4.相对熵:
第7章:贾里尼克和现代语言处理
1.作者和贾里尼克教育观点:
学习不一定要学的早,晚点学也一样,因为错过了成长的乐趣反而更加不好,作者举例了一个中学学500小时,大学只需要100小时就能学完的例子(这里非常赞同)。
2.大师都只讲哪里不要做,而不是做什么:
这里跟第22章的布莱尔的想法很像,就是能根据已经有的经验快速否定掉一种不太可能的方案,防止别人走进岔路。
3.一个老实人的奇迹:
说了贾里尼克做了很多大事,同时主要讲到他是个很严格的人,作者可能认为他这样会经常得罪人,然而事实并非如此,所以作者下结论他是个公正的人,尽管他很严厉。
第8章 简单之美 布尔代数和搜索引擎
1搜索引擎三要素:
*自动下载*尽可能多的网页;建立快速有效的索引;根据相关性对网页进行公平准确的排序**,其中主要讲索引
2.布尔运算:
比如搜索一篇文章为原子能而不要应用这个词的文章,先第一次全网搜索有原子能的文章比如10101010111100000····,1为出现,0为未出现,这个二进制串非常长,然后在同样找没有应用关键字的文章如10101111110000000···,然后在把上面两个进行布尔运算,最后就是结果啦。
3.索引:
根据上面的布尔,的前提就是要每个网页都有关键字的索引,否则会非常慢,同时就算有每个网页都有关键字索引,那这个索引表也会非常大,并且索引表的附加信息也会非常多,所以根据索引和布尔运算得到需要的结果就需要分布式来运算解决。
第9章:图论和网络爬虫
1.两种图遍历方法:
DFS,BFS
2.网络爬虫:
其实就是根据上面的这两种遍历方法,遍历网页,并下载,但是这种下载量非常大,需要分布式进行操作
3.欧拉定理:
如果一个图从顶点出发,每条边不重复的遍历一遍回到这个顶点,那么需要每个顶点的度一定为偶数
4.网络爬虫搜索和下载方式:
网络爬虫一般BFS优于DFS,因为我们一般首选需要各个网站的首页,再要其其他页面,所以先广度搜索尽可能多的不同类型页面,再把页面进行广度搜索,当然不是简单的广度搜索,其次是下载方式,因为下载和搜索是分离的两个服务器,为了避免多次握手,所以先把一个下载完再下载另一个,而不是向电路交换一样一部分一部分的下载,这时就需要一个调度系统管理下载的调度问题。
第10章:pagerank—google的民主表决式网名,网页排序算法思想
1.pagerang的核心思想:
民主表决,其实就是如果一个网页被其他很多网页超链接,那么他普遍被承认和信赖,所以他的排名就高。同时还要分权处理,来自排名高的网页链接权重应该加大,但是这样的话想知道权重又得知道他们的排名(相当于先有鸡还是先有蛋问题),文章讲到用了二维矩阵相乘的思想,一开始权重都相同,计算一轮后再迭代一轮,得出二次排名即为可靠的,由于矩阵计算量非常大,他们使用了稀疏矩阵来解决,具体看书的延展阅读。
第11章:如何确定网页和查询的相关性
1.词频率:
如搜索“原子能的应用”在某一个1000词的网页中出现2、35、5次,那么词频率分别为0.002、0.035、0.005,相加就是总的词频率
2.去除暂停词:
一般来说,上面的“的”次出现次数高,且没什么意义,一般都不考虑这些词,即他的词权重为0
3.词权重作用:
上面的“原子能的应用”,我们看到原子能才是他的中心词,而应用这个词很泛,所以应该给他不同的权重
4. 词权重方法:
词权重一般使用“逆文本频率指数”即log(D/Dw),其中D为所有网页数,Dw为命中网页数,带入公式后就是这个词所占的权重,然后词频率和权重交叉相乘后相加就能得到想要对应的TF-IDF值啦。
第12章:地图和本地搜索的最基本技术—有限状态机和动态规划
1.有限状态机:
从开始状态到终止状态,每个状态的转变都严格匹配,否则不匹配,
由于自然语言比较随意,很难完全做到准确匹配,这时就要引入基于概率的有限状态机了,就跟马尔可夫模型一样。
2.动态规划:
1.划分子问题2.确定动态规划函数3.计算后填入表格4.重复操作
3.有限状态传感器:
WFST模型他就是在有限状态机下加入不同的概率走势,也就是说他跟我们之前学的二元模型是类似的,每一个二元模型都能用有限状态传感器描述。
第13章:Google AK-47 的设计者——阿密特·辛格博士—寻求简单的哲学
1.简单的哲学思想:
*做事可以简单解决就先解决,不一定完全的追寻效益问题,就比如文章所说的,作者写了个中文搜索算法,虽然速度快,但是消耗内存大,辛格博士他建议用拟合函数代替训练模型,但是效率会降低很多,作者一开始不赞同,但是他还是这么做了,最后证明出先简单解决问题,提供给用户使用,后面再继续优化才是最好的,而不应该一开始就急于求成,做到最好那种。*
*第**14**章:余弦定理和新闻分类*
1.新闻分类思想:
*使用了前面的**TF-IDF**思想,确定新闻间的相关性,然后进行分类*
2.具体步骤:
*1**)我们对于一个词表比如有**64000**个词,进行编号。*
*2**)某一篇文章进行**TF-IDF**值计算(方法看第**11**章)*
*3**)重复上面步奏,把其他文章进行运算计算其**TF-IDF**值,封装成向量。*
*4**)把上面的文章两两进行余弦运算:*
*因为我们知道每个文本的词数量不一样,可能有的**10000**词,有的**100**词,直接对比**TF**值是不合理的,因为对应的向量长度不一,但是他们的方向是可能一致的,所以只需要计算其两个向量的夹角就可以知道两篇新闻是否相类似了。*
*5**)分类,根据字典一样把某一新闻归类到某一处,直接余弦相似度运算即可分类了*
*但是有一个问题,就是怎么知道有多少个类别呢?*
- *手动写,麻烦,容易错误*
- *自动生成:自底向上不断合并*
3.优化方法
1.可以先把每个文章的词频率计算好来封存,两两余弦计算时直接提取即可
2.余弦内积时,由于大量的元素为0,所以我们只要计算非零元素。
3.删除虚词的计算,比如‘的’、‘地’,这些词一般数量非0但是又是一种无用的干扰项, 同时还会影响权重,所以去除后计算会更合理更快
4.补充:位置加权,比如文章开头和结尾的权重应该高一些,也就是文章开头和结尾的词权重可以提高后再计算,类似TF-IDF模型。
第15章:矩阵运算和文本处理中的两个分类问题
1.本章解决一个问题:
如果使用第十四章中引入的向量距离的方法,对数以亿计的网页进行距离计算,计算量过于巨大,而引入了矩阵的运算来计算新闻之间的相似性,一次性把多个新闻的相似性计算出来。利用了矩阵运算中的奇异值分解。(有没有联想到《线性代数》中矩阵之间向量的线性相关的运算?)
这种方式,将多个新闻的向量组成的矩阵分解为三个小矩阵相乘,使得计算存储量和计算量小了三个数量级以上。
2.步骤:
1)有n个词,M篇文章,形成M*N矩阵,其中aij代表第j个词在第i篇文章(行词列文章)出现的 加权词频(比如TF-IDF值)
2)奇异值分解,把上面的A大矩阵转化为3个小矩阵相乘
其中,比如X矩阵中每行代表一个词(行)在词类(列)(语义相近的词类)的相关性
Y矩阵中每列对应一个文本,每行代表一个主题,即每一个主题(行)在文本(列)的相关性
B矩阵中即为每个词类(行)对应的主题(列)相关性。
3.效果:
只要对新闻关联性矩阵进行一次奇异值分解,既可同时完成近义词分类和文章的分类。
4.计算方法:
庞大的网页量,使得计算量非常大,因此需要很多的计算机并行处理。
第16章:信息指纹及其应用
1.信息指纹:
能唯一代替某一网络信息,比如之前的网页hash表存网址太浪费内存啦,直接用伪随机数代替该表中的地址能节省很多内存空间。同时网络传输也需要加密,比如MD5不能逆向破解就是一个很好的加密方式。
2.判断两集合相同:
1)一一比较,O(N2),太慢
2)两个集合先排序,再一一比较O(logN),相对慢
3)先把一个集合放到hash表,再一一比较O(N)快,但是消耗多了N个内存
4)直接用信息指纹,把每个集合内的元素都相加再比较即可(不需要排序就可以比较)
3.判断两集合基本相同:
1)比如用两个账号发送垃圾邮件,邮件大体相同,个别不同,所以我们可以抽取比如发送尾号为24的邮件,然后再用信息指纹的第四种方法就好啦(基本能鉴别出来)。
2)网页或者文章对比,可以先用IDF方法鉴别词频率(去除掉只出现一次或者少次的噪音词),然后再抽取关键字进行信息指纹识别就好啦,如果是文章的话把文章切成一小段一小段的,然后一样IDF方法选取特征词进行信息指纹鉴别即可。
4.Youtube反盗版:
他其实就是拿去视频的关键帧进行信息指纹对比,从而判断出哪些是盗版的,同时把广告收益给商家,而盗版的没收益,所以盗版的就少啦。
第17章:由电视剧《暗算》所想到的—密码学
1.公开密钥加密步骤:
1)随便选一个密码转为3位的ASCII码数字
2)加密:
1.找2个很大的数P、Q然后计算N=P×Q M=(P-1)×(Q-1)
2..找一个和M互素的整数E,即M和E除了1没有公约数
3.找一个整数D,使得(E×D)%M==1
加密成功后D就是私钥(解密),E是公钥(加密),N是公开的
2.总结:
信息论虽然能让我们知道信息越多,就能消除更多的不确定性从而解密,但是密码学就是让我们无论知道多少信息,都无法消除不确定因素从而解密
第18章:闪光的不一定是金子 — 谈谈搜索引擎
1.网页作弊:
就是根据搜索引擎的算法,得到更高的网站排名
2.两种作弊方式:
作弊1:比如可以提高网站相关词频数,然后隐蔽,这样就能得到较高的TF-IDF值啦,
解决1:对异常高的网页做一下分析就可以,比较简单
作弊2:出卖网站的出链接,由于我们前面章节知道网站被越多其他网站引用就会得到越高的排名
解决2:出链的网站到其他网站数目可以作为一个向量,也是这个网站固有的特征,既然是向量,就可以用余弦定理计算相似度,有些网站出链量相似度几乎为1,此时就是可以知道这些是卖链接的网站啦。
3.总结:
提高网站质量才是关键。
第19章:谈谈数学模型的重要性
- 一个正确的数学模型应当在形式上是简单的。(托勒密的模型显然太复杂。)
- 一个正确的模型在它开始的时候可能还不如一个精雕细琢过的错误的模型来的准确, 但是如果我们认定大方向是对的,就应该坚持下去。(日心说开始并没有地心说准确。)
- 大量准确的数据对研发很重要。
- 正确的模型也可能受噪音干扰,而显得不准确;这时我们不应该用一种凑合的修正方法来弥补它,而是要找到噪音的根源,这也许能通往重大发现
第20章:不要把鸡蛋放到一个篮子里—最大熵
1.最大熵原理:
说白了,就是要保留全部的不确定性,将风险降到最小。
“不要把鸡蛋放在一个篮子里,是最大熵原理的一种朴素说法。”
2.最大熵原理指出:
当我们需要对一个随机事件的概率分布进行预测时,我们的预测应当满足全部已知的条件,而对未知的情况不要做任何主观假设。(不做主观假设这 点很重要。)
- *最大熵模型存在的【证明】*****:****匈牙利著名数学家、信息论最高奖香农奖得主希萨(Csiszar)证明,对任何一组【不自相矛盾】的信息,这个最大熵模型不仅存在,而且是唯一的。而且它们都有同一个非常简单的形式 – 指数函数。
- 书提到的最大熵原理【应用】:
- 拼音和汉字的转换:1.根据语言模型:wang-xiao-bo 可以转换为:王小波 和 王晓波两种情况。2.根据主题,王小波是作家《黄金时代》的作者,而王晓波是研究两岸关系的学者。根据这两种信息创建一个最大熵模型
- ![img](https://img-blog.csdnimg.cn/20200618191653569.jpeg) ![img](https://img-blog.csdnimg.cn/20200618191653571.jpeg)
- ![img](https://img-blog.csdnimg.cn/20200618191653571.jpeg) ![img](https://img-blog.csdnimg.cn/20200618191653572.jpeg)
- ![img](https://img-blog.csdnimg.cn/20200618191653575.jpeg)
最大熵模型应用于信息处理优势的第一次验证:
应用最大熵原理,创建了当时世界上最好的词性标识系统和句法分析器。其做法即为使用最大熵模型成功的将上下文信息、词性、名词、动词、形容词等句子成分、主谓宾统一了起来。
-
- 2000年以后,句法分析、语言模型和机器翻译,都开始使用最大熵模型。
- 对冲基金使用最大熵。 孪生兄弟的达拉皮垂他们在九十年代初贾里尼克离开 IBM 后,也退出了学术界,而到在金融界大显身手。他们两人和很多 IBM 语音识别的同事一同到了一家当时还不大,但现在是世界上最成功对冲基金(hedge fund)公司—-文艺复兴技术公司 (Renaissance Technologies)。我们知道,决定股票涨落的因素可能有几十甚至上百种,而最大熵方法恰恰能找到一个同时满足成千上万种不同条件的模型。达拉皮 垂兄弟等科学家在那里,用于最大熵模型和其他一些先进的数学工具对股票预测,获得了巨大的成功。
来源: http://www.cnblogs.com/KevinYang/archive/2009/02/01/1381798.html
- 最大熵模型的【训练】:
- 计算量庞大的【*GIS**】*:GIS 最早是由 Darroch 和 Ratcliff 在七十年代提出的。 GIS 算法每次迭代的时间都很长,需要迭代很多次才能收敛,而且不太稳定,即使在 64 位计算机上都会出现溢出。因此,在实际应用中很少有人真正使用 GIS。大家只是通过它来了解最大熵模型的算法。
3.改进的迭代算法【IIS】:
八十年代,孪生兄弟的达拉皮垂(Della Pietra)在 IBM 对 GIS 算法进行了两方面的改进,提出了改进迭代算法 IIS(improved iterative scaling)这使得最大熵模型的训练时间缩短了一到两个数量级。这样最大熵模型才有可能变得实用。即使如此,在当时也只有 IBM 有条件是用最大熵模型。
4.吴军的改改进和他的论文:(链接在此) 发现一种数学变换,可以将大部分最大熵模型的训练时间在 IIS 的基础上减少两个数量级
第21章:拼音输入法的数学原理
1.汉字输入法的的快慢:
由击键次数乘以寻找这个键所需要的时间
2.编码速度的快慢:
由拼音编码和消除歧义性编码(数字键盘)快慢决定
3.双拼到全拼的转变:
前面双拼他虽然减少了击键次数,但是别人消除歧义以及击键的思考的时间都变长了,不利于学习以及速度总体慢,后来出现了全拼(也就是我们现在所用的拼音输入),虽然击键次数变多了,但是学习成本和思考成本降低,同时容错率也提高了,所以速度很快
4.主要引入的数学原理是:
- *中文输入法的击键次数的数学原理* 【香农第一定理】指出:对于一个信息,任何【编码长度】都不小于它的【信息熵】。因此,上面的平均编码长度的最小值就是汉字的信息熵,任何输入法不能突破信息熵给定的极限。 【汉字信息熵的计算】在GB2312中一共有6700左右个常用汉字。 a. 假定每个汉字出现的相对频率为: b. 编码长度 c. 平均编码长度: d. 得出汉字的信息熵: 不考虑上下文的关系,信息熵的大小大约为【10bit】 e. 单个字母代表的信息熵:假定输入法只能要我26个字母来输入,那么每个字母可以代表log26 = 4.7 比特的信息,也就是说,一个汉字的输入,平均需要10/4.7 约为2.1 次击键。 f.组成词后信息熵减少: 如果把汉字组成词组,再以词为单位统计信息熵,那么每个汉字的平均信息熵就会减少。如果不考虑上下文关系,汉字的信息熵大约是8bit,以词为单位每个汉字平均只需要8/4.7 = 1.7次击键 g. 考虑上下文信息信息熵进一步减少:如果考虑上下文关系对汉语建立一个基于词的统计语言模型,可以将汉字的信息熵降低到6bit左右。此时平均需要的击键次数约为:6/4.7 1.3次击键 。如果一种输入法能够做到这一点那么汉字的输入就比英文快多了。(我觉得手机的9宫格汉字输入法挺给力的。) 【全拼输入法的信息熵】汉语全拼平均长度为2.98,只要基于上下文能彻底就解决一音多字的问题,平均每个汉字的输入应该在3个键以内。可以实现汉字拼音输入一部分后提示出相应的汉字。 如何利用上下文呢?
*思考总结:现在的输入法需要提升就是看谁能建立更好的语言模型以及转成汉字的算法。*
- *拼音转汉字的动态规划算法:* 【输入法做的事情】是:按照输入的序列,查找该条件下的句子。 图中 y 代表输入的拼音字符串,w代表输出候选汉字。每一个句子和途中的一条路径对应。 拼音输入法的问题,变成了一个寻找最优路径的问题。 【最优路径】 和计算城市间的最优路径不同,其中的距离是实际上的一个点到另一个点的距离,而在拼音输入法的路径中,两个候选词之间的距离是w伸向下一级w的概率。 实际上输入法作出的计算是这样,输入一串拼音字母字符,软件通过模型计算出与词拼音对应的出现概率最大的汉字候选结果。
3.训练一个用户特定模型:
大多数情况下M1,模型会比M0模型要好,但是如果输入偏僻字的时候反而M0模型比较好,
根据最大熵定理,我们都要把各种情况综合在一起才是最好的,同时这个模型训练时间也
比较长,所以下面引出了线性插入模型:
第22章:自然语言处理的教父马库斯
1.马库斯:
1)他第一个考虑到了语料库的重要性,也第一个做出了很多LDC语料库
2)他不限制学生方向,而是根据独特的眼光给予支持
2.柯林斯:
数学之美一书都是讲简单为主,但是柯林斯却是个特例,他不是为了一个理论而研究,而是为了做到极致,比如他做的文法分析器。
3.布莱尔:
跟作者一样,都是以简单为美,虽然不能立刻知道某事该怎么做,但是能立刻否定掉一种不可能的方案,从而寻求简单的方法。代表算法:基于变换规则的机器学习算法:
第23章:布隆过滤器
1.提出前提:
之前我们讲过垃圾邮件的识别,从一一对应到hash,这两种都不是很好,所以后来作者推荐用了信息指纹这个东西,也就是一个伪随机数,其中这个随机数是否出现过就需要用到布隆过滤器啦
2.步骤:
先建立一个16E位的二进制数组,全部置为0,对每一个邮件用随机数生成器(F1,F2,F3```F8)生成8位不同的信息指纹(f1,f2,·······…f8),然后把这8位随机数全部置为1后映射到刚才的16E位数去,当第二次又有同一个邮件时以同样的方式映射会发现映射的位置都置为1了,此时就可以判断该邮件出现过啦
但是该模型有一定的缺陷,虽然很小的概率会识别错误,但是还是有可能识别错误的,此时可以建立一个白名单来解决
第24章:马尔可夫链的扩展 — 贝叶斯网络
1.贝叶斯网络:
假定马尔可夫链成立,也就是说每个状态和和他直接相连的状态有关,和间接状态没有关系,那么他就是贝叶斯网络,同时图中的弧可以有权重,其中A到C可能不是直接相关,但是不代表他没没有关系,他们可能可以由一个间接状态来关联,比如B
具体内容他就是利用贝叶斯公式计算出每一个状态到另外一个状态转移的概率,具体可以看书本有个例子,不过需要一点概率基础,贝叶斯网络其实就是马尔可夫链的一个拓展,看似简单,但是实现起来非常复杂。
第25章:条件随机场和句法分析
1.条件随机场:
他其实是一个隐含马尔可夫的拓展,我们假定x1、x2、x3为观测值,y1、y2、y3表示隐含的序列,其中x2的状态由y2的状态决定,和y1、y3无关,但是实际中他们很有可能是有关的,如果把y1、y2、y3都考虑进来,那么他就是一个条件随机场啦,其中条件随机场还是遵循隐含马尔可夫链的原则的,比如y1、y2、y3还是一个马尔可夫链,x1和y1之间的关系是一个概率关系,跟前面一样。其中他与贝叶斯网络的区别是条件随机场是一个无向图,而贝叶斯是个有向图
2.条件随机场的语句浅层分析:
这里看的不是太懂,后续看懂了再更新
第26章:维特比和他的维特比算法
1.维特比算法的提出:
我们知道最短路径是由动态规划解决的,而篱笆网络有向图的最短路径则是由维特比算法来解决的,所以隐含马尔可夫算法里面的解码都可以用它来解决。
2.维特比算法详解:
这个算法的好处就在于把运算的复杂度从10^16降到了O(N*D²)(D宽度(列),N网长度(行))10^3,降低了非常多。
第27章:再谈文本自动分类问题 — 期望最大化
1.文本自动收敛分类:
假如有N个文本对应N个向量V1、V2……Vn,希望把他分到K个类中,这K个类的中心是C1、C2………Ck,分类步骤如下:
这样重复下去就可以自动分类啦。
2.期望最大化和收敛必然性:
如果距离函数设计的好,那么d(各个文本向量到类中心平均距离)更小,而D(各个类中心的距离)更大,即从而多次迭代后得到最优分类。
在机器学习中,这D和d可以分为2个过程:
其中根据现有模型计算结果为期望(E),通过模型多次计算(多次训练)最大化期望(M),所以叫做EM算法。
第28章:逻辑回归和搜索广告
1.网站广告问题:
百度和雅虎就不说了,谁出钱多就谁的广告在前面,这里说google的广告竞争问题,一开始作者提出可以由用户搜索数,和广告点击数的比率来看该广告是否合理:
但实际上并不那么简单,1,新广告没数据,不合理2,很有可能数据不足,比如只有各广告只被查询过一次,不能说点击过3就比2次的广告好。3,放在第一位的广告明显比第二位的好,排名自然高。
2.逻辑回归模型:
其中里面的
Xi为影响变量,比如广告展现位置,展现时间等等
Βi为为一个特殊的参数由人工神经网络训练未来的参数
第29章:各个击破算法和google 云计算的基础
1.分治法:
把一个大问题分解成若干个小问题,解决各个小问题,合并各小问题的解
2.从分治法到MapReduce:
文章先引入了归并排序的思想,其实就是分治法的思想,把一个待排序的数组进行分割后排序,然后排序后再合并就完成了,然后开始讲解一个大矩阵的相乘,比如:
,如果A和B非常大时,一个计算机是计算不下来的,所以引出了云计算(分治法,MapReduce)的思想,先把A按行分割成N/10份,把B按列分成N/10份,然后两两相乘
最后两两相乘就能得到各自的解,然后合并解即可,这就是把一个把问题分解到多个服务器上计算,从而节省了很多时间的方法。