8.简单之美——布尔代数和搜索引擎

建立一个搜索引擎大致需要做的几件事情:

  1. 自动下载尽可能多的网页;
  2. 建立快速有效的索引;
  3. 根据相关性对网页进行公平准确的排序。

这就是搜索的“道”。

关键词=布尔运算(词1,词2,词3);接着判断词i是否在文献中,以得到一串二进制数;再根据几个词的布尔关系做布尔运算;最终便得到满足要求的文献。

由于索引之大,一开始是依靠分布式的方式存储到不同的服务器上 ,然后每接受一个查询,这个查询就被分发到许许多多的服务器中,这些服务器同时并行处理用户请求;后来再大,就变成根据网页的重要性、质量和访问频率建立常用和不常用等不同等级别的索引。

但是无论索引多么复杂,原理上依然非常简单,即等价于布尔运算。

9.图论和网络爬虫

第八章讲到了如何建立搜索引擎的索引,那么如何自动下载互联网所有的网页呢?这需要用到图论中的遍历算法

图论就是节点+连接节点的弧,而遍历算法有两种:

  1. 广度优先搜索(Breadth-First Search,BFS)
  2. 深度优先搜索(Depth-First Search,DFS)

互联网其实就是一张大图而已——可以把每一个网页当作一个节点,把那些超链接当做连接网页的弧。用图的遍历算法,自动地访问每一个网页并把它们存起来。完成这个功能的程序叫做“网络爬虫”。

10.PageRank——Google的民主表决式网页排名技术

搜索引擎返回了成千上万条结果,那么应该如何排序呢?无异于两组信息:关于网页的质量信息,以及这个查询与每个网页的相关性信息

10.1 PageRank算法的原理

核心在于:在互联网上,如果一个网页被很多其他网页所链接,说明它受到普遍的承认和信赖,那么它的排名就高(就像是学术论文的引用量和重要因子,越高那它的排名也就越高)。

理论问题解决了,又遇到实际问题。因为这个量实在是太大了,于是佩奇和布林利用了稀疏矩阵计算的技巧,大大简化了计算量。而后Google又发明了并行计算工具MapReduce,使得PageRank的并行计算完全自动化了。

网页排名算法的高明之处在于它把整个互联网当作一个整体来对待。这无意中符合了系统论的观点。

10.2 PageRank的计算方法

假定向向量

    (10.1)

为第一、第二、第三、...第N个网页的网页排名。矩阵A为网页之间链接的数目,其中a(mn)代表第m个网页指向第n个网页的链接数。

初试假设:所有网页排名都是1/N,即各个网页的概率是一样的,不确定性最大,熵最大:

接着就是进行迭代运算:

    (10.2)

直至Bi和B(i-1)之间的差异非常小,接近于零时,停止迭代,算法结束。一般来讲10次就收敛了。

由于网页之间链接的数量相比互联网的规模非常稀疏,因此计算网页的网页排名也需要对零概率或者小概率事件进行平滑处理。则公式(10.2)就变成:

    (10.3)

其中N是互联网网页的数量,α是一个(较小的)常数,I是单位矩阵

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

影响搜索引擎质量的诸多因素,除了用户的点击数据之外,可以被归纳成下面四大类:

  1. 完备的索引;
  2. 对网页质量的度量;
  3. 用户偏好;
  4. 确定一个网页和某个查询的相关性的方法。

11.1 搜索关键词权重的科学度量TF-IDF

根据网页的长度,对关键词的出现次数进行归一化,也就是用关键词的次数除以网页的总字数。把所得的商成为“关键词频率”(Term Frequency)

由于关键词中各分词的分量应该是不一样的,所以必须设定不同的权重,且所设应满足下面两个条件:

  1. 一个词的预测主题的能力越强,权重越大,反之,权重越小;
  2. 停止词的权重为零

假定一个关键词w在Dw个网页中出现过,那么Dw越大,w的权重越小,反之亦然。如此称为“逆文本频率指数”(Inverse Document Frequency),它的公式是:

    (11.1)       其中D是全部网页数。(这个公式其实就是前面的交叉熵公式所演变而来)

所以相关性计算的公式就为:

    (11.2)

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

就是我们日常使用最多的功能:确认地点、查看地图、查找路线。而新的技术使得我们省去了自行查地图、规划路线的时间和经理。其中只有三项关键技术:

  1. 利用卫星定位(传统的导航仪都可以做到)
  2. 地址的识别(有限状态机)
  3. 根据用户输入的起点和终点,在地图上规划最短路线或者最快路线(动态规划)

12.1 地址分析和有限状态机

总的来说就是,用有限状态机来识别输入的地址是否合理。有限状态机是一个特殊的有向图,它包括一些状态(节点)和连接这些状态的有向弧。

当用户输入的地址不太标准或者有错别字时,有限状态机会束手无策,因为它只能进行严格的匹配。为了解决这个问题,我们希望可以看到进行模糊匹配,并给出一个字符串为正确地址的可能性。为了实现这一目的,科学家们提出了基于概率的有限状态机。这种基于概率的有限状态机和离散的马尔科夫链基本上等效。

12.2 全球导航和动态规划

动态规划,其实就是将一个大问题分解成几个小问题,通过求解得几个局部最优解,最后得到大问题的最优解。

疑问:我觉得...这样会不会最终是收敛于一个局部最优解,而不是全局最优解,就像决策树的算法一般。不知道是怎么保证其收敛于全局最优解的?!会不会是因为决策树的最终目的地是不一样的,而有限状态机的最终目的地是“结束”,无论哪条路径都是一样的,所以基于动态规划的有限状态机可以保证全局最优解。

13.Google AK-47的设计者——艾米特·辛格博士

  1. 做事情的哲学,先帮助用户解决80%的问题,再慢慢解决剩下的20%的问题;
  2. 所选择的方案要容易解释每一个步骤和方法背后的道理,这样不仅便于出了问题时查错(Debug),而且容易找到今后改进的目标;
  3. 在倡导靠机器学习和大数据时,也必须要求能对机器学习出来的参数和公式给予合理的物理解释。

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

18.1 搜索引擎的反作弊

任何搜索引擎给出的结果都不完美,多少都会有点噪音,最主要的就是“作弊”的噪音。

  1. 早期常见的作弊方法是重复关键词;
  2. 有了pagerank网页排名之后,作弊者就专门买卖链接,在网站里暗藏了一堆没用的链接,使得网页看上去很像很多索引。

像这些作弊的“术”层出不穷,不可能针对性的一一解决,所以要上升到“道”这个层面来解决问题,就是要透过具体的作弊例子,找到作弊的动机和本质,进而从本质上解决问题。

其实,通信模型对于搜索反作弊依然适用。在通信中解决噪音干扰问题的基本思路有两条:

  1. 从信息源出发,加强通信(编码)自身的抗干扰能力;
  2. 从传输来看,过滤掉噪音,还原信息。

对应的解决方法就是:

  1. 从本质上看,作弊就是对排序的信息加入噪音,因此要增强排序算法的抗噪声能力;
  2. 过滤掉噪音,就像是sony的降噪耳机一样,只要输入一个与外界噪音频率相同、振幅相反的信号来相抵消即可。如下图所示的“解卷积”过程。

18.2 搜索结果的权威性

搜索自己想要的东西之后,这些东西真实可靠吗?会不会是那些骗人的莆田系医生呢?所以搜索结果的权威性很重要!计算权威度的步骤如下:

  1. 对每一个网页正文重点每一句话提炼出“主题”和“提及”:就像是--“根据国际卫生组织的研究发现,吸烟对人有危害”这句话,就可以提炼出“吸烟的危害”作为主题,“国际卫生组织”作为提及;
  2. 然后在各种新闻、学术论文或其他网页中,利用互信息,找到它们之间的相关性;
  3. 利用聚类算法,对一些相近意思的词进行聚类得到一些搜索的主题;
  4. 还要把一个网站当中的网页进行聚合,因为网站当中不是所有的网页都是权威的。

通过这四步,就可以得到一个针对不同主题,哪些信息源(网站)具有权威度的关联矩阵。有了这个,便可在搜索结果中提升那些来自于权威信息源的结果,使得用户对搜索结果更加放心。

19.谈谈数学模型的重要性

牛顿曾经说过:我们见过所有真实的东西,在宇宙中也是真实的。

所以我们数学模型的推导,其实就是基于已知数据的观察所得来的,通过数据寻找规律。像以前的地心说、日心说......通过前人的经验学习,我们可以得知:

  1. 一个正确的数学模型应当在形式上是简单的(托勒密的模型显得太复杂)。
  2. 一个正确的模型一开始可能还不如一个精雕细琢过的错误模型来的准确,但是,如果我们认定大方向是对的,就应该坚持下去;(日心说一开始并没有地心说准确)。
  3. 大量准确的数据对研发很重要。
  4. 正确的模型也可能受噪音干扰,而显得不准确;这是不应该用一种凑合的修正方法加以弥补,而是要找到噪音的根源,这也许能通往重大的发现。

在网络搜索的研发中,我们在前面提到的单文本词频/逆文本频率指数(TF-IDF)和网页排名(PageRank)可以看做是网络搜索中的“椭圆模型”,它们都很简单易懂。

20.不要把鸡蛋放在一个篮子里--谈谈最大熵模型

当你要猜一个概率分布时,如果你对这个分布一无所知,那就猜熵最大的均匀分布,如果你对这个分布知道一些情况,那么,就猜满足这些情况的熵最大的分布。

我们从最大熵的思想出发得出的最大熵模型,最后的最大化求解就是在求P(y|x)的对数似然最大化。逻辑回归也是在求条件概率分布关于样本数据的对数似然最大化。二者唯一的不同就是条件概率分布的表示形式不同。

https://www.jianshu.com/p/e7c13002440d

【读书笔记】数学之美2-搜索引擎相关推荐

  1. 读书笔记——数学之美

    读完数学之美,收获很多,在这里我对我的收获进行简要的总结,这些总结中不包括对具体算法和模型的详解,详解请参考其他资料,这里只进行简要的总结. 1 文字和语言 vs 数字和信息 文字.数字.语言和数学是 ...

  2. [读书笔记]编程之美(三)

    [读书笔记]编程之美(三) 3.1字符串移位包含的问题 问题:给定两个字符串s1和s2,要求判定s2是否能够被s1做循环移位(rotate)得到的字符串包含.例如,给定s1=AABCD和s2=CDAA ...

  3. 读书笔记之呼吸 [美] 特德·姜

    呼吸 [美] 特德·姜 商人和炼金术士之门 没有什么能抹掉过去.但你可以忏悔,可以赎罪.你可以得到宽恕.只有这些,但这已经足够了. 呼吸 得以存在便是一个奇迹,能够思考就是一件乐事. 前路迢迢 你无法 ...

  4. 《文本上的算法——深入浅出自然语言处理》读书笔记:第6章 搜索引擎是什么玩意儿

    目录 第6章 搜索引擎是什么玩意儿 6.1 搜索引擎原理 6.2 搜索引擎架构 6.3 搜索引擎核心模块 6.4 搜索广告 第6章 搜索引擎是什么玩意儿 6.1 搜索引擎原理 假设Q为用户要查询的关键 ...

  5. 度量相似性数学建模_数学之美读书笔记

    2020年6月读,先通读一遍,随后为写读书笔记又重新读了一遍,收获颇丰,虽然没有很多数学或者编程方面的知识,但正如作者所说,这本书讲述的是道,而非术. 读这本书让我领略到了科学的趣味,并不是枯燥的敲代 ...

  6. 《数学之美》-吴军 读书笔记

    从吴军的<数学之美>找到了伽莫夫的<从一到无穷大>,前段时间先整理了<从一到无穷大>的笔记.现在整理下<数学之美>以巩固下. 近段时间AlfaGo 与人 ...

  7. 《数学之美》——吴军#读书笔记

    <数学之美> 吴军 第一章:文字和语言vs数字和信息 主要内容概述:"语言和数学的产生都是为了同一个目的--记录和传播信息".科技是伴随着人类的不断进化而发展进步的.信 ...

  8. 【读书笔记】《数学之美》——一个好方法在形式上总是简单的

    数学之美 作者简介 内容简介 摘抄语录 收获感悟 牛顿曾说"(人们)发觉真理在形式上从来是简单的,而不是复杂和含混的."数学的美妙之处在于它对自然界史诗的总结和归纳,也是抽象思考的 ...

  9. 数据分析?他们早就开始用了——数学之美读书笔记

    数据分析?他们早就开始用了? 标题取得很好听,其实就是<数学之美>这本书的读书笔记.这是每一个想学编程了解计算机的人都不应该错过的好书,必须推荐 光 看这个名字,你可能以为它就是一本讲数学 ...

  10. 数学之美》读书笔记和知识点总结(一)

    <数学之美>读书笔记和知识点总结(一) 早在前几个月我在台湾的时候,就听说<数学之美>是一本非常不错的书,也正好是我喜欢的类型,一直想买.回到北京之后的第一件事就是把我这半年积 ...

最新文章

  1. 【教程】【FLEX】#004 反射机制
  2. SAP QM初阶之事务代码CR05查询QM Work Center List
  3. 使用jquery触发a标签跳转
  4. MFC界面库BCGControlBar v25.0新功能详解六:属性网格和其他
  5. 如何查看oracle用户具有的权限和角色
  6. live555 源码分析: PLAY 的处理
  7. vue 调用webservice_js跨域调用WebService的简单实例
  8. c 语言表达式求值中缀变后缀,表达式求值关于中缀式转后缀式的问题!
  9. Croc Champ 2013 - Round 1 E. Copying Data(线段树)
  10. Kubernetes Jobs - 运行处理任务指南
  11. zabbix监控系统的实际应用(客户端安装-基本应用设置-报警提醒篇)
  12. Hierarchical Features Driven Residual Learning for Depth Map Super-Resolution 2019TIP 论文阅读
  13. C语言实现九九乘法表(四种情况)
  14. 霍夫变换提取圆心坐标,并拟合直线
  15. 【目标跟踪系列】SiamRpn卷积流程以及代码
  16. 囍囍囍~~~ 以后可能用的着
  17. 关于安卓开发的一些你必须要掌握的网络知识(一):网络基础与网络框架OkHttp
  18. 宝塔环境PHP网站要配置HTTPS,SSL证书如何申请
  19. 手机扫描证件识别的优势
  20. esp8266设置sta失败_ESP8266的AP模式与STA模式简单测试

热门文章

  1. python软件运行界面_python运行界面 python的图形用户界面怎么运行
  2. 浏览器主页被篡改解决方案汇总
  3. 物联网课程学习目标_恒华科技(300365)泛在电力物联网建设加速,助力实现全年高增长目标...
  4. 泛在电力物联网到底该怎么建?
  5. Android中的asserts和res/raw资源目录
  6. 商家618活动文案怎么写,注意事项
  7. 脚本获取TLS/SSL证书失效日期
  8. Java高效率复习-MySQL下篇[MySQL]
  9. pythom-day20-logging模块
  10. java汇编指令查看工具jitwatch