数学之美学习笔记

数学之美学习笔记

      • 第1章 文字和语言vs数字和信息
      • 第2章 自然语言处理--从规则到统计
      • 第3章 统计语言模型
      • 第4章 谈谈分词
      • 第5章 隐含马尔科夫模型
      • 第6章 信息的度量和作用
      • 第7章 贾里尼克和现代语言处理
      • 第8章 布尔代数和搜索引擎
        • 布尔代数:
        • 索引:
      • 第9章 图论和网络爬虫
      • 第10章 pageRank--Google的民主表决式网页排名技术
        • PageRank算法原理
      • 第11章 如何确定网页和查询的相关性
      • 第12章 有限状态机和动态规划--地图与本地搜索的核心技术
        • 智能手机导航最关键的三个问题:
        • 地址分析和有限状态机
        • 全球导航和动态规划(Dynamic Programming)
        • 有限状态传感器
      • 第13章 Google AK-47的设计者阿米特幸格
      • 第14章 余弦定理和新闻的分类
      • 第15章 矩阵运算和文本处理中的两个分类问题
      • 第16章 信息指纹及其应用
      • 第17章 谈谈密码学的数学原理
      • 第18章 闪光的不一定是金子--谈谈搜索引擎反作弊问题和搜索结果的权威性问题
        • 反作弊
        • 重复关键词
          • 专门卖链接和买链接
        • 解决作弊问题的两种思路
        • 权威性问题
        • 小结
      • 第19章 谈谈数学模型的重要性
      • 第20章 不要把鸡蛋放到一个篮子里--谈谈最大熵模型
      • 第21章 拼音输入法的数学原理
      • 第22章 自然语言处理的教父马库斯和他的优秀弟子们
      • 第23章 布隆过滤器
      • 第24章 马尔科夫链的扩展--贝叶斯网络
        • 贝叶斯网络
        • 贝叶斯网络的训练
        • 小结
      • 第25章 条件随机场、文法分析及其他
        • 文法分析--计算机算法的演变
        • 条件随机场
        • 条件随机场在其他领域的应用
      • 第26章 维特比和他的维特比算法
      • 第27章 上帝的算法--期望最大化算法
      • 第28章 逻辑回归和搜索广告
        • 搜索广告的发展
        • 逻辑回归模型
      • 第29章 各个击破算法和Google云计算的基础
      • 第30章 Google大脑和人工神经网络
        • 人工神经网络
        • 训练神经网络
        • 人工神经网络与贝叶斯函数的关系
        • Google大脑
      • 第31章 大数据的威力--谈谈数据的重要性

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

语言的出现是为了人类之间的通信。字母、笔画、文字和数字实际上是信息编码的不同单位。任何一种语言都是一种编码方式,而语言的语法规则是编解码的算法。我们把一个要表达的意思,通过某种语言的一句话表达出来,就是用这种语言的编码方式对头脑中信息做了一次编码,编码的结果就是一串文字。而如果对方懂得这门语言,他就可以用这门语言的解码方法获得说话人想要表达的信息。这就是语言的数学本质。

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

自然语言处理60多年的发展过程,基本上可以分成两个阶段。

20世纪50年代到70年代,全世界科学家对计算机处理自然语言的认识都局限在人类学习语言的方式上,也就是说,用电脑模拟人脑。

知道20世纪70年代,一些自然语言处理的先驱开始重新认识这个问题,找到了基于数学模型和统计的方法,自然语言处理进入第二个阶段。

第3章 统计语言模型

统计语言模型产生的初衷是为了解决语音识别问题。
马尔可夫链估算每个词出现的概率,对应的统计语言模型是二元模型
了解N-Gram模型

第4章 谈谈分词

对于西方拼音语言来讲,词之间有明确的分界符,统计和使用语言模型非常直接,而对于亚洲语言,词之间却没有明确的分界符。

如何将一句话拆分成简单的词语,最容易想到的方法就是查字典,他能解决一些简单句子,但是稍微复杂一点的句子,特别是有二义性的句子,就无能为力了。

郭进博士用统计语言模型成功解决了二义性问题。

第5章 隐含马尔科夫模型

隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数。然后利用这些参数来作进一步的分析,例如模式识别。

是在被建模的系统被认为是一个马尔可夫过程与未观测到的(隐藏的)的状态的统计马尔可夫模型。

第6章 信息的度量和作用

香农的信息熵本质上是对我们司空见惯的“不确定现象”的数学化度量。譬如说,如果天气预报说“今天中午下雨的可能性是百分之九十”,我们就会不约而同想到出门带伞;如果预报说“有百分之五十的可能性下雨”,我们就会犹豫是否带伞,因为雨伞无用时确是累赘之物。显然,第一则天气预报中,下雨这件事的不确定性程度较小,而第二则关于下雨的不确定度就大多了。

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

第8章 布尔代数和搜索引擎

布尔代数:

一个搜索引擎要做以下几件事:自动下载尽可能多的网页、建立有效的索引、根据相关性对网页进行公平正确的排序(下载、索引、排序)。其中索引是为基础。

布尔代数就是在数字电路上常用的逻辑运算。在刚开始布尔提出布尔代数时,没有什么像样的应用。直到香农在其硕士论文中提出使用布尔代数实现数字电路的开关,才使得布尔代数成为数字电路的基础。布尔代数很简单,主要包含“与、或、非”操作。

索引:

搜索引擎要在极快的时间内搜索成千上万甚至几亿的搜索结果,这就需要特殊的技巧:建索引。以图书馆为例,进图书馆找书,并不是去存书柜上一本一本的找,而是根据电脑搜索结果,先去几楼几号房间、然后第几排书柜、再按照代号查找。现代信息检索基于数据库,数据库的查询语句支持复杂的逻辑组合,其背后原理还是基于布尔运算。

第9章 图论和网络爬虫

如果将互联网比成一个大的图的话,那网络爬虫就是从某个网页出发,用图的遍历算法,自动的访问每一个网页,并保存它们。
如何构建一个网络爬虫?
使用BFS还是DFS?

第10章 pageRank–Google的民主表决式网页排名技术

算法的原理很简单,在互联网上,如果一个网页被很多其他网页所链接,说明它收到普遍的承认和信赖,那么它的排名就高。比如我们要找李开复博士,有100个人举手说自己是李开复,那么谁是真的呢?如果大家都说创新工厂的那个是真的,那么他就是真的。这就是所谓的民主表决。但是,那么多网页,我们不可能一样对待。有些可靠的链接,相应的权重就要大一点。但是麻烦来了,一开始的时候,我们怎么给网页设置初始权重呢?这有点类似“先有鸡还是先有蛋”的问题。破解这个问题的是谷歌的创始人之一:布林。他把问题变成一个二维矩阵相乘的问题,用迭代的方法解决这个问题。他们先假设所有网页的排名相同,然后算出哥哥网页第一次迭代排名,然后根据这个第一次的排名算第二次的…他们从理论上证明了无论初始值如何,这个算法保证网页的排名的估计值能收敛到排名的真实值。且算法不需要人工干预。由于互联网上的网页量很大,在计算矩阵乘法时,谷歌利用稀疏矩阵减少了计算量。并利用MapReduce实现并行计算自动化。

PageRank算法原理

PageRank算法以前就是Google的网页排序算法。PageRank算法,对每个目标网页进行附上权值,权值大的就靠前显示,权值小的就靠后显示。PageRank算法就是给每个网页附加权值的。PageRank算法借鉴学术界论文重要性的评估方法:谁被引用的次数多,谁就越重要。

注:PageRank算法不单单是按照“被索引数”来给网页付权值的,用PR值表示每个网页被PageRank算法附加的权值。

PageRank算法 – 从原理到实现

第11章 如何确定网页和查询的相关性

搜索核心原理之网页和查询的相关性——TF-IDF

1.相关性的演进:

 i.单文本词频TF(Term Frequency)
      用关键词的出现的次数除以文章的总次数,做归一化处理得到TF,来屏蔽文章长度对用关键词出现次数来衡量相关性时的影响
 ii.搜索关键词权重的度量IDF:
      需要给每个此赋以权重,来区分查询中词的重要性:
           a.一个词预测主题的能力越强,其权重越大
           b.停止词(的 是 和这类无用词)的权重为0

      逆文本频率指数IDF(Inverse Document Frequency):公式为log(D/Dw),其中一个关键词在Dw个网页中出现过,Dw越大,词w的权重越小

 iii.相关性的度量(TF-IDF:Term Frequency/Inverse Document Frequency):
      词频的加权求和:∑TF(w)*IDF(w)

2.TF-IDF的信息量依据
i.查询中每个关键词w的权重应该反映这个词对这个查询提供了多少信息,用此的信息量来作为权重:
I(w)=-P(w)logP(w)=-(TF(w)/N)*log(TF(w)/N)
而语料库此的总数N是一定的,所以I(w)=-TF(w)*log(TF(w)/N)
漏洞:一个词在一篇文献中出现TF次和一个词在所有文献中出现TF次,信息量是一样的

 ii.提出假设:
      a.每篇文章的大小基本相同,均为M个词,M=N/D
      b.假设在一篇文章中关键词出现的次数,与其贡献无关,那么一个词在一篇文献中出现的平均次数C(w)=TF(w)/D(w),C(w)

第12章 有限状态机和动态规划–地图与本地搜索的核心技术

智能手机导航最关键的三个问题:

  • 利用卫星定位
  • .地址识别
  • 根据用户输入的起点和终点,在地图上规划最短路径或者最快路径

地址分析和有限状态机

地址的识别上下文有关文法相对简单,最有效的是有限状态机:一个有限状态机是一个特殊的有向图,包括一些节点(状态)和连接这些节点的有向弧

数学之美学习笔记_第1张图片

如果一个地址能从状态机的起始地址,经过若干中间状态,走到最终状态,那么这条地址就是有效的

    两个问题:一个建立有效的状态机,二是给定一个状态机后,地址字串的匹配算法
 而在自然语言的处理中,字串的需要进行模糊匹配,这种基于概率的有限状态机和离散的马尔科夫链基本上等效

全球导航和动态规划(Dynamic Programming)

  • 模型化:
    将地图映射为加权图:两节点间距离用弧长来代替,即是权重;导航的问题即模型化为求加权图的最短路径。
  • 解决方法:
    a.原理:从起点到最短路径上任一节点的距离,都是从起点到此节点的最短路径,将“寻找全程最短路线的问题,分解为寻找局部最短路线的小问题;
    b.方法:将加权图进行切分,切分好后即可寻找起点到每个切分的最短路径

有限状态传感器

第13章 Google AK-47的设计者阿米特幸格

第14章 余弦定理和新闻的分类

余弦定理和新闻的分类似乎是两件八杆子打不着的事,但是它们确有紧密的联系。具体说,新闻的分类很大程度上依靠余弦定理。

Google 的新闻是自动分类和整理的。所谓新闻的分类无非是要把相似的新闻放到一类中。计算机其实读不懂新闻,它只能快速计算。这就要求我们设计一个算法来算出任意两篇新闻的相似性。为了做到这一点,我们需要想办法用一组数字来描述一篇新闻。

我们来看看怎样找一组数字,或者说一个向量来描述一篇新闻。回忆一下我们在"如何度量网页相关性" 一文中介绍的TF/IDF 的概念。对于一篇新闻中的所有实词,我们可以计算出它们的单文本词汇频率/逆文本频率值(TF/IDF)。不难想象,和新闻主题有关的那些实词频率 高,TF/IDF 值很大。我们按照这些实词在词汇表的位置对它们的 TF/IDF 值排序。比如,词汇表有六万四千个词,分别为

单词编号 汉字词

1 阿
2 啊
3 阿斗
4 阿姨

789 服装

64000 做作

在一篇新闻中,这 64,000 个词的 TF/IDF 值分别为


单词编号 TF/IDF 值

1 0
2 0.0034
3 0
4 0.00052
5 0

789 0.034

64000 0.075

如果单词表中的某个次在新闻中没有出现,对应的值为零,那么这 64,000 个数,组成一个64,000维的向量。我们就用这个向量来代表这篇新闻,并成为新闻的特征向量。如果两篇新闻的特征向量相近,则对应的新闻内容相似,它们应当归在一类,反之亦然。

学过向量代数的人都知道,向量实际上是多维空间中有方向的线段。如果两个向量的方向一致,即夹角接近零,那么这两个向量就相近。而要确定两个向量方向是否一致,这就要用到余弦定理计算向量的夹角了。

余弦定理对我们每个人都不陌生,它描述了三角形中任何一个夹角和三个边的关系,换句话说,给定三角形的三条边,我们可以用余弦定理求出三角形各个角的角度。假定三角形的三条边为 a, b 和 c,对应的三个角为 A, B 和 C,那么角 A 的余弦 –

第15章 矩阵运算和文本处理中的两个分类问题

第16章 信息指纹及其应用

任何一段信息文字,都可以对应一个不太长的随机数,作为区别它和其它信息的指纹(Fingerprint)。只要算法设计的好,任何两段信息的指纹都很难重复,就如同人类的指纹一样。信息指纹在加密、信息压缩和处理中有着广泛的应用。

我们在图论和网络爬虫一文中提到,为了防止重复下载同一个网页,我们需要在哈希表中纪录已经访问过的网址(URL)。但是在哈希表中以字符串的形式直接存储网址,既费内存空间,又浪费查找时间。现在的网址一般都较长,比如,如果在 Google 或者百度在查找数学之美,对应的网址长度在一百个字符以上。

下面是百度的链接
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=lenkee&fenlei=256&rsv_pq=9cb3d711001c0abe&rsv_t=1962RPQIGhpD%2FNm4Qgb7TylbB47u8kNkk8XX3MM2jKrg4NGmZqeIz5np4o4&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=6&rsv_sug1=6&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&inputT=753&rsv_sug4=753&rsv_sug=1

假定网址的平均长度为一百个字符,那么存贮 200 亿个网址本身至少需要 2 TB,即两千 GB 的容量,考虑到哈希表的存储效率一般只有 50%,实际需要的内存在 4 TB以上。即使把这些网址放到了计算机的内存中,由于网址长度不固定,以字符串的形式查找的效率会很低。因此,我们如果能够找到一个函数,将这 200 亿个网址随机地映射到128 二进位即 16 个字节的整数空间,比如将上面那个很长的字符串对应成一个如下的随机数:

893249432984398432980545454543

这样每个网址只需要占用 16 个字节而不是原来的一百个。

这就能把存储网址的内存需求量降低到原来的 1/6。这个16 个字节的随机数,就称做该网址的信息指纹(Fingerprint)。可以证明,只要产生随机数的算法足够好,可以保证几乎不可能有两个字符串的指纹相同,就如同不可能有两个人的指纹相同一样。由于指纹是固定的 128 位整数,因此查找的计算量比字符串比较小得多。网络爬虫在下载网页时,它将访问过的网页的网址都变成一个个信息指纹,存到哈希表中,每当遇到一个新网址时,计算机就计算出它的指纹,然后比较该指纹是否已经在哈希表中,来决定是否下载这个网页。这种整数的查找比原来字符串查找,可以快几倍到几十倍。

产生信息指纹的关键算法是伪随机数产生器算法(prng)。最早的 prng 算法是由计算机之父冯诺伊曼提出来的。他的办法非常简单,就是将一个数的平方掐头去尾,取中间的几位数。比如一个四位的二进制数 1001(相当于十进制的9),其平方为 01010001 (十进制的 81)掐头去尾剩下中间的四位 0100。当然这种方法产生的数字并不很随机,也就是说两个不同信息很有可能有同一指纹。现在常用的 MersenneTwister 算法要好得多。

第17章 谈谈密码学的数学原理

好的密码必须做到根据已知的明文和密文的对应推断不出新的密文内容。从数学的角度上讲,加密的过程可以看作是一个函数的运算F,解密的过程是反函数的运算。明码是自变量,密码是函数值。好的(加密)函数不应该通过几个自变量和函数值就能推出函数。这一点在第二次世界大战前做得很不好。历史上有很多在这方面设计得不周到的密码的例子。比如在第二次世界大战中,日本军方的密码设计就很成问题。美军破获了日本很多密码。在中途岛海战前,美军截获的日军密电经常出现AF这样一个地名,应该是太平洋的某个岛屿,但是美军无从知道是哪个。于是,美军就逐个发布与自己控制的岛屿有关的假新闻。当发出“中途岛供水系统坏了”这条假新闻后,美军从截获的日军情报中又看到含有AF的电文(日军情报内容是AF供水出了问题),于是断定中途岛就是AF。事实证明判断正确,美军在那里成功地伏击了日本联合舰队。

在第二次世界大战中,很多顶尖的科学家包括提出信息论的香农都在为美军情报部门工作,而信息论实际上就是情报学的直接产物。香农提出的信息论为密码学的发展带来了新气象。根据信息论,密码的最高境界是敌方在截获密码后,对我方的所知没有任何增加,用信息论的专业术语讲,就是信息量没有增加。一般来讲,当密码之间分布均匀并且统计独立时,提供的信息最少。均匀分布使得敌方无从统计,而统计独立可保证敌人即使知道了加密算法,并且看到一段密码和明码后,也无法破译另一段密码。

虽然公开密钥下面有许多不同的具体加密方法,比如早期的RSA算法(1977年,由三个发明者李维斯特 Rivest、沙米尔 Shamir和阿德尔曼 Adleman名字的首字母命名)、 Rabin算法(1979年,以发明者 Rabin的名字命名)和后来的 El Gamal算法(1984年,以发明者 El Gamal的名字命名、椭圆曲线算法( Elliptic curve,1985年由尼尔·库伯利兹 Neal Koblitz和维克托·米勒 Victor Miller提出),它们的基本原理非常一致,且并不复杂。这些算法都有如下共同点:
1.它们都有两个完全不同的样式,一个用于加密,一个用于解密。
2.这两个看上去无关的钥匙,在数学上是关联的。

我们不妨用相对简单的RSA算法来说明公开密钥的原理:

1.找两个很大的素数(质数)P和Q,越大越好,比如100位长的然后计算它们的乘积
N=P×Q M=(P-1)×(Q-1)

2.找一个和M互素的整数E,也就是说M和E除了1以外没有公约数

3.找一个整数D,使得E×D除以M余1,即E× D mod M=1。

现在,一个先进的且最常用的密码系统就设计好了,其中E是公钥,谁都可以用来加密,公开密钥一词就来源于此,D是私钥用于解密,一定要自己保存好。联系公钥和密钥的乘积N是公开的,即使敌人知道了也没关系。

现在,用下面的公式对X加密,得到密码Y
X^E mod N=Y

好了,现在没有密钥D,神仙也无法从Y中恢复X。如果知道D,根据费尔马小定理,则只要按下面的公式就可以轻而易举地从Y中得到X:

Y^D mod N=X

费尔马小定理有两种等价的描述

描述一:P是一个质数,对于任何整数N,如果N、P互素,那么N^(P-1) ≡ 1(mod P)

描述二:P是一个质数,对于任何整数N ≡ N(mod P)

公开密钥的好处有:

1.简单,就是一些乘除而已。
2.可靠。公开密钥方法保证产生的密文是统计独立而分布均匀的。也就是说,不论给出多少份明文和对应的密文,也无法根据已知的明文和密文的对应来破译下一份密文。更重要的是N、E可以公开给任何人加密用,但是只有掌握密钥D的人才可以解密,即使加密者自己也是无法解密的。这样,即使加密者被抓住叛变了,整套密码系统仍然是安全的。(而恺撒大帝的加密方法,只要有一个知道密码本的人泄密,整个密码系统就公开了。
3.灵活,可以产生很多的公开密钥E和私钥D的组合给不同的加密者。

第18章 闪光的不一定是金子–谈谈搜索引擎反作弊问题和搜索结果的权威性问题

反作弊

自从有了搜索引擎,就有了针对搜索引擎网页排名的作弊(SPAM)。以至于用户发现在搜索引擎中排名靠前的网页不一定就是高质量的,用句俗话说,闪光的不一定是金子。

重复关键词

早期最常见的作弊方法是重复关键词。比如一个卖数码相机的网站,重复地罗列各种数码相机的品牌,如尼康、佳能和柯达等等。为了不让读者看到众多讨厌的关键词,聪明一点的作弊者常用很小的字体和与背景相同的颜色来掩盖这些关键词。其实,这种做法很容易被搜索引擎发现并纠正。

专门卖链接和买链接

在有了网页排名(page rank)以后,作弊者发现一个网页被引用的连接越多,排名就可能越靠前,于是就有了专门卖链接和买链接的生意。比如,有人自己创建成百上千个网站,这些网站上没有实质的内容,只有到他们的客户网站的连接。这种做法比重复关键词要高明得多,但是还是不太难被发现。因为那些所谓帮别人提高排名的网站,为了维持生意需要大量地卖链接,所以很容易露马脚。(这就如同造假钞票,当某一种假钞票的流通量相当大以后,就容易找到根源了。)再以后,又有了形形色色的作弊方式,我们就不在这里一一赘述了。

解决作弊问题的两种思路

一种是见一个打一个;一种是找到作弊者的规律,然后从个别现象上升到普遍规律,然后通过程序自动的纠正由于作弊的噪声带来的网页排名的紊乱。第一种最简单,典型的头疼医头脚疼医脚,容易被作弊者牵着鼻子走,所谓道高一尺魔高一丈,很难杜绝,而且需要人工的参与,工作量大,成本高。想起雅虎早期的新闻条目的收录和归类,完全采用人工,这就注定了雅虎无法走的长远。而谷歌从来都是希望从“道”的角度来解决问题,虽然起初可能让作弊者能够有机可乘,但是还是经过一段时间,逐渐把握了作弊者的规律,就能从根儿上彻底解决问题,从而做到一劳永逸,无需增加人力和物力,就能做得很好,这样不但能节省成本,而且能够提供更好的搜索服务,这才是解决问题或者治病的良方。

从如何把握这个道呢?通信模型对反作弊的建模,两个方面:一是从从信息源出发,加强通信自身的抗干扰能力;二是从传输出发,过滤掉噪声,还原信息。实际上跟自适应滤波中的自适应干扰抵消类似,我们在发动机很吵的汽车里打电话时,可能对方可能听不清;但是如果我们知道了汽车发动机的频率,我们可以加上一个和发动机噪音相反的信号,很容易地消除发动机的噪音,这样,收话人可以完全听不到汽车的噪音。事实上,现在一些高端的手机已经有了这种检测和消除噪音的功能。

搜索引擎的作弊者所作的事,就如同在手机信号中加入了噪音,使得搜索结果的排名完全乱了。但是,这种人为加入的噪音并不难消除,因为作弊者的方法不可能是随机的(否则就无法提高排名了)。

白噪声所含的信息量为0,完全没有规律,不能把握,在设计密码中,我们追求的伪随机数其实就是要模仿白噪声。这里还要点出一点,前一段时间看苹果2015年的发布会,提到了apple watch能够测量孕妇的婴儿心率,这实际上是在现代数字信号处理课程中自适应滤波的一个典型应用,主要方法是从距离胎儿较远的地方测得母亲心电信号,然后在胎儿附近的地方测得母亲+胎儿的心电,通过自适应滤波器,就能从胎儿+母亲心电中将母亲的心电信号消除,从而得到较强的胎儿心电。

另外,作弊的网站特点比较明显,对应的出链与不作弊的网站的出链相差很多,将每一个网站的出链数目作为一个向量,得到网站的固有特征,通过余弦定理计算相似度,有些网站的出链向量之间的余弦距离几乎为1,这些网站通常是一个人建立的,目的只有一个:卖链接。从而改进pagerank算法进行反作弊。

还有一种叫做网页落地页,内容质量非常高,但是里面暗藏javascript跳转到另外一个商业网站,用户进入这个网站后,落地的网页只是一闪而过,就进入到作弊的网站。通过解析javascript,可以解决这样的作弊手段。

总之,对于网络搜索引擎反作弊,不能头疼医头脚疼医脚,要从道和术两个方面,评估经济成本和效益,进行布局。

权威性问题

权威性问题是一个很难解决的问题,因为网络上某个问题的搜索答案各样的都有,很难保证内容的权威性,一个很好地尝试是“提及”,我的理解跟在学术论文中评价论文好坏的一个指标就是引用率,如果论文的引用率较高,就说明这篇论文的学术水平高。同样的,对于网络搜索内容的权威性,也可以从“提及”率的角度出发。

计算权威度的步骤卡概括如下:

对每一个网页正文中每一句话进行句法分析,找到涉及主题的短语。
利用互信息,找到主题短语与信息源的相关性。
对主题短语进行聚合(可采用奇异值分解的矩阵运算来解决)。 对一个网站中的网页进行聚合,按照子域或子目录进行聚类。

小结

主要是通过通讯模型,对网络搜索引擎的反作弊过程进行了建模,并从道的角度把握作弊者的或者作弊网站的规律,从而在一定程度上解决了作弊问题;而权威性问题通过了“提及”来解决,这一方面理解的不够深入,仅从学术论文的权威性来讲,也是从引用率上保证的。

第19章 谈谈数学模型的重要性

第20章 不要把鸡蛋放到一个篮子里–谈谈最大熵模型

我们看一个拼音转汉字的简单的例子。假如输入的拼音是"wang-xiao-bo",利用语言模型,根据有限的上下文(比如前两个词),我们能给出两个最常见的名字“王小波”和“王晓波 ”。至于要唯一确定是哪个名字就难了,即使利用较长的上下文也做不到。当然,我们知道如果通篇文章是介绍文学的,作家王小波的可能性就较大;而在讨论两岸关系时,台湾学者王晓波的可能性会较大。在上面的例子中,我们只需要综合两类不同的信息,即主题信息和上下文信息。虽然有不少凑合的办法,比如:分成成千上万种的不同的主题单独处理,或者对每种信息的作用加权平均等等,但都不能准确而圆满地解决问题,这样好比以前我们谈到的行星运动模型中的小圆套大圆打补丁的方法。在很多应用中,我们需要综合几十甚至上百种不同的信息,这种小圆套大圆的方法显然行不通。

数学上最漂亮的办法是最大熵(maximum entropy)模型,它相当于行星运动的椭圆模型。“最大熵”这个名词听起来很深奥,但是它的原理很简单,我们每天都在用。说白了,就是要保留全部的不确定性,将风险降到最小。

回到我们刚才谈到的拼音转汉字的例子,我们已知两种信息,第一,根据语言模型,wangxiao-bo可以被转换成王晓波和王小波;第二,根据主题,王小波是作家,《黄金时代》的作者等等,而王晓波是台湾研究两岸关系的学者。因此,我们就可以建立一个最大熵模型,同时满足这两种信息。现在的问题是,这样一个模型是否存在。匈牙利著名数学家、信息论最高奖香农奖得主希萨(Csiszar)证明,对任何一组不自相矛盾的信息,这个最大熵模型不仅存在,而且是唯一的。而且它们都有同一个非常简单的形式 – 指数函数。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3tL9aUDB-1612317108274)(en-resource://database/822:1)]

我们在中学学习余弦定理时,恐怕很难想象它可以用来对新闻进行分类。在这里,我们再一次看到数学工具的用途。

第21章 拼音输入法的数学原理

输入法中对汉字的编码分为两部分:对拼音的编码(参照汉语拼音标准即可)和消除歧义性的编码。对一个汉字编码的长度取决于这两方面,只有当这两个编码都缩短时,汉字的输入才能够变快。早期的输入法常常只注重第一部分而忽视第二部分。

由于种种原因,早期的拼音输入法不是很成功,这就给其他输入法的迅速崛起创造了条件。很快,各种中文输入法如雨后春笋般地冒了出来,总数上,有的报道说有上千种,有的报道说有三千多种。到20世纪90年初,各种输入法的专利已经有上千件,以至于一些专家认为中国软件行业之所以上不去,是因为大家都去做输入法了。所有这些输入法,除了少数对拼音输入法的改进,大多是利用26个字母和10个数字对汉字库(二级国标汉字)中6300个左右的常见字直接编码。大家知道,即使只用26个字母编码,三个键的组合也可以表示26≈17000个汉字,因此,所有这些编码方法都宣称自己能两三个键就输入一个汉字,常见字两个键,非常见字三个键也足够了。其实这里面没有什么学问,很容易做到。

但是,这些复杂的编码要让人记住几乎是不可能的,因此这里面的艺术就是如何将编码和汉字的偏旁、笔画或者读音结合,让人记住。其实,这些输入法的编码方法从信息论的角度来看都在同一个水平,互相也比不出什么优劣。但是为了证明自己的方法比别人的快,大家继续走偏,单纯追求击键次数少,最直接的方法就是对词组进行编码。但这样一来,使用者就更无法记住了,只有这些输入法的表演者能记住。这已经不是技术的比赛,而是市场的竞争。最后,王永民的五笔输入法暂时胜出,但并不是他的编码方法更合理,而是他比其他发明者(大多数是书呆子)更会做市场而已。现在,即使五笔输入法也已经没有多少市场了,这一批发明人可以说是全军覆没。

本书一开头就强调把语言和文字作为通信的编码手段,一个重要目的是帮助思维和记忆。如果一个输入法中断了人们的思维过程,就和人的自然行为不相符合。认知科学已经证明,人一心无二用。

最终,用户还是选择了拼音输入法,而且是每个汉字编码较长的全拼输入法。虽然看上去这种方法输入每个汉字需要多敲几个字,但是有三个优点让它的输入速度并不慢:第一,它不需要专门学习;第二,输入自然,不会中断思维,也就是说找每个键的时间非常短;第三,因为编码长,有信息冗余量,容错性好。

链接:https://www.jianshu.com/p/9f2b2f8d4347

第22章 自然语言处理的教父马库斯和他的优秀弟子们

第23章 布隆过滤器

布隆过滤器:一种数据结构,是由一串很长的二进制向量组成,可以将其看成一个二进制数组。既然是二进制,那么里面存放的不是0,就是1,但是初始默认值都是0。
 
参考文章
布隆过滤器(Bloom Filter)的原理和实现

第24章 马尔科夫链的扩展–贝叶斯网络

贝叶斯网络

由于网络中,每个节点的概率都可以用贝叶斯公式来计算,因此得名贝叶斯网络。马尔科夫假设保证了贝叶斯网络便于计算,即网络中的每个状态取决于前面有限个状态,但贝叶斯网络的拓扑结构比马尔可夫链灵活,不受其链状结构的约束。即马尔科夫链是贝叶斯网络的特例,而贝叶斯网络是马尔科夫链的推广。贝叶斯网络是一个加权的有向图。

贝叶斯网络有很多节点(状态),节点之间通过有向弧连接,各个节点之间的相互转化可能存在一定的概率。

贝叶斯网络的训练

首先确定贝叶斯网络的结构。优化的贝叶斯结构要保证其产生的序列可能性最大即后验概率最大。理论上需要考虑每一天路径,计算复杂度无法实现。一般采用贪心算法(Greedy Algorithm)即在每一步方向寻找有限步,缺点是会陷入局部最优,最终远离全局最优解。可以采用蒙特卡洛(Monte Carlo)的方法,找许多随机数在贝叶斯网络中检测是否陷入局部最优,但其计算量较大。还有一个新方法是计算网络中节点之间两两的互信息,保留互信息较大的节点直接的链接,然后对简化的网络进行完备的搜索,找到全局优化的结构。

然后,要通过参数训练确定这些节点之间的弧的权重(参考前面提到的EM过程)。实际上,结构的训练和参数的训练是交替进行、不断优化的,直至得到收敛或者误差较小的模型。

小结

从数学层面讲,贝叶斯网络就是一个加权的有向图,是马尔科夫链的扩展。

第25章 条件随机场、文法分析及其他

文法分析–计算机算法的演变

自然语言的句法分析(Sentence Parsing)一般是指根据文法对一个句子进行分析,建立这个句子的语法树,即文法分析(Syntactic Parsing),有时也是指对一个句子中各成分的语义进行分析,得到对这个句子语义的一种描述(比如一种嵌套的框结构,或者语义树),即语义分析(Semantic Parsing)。

布朗大学计算机系的计算语言学家尤金.查尼阿克统计出文法规则的概率,在选择文法规则时,坚持一个原则–让被分析的句子的语法树概率达到最大。

拉纳帕提从全新的角度来看待文法分析问题–把文法分析看成是一个括括号的过程。

条件随机场

条件随机场是隐含马尔可夫链的一种扩展,它保留了隐含马尔可夫链模型的一些特性。

条件随机场的节点分为状态节点的集合Y和观察变量节点的集合X。整个条件随机场的量化模型就是这两个集合的联合概率分布模型P(X,Y)。

条件随机场在其他领域的应用

条件随机场的应用当然不限于自然语言处理领域,即使在很多非常传统的行业里,它的应用也会带来惊喜。

通过数学模型对大数据进行分析,警察就能有效地预测在城市的什么地方、什么时间可能会出现什么样的犯罪,从而有针对性地进行巡视,达到制止犯罪的目的。

第26章 维特比和他的维特比算法

维特比乍法是一个特殊但应用最广的动态规划算法,可以解决任何一个图中的最短路径问题。

这个算法是针对一个特殊的图——篱笆网络的有向图的最短路径提出的。

这个算法之所以重要,是因为凡是使用隐含马尔科夫模型描述的问题都可以用它来解码,包括今天 的数字通信,语音识别,拼音转汉字,分词等。
数学之美学习笔记_第2张图片

第27章 上帝的算法–期望最大化算法

期望最大化(Expectation Maximization)算法(EM算法)在实际的应用中受到的关注不是特别的重,但是在学术中EM算法是其它很多算法的基础,如隐马尔科夫算法(HMM),LDA主题模型的变分推断等等。所以,理解EM算法对其它算法的学习还是很重要的。本文是对期望最大化算法(EM算法)做一个总结。

概率模型有时既含有观测变量,又含有隐变量。如果概率模型的变量都是观测变量,那么给定数据,可以直接用极大似然估计法或贝叶斯估计法估计参数模型。但是,当模型含有隐变量或者含有缺失值的时候,就不能简单地使用这些方法估计了。EM算法就是一个在数据集中有缺失值或者含有隐变量的时候能有效的计算最大似然估计的迭代过程。

EM算法包含两个步骤,E步和M步。E步也就是我们求期望的步骤,M步将E步所求的期望最大化,重复E步和M步直到收敛,也就是我们估计的模型参数不再发生变化或者变化幅度很小。这就是EM算法的基本概括,下面我们来详细的介绍EM算法。

第28章 逻辑回归和搜索广告

搜索广告的发展

搜索广告基本上走过了三个阶段。

    第一阶段是以早期Overture和百度的广告系统为代表,按广告主出价高低来排名的竞价排名广告。

    第二阶段雅虎和百度推出的“Panama系统”和“凤巢系统”。

    第三阶段是进一步的全局优化。

预测点击率,最好的办法就是根据以往经验值来预测。实际情况远没有那么简单。

    首先,这种办法对于新的广告显然不合适,因为它们没有被点击的历史记录。

    第二,即使对于旧的广告,绝大部分时候,一个查询对应的特定广告不过两三次的点击。

    第三,广告的点击量显然与展示位置有关,放在第一条的广告的点击率理所当然比第二条的点击率要高很多。

逻辑回归模型

逻辑回归模型是一种将影响概率的不同因素结合在一起的指数模型。和很多指数模型一样,它们的训练方法相似,都可以采用通用迭代算法GIS和改进的迭代算法IIS来实现。除了在信息处理中的应用,逻辑回归还广泛应用于生物统计。

第29章 各个击破算法和Google云计算的基础

云计算的一个关键性问题就是如何把一个非常大的问题,自动分解到许多计算能力不是很强大的计算机上。Google针对此问题提出一个工具MapReduce,其基础就是算法中常见的分治算法。

假设要对一个长度为N的数组进行排序,如果采用两两比较的方式(冒泡排序),复杂度为O(N2),不仅笨还慢,如果是一个非常大的数组,一台计算机也无法完成。用分治算法,将这个大数组分解成两个小数组,再分别对一半进行排序,待两个小数组排序完后,将他们从头到尾合并,得到原来数组的排序结果。小数组大小只有原数组一半,只需要比较1/4次数即可。同理还可以将小数组继续拆分,直到数组中只剩两个元素,从而大大缩小整个排序时间。由原来的O(N2)简化到O(NlogN)。这个算法在每个子任务完成后都需要合并,归并排序算法由此得名。

第30章 Google大脑和人工神经网络

人工神经网络

人工神经网络是一个分层的有向图,第一层接收输入的信息,也称为输入层。第二层的节点照此将数值向后面传递,直到第三层节点,如此一层层传递,直到最后一层,最后一层又称为输出层。

训练神经网络

人工神经网络分为有监督的训练和无监督的训练两种。

有了训练数据,定义一个成本函数C,然后按照梯度下降法找到让成本达到最小值的那组参数。

人工神经网络与贝叶斯函数的关系

共同点:

    1. 它们都是有向图,每一个节点的取值只取决于前一级的节点,而与更前面的节点无关,也就是说遵从马尔可夫假设。

    2. 它们的训练方法相似。

    3. 对于很多模式分类问题,这两种方法在效果上相似,也就是说很多利用人工神经网络解决的问题,也能用贝叶斯网络解决,反之亦然。

    4. 它们的训练计算量都特别大。

不同点:

    1. 神经网络是在结构上是完全标准化的,而贝叶斯网络更灵活。

    2. 虽然神经网络为非线性函数,但是各个变量只能先进行线性组合,最后对一个变量进行非线形转换。而在贝叶斯网络中,变量可以组合成任意的函数,毫无限制,在获得灵活性的同时,也增加了复杂性。

    3. 贝叶斯网络更容易考虑前后的相关性,因此可以解码一个输入的序列。

Google大脑

“Google大脑”说穿了是一种大规模并行处理的人工神经网络。其创新之处也在于利用了云计算的并行处理技术。

Google大脑为什么要采用人工神经网络而不是其他机器学习的技术呢?

    第一,从理论上讲,人工神经网络可以在多维空间“画出”各种形状的模式分类边界,因此它有很好的通用性。

    第二,人工神经网络的算法非常稳定,几乎没有怎么变过。

    第三,并非所有的机器学习算法都容易并行化,人工神经网络的训练算法相对简单,容易并行实现。

Google大脑在减少计算量方面做了两个改进。

    首先是降低每一次迭代的计算量,采用随机梯度下降法。

    第二是减少训练的迭代次数。采用L-BFGS方法,可以根据离最后目标的“远近”距离调整每次迭代的步长。

第31章 大数据的威力–谈谈数据的重要性

毫无疑问,各行各业因为大幅爆发的数据而正变得蒸蒸日上。在这10年中,几乎所有行业都或多或少的受到这一巨变的影响。科技渗透到各个领域,并且已经成为每个处理单元的必要元素。谈到IT行业,具体来说,软件和自动化是最基本的术语,并且用于处理循环的每个阶段。

  1. 掌握数据能力,开采“暗数据”
  2. 决策指导 更智能更快速更精准
  3. 以用户为中心 用户行为数据是营销关键
  4. 通过数据仓库使数据资产变现

你可能感兴趣的:(学习心得,人工智能,算法,机器学习)