首页 > 技术文章 > 《Java架构师的第一性原理》56算法之数学之美(腾讯副总裁 吴军)

yeahwell 2015-12-20 20:39 原文

愿科学之精神在国民中得到普及,愿中国年轻的一代涌现更多的杰出专业人才。 ——《数学之美》《浪潮之巅》作者 腾讯副总裁  吴军

这本书适合谁看?

  • 所有不理解高数线代用处的 理工大学生
  • 想在社会科学领域取得突破的 文艺青年
  • 张嘴移动互联网闭口云计算的 创业才俊
  • 几乎所有领域的人都可以读一读这本书,你可以不懂数学,但你应该学点数学思维

 

90 曹将读后感

90.1 整体思维 案例:如何抓住搜索引擎排名作弊者?

大部分人:

发现某个网站系统作弊 -> 将该网站放进黑名单 -> 作弊者更换作弊网站 -> 不断扩展黑名单目录

这其实是一种凑结果的方法,能快速解决问题,但一旦出现新情况就需要不断调整适应,最后导致解决问题的方法越来越复杂而失去效果

顶尖高手:

提炼作弊网站链接特征 -> 建立特征链接向量模型 -> 发现网站向量特征异常 -> 清除作弊网站搜索结果

分析业务建立数学模型,然后用实践数据验证模型的可靠性,再用经过实践检验的模型去解决所有相关的问题,这样建立了普遍适应能力的,抗干扰能力强的系统。

复杂问题往往有简单之解 ,如利用计算机完成机器翻译。——吴军

90.2 跨界思维 案例:如何让计算机理解自然语言?

早期对处理自然语言问题是基于语法分析的

  • 应用层:语音识别、机器翻译、自动问答、自动摘要
  • 认知层:自然语言理解
  • 基础层:句法分析、语义分析

必须让计算机理解自然语言的规则!—1956年于达特茅斯夏季人工智能研究会议 克劳德·艾尔伍德·香农 (1916—2001) 美国数学家,信息论创建者

这都是人工智能问题——为什么会这样想?

  • 基于人类直觉:能把英语翻译成汉语的人,一定是能理解两种语言规则的人。
  • 基于惯性思维:通过分析语句和获取语义,传统语言学研究已经建立了复杂的语法规则体系。

但是他们的思路遇到了大麻烦!!

  • 计算量爆炸:仅仅覆盖20%真实语句的规则就超过几万条。
  • 多义性陷阱:自然语言含义和上下文相关,难以用规则表述。

研究陷入长久的停滞… …

之后,一些科学家,在语音识别领域实现了意外的突破

一个句子是否合理,就看他(出现)的可能性大小如何,至于可能性就用概率来衡量。

1970年,弗里德里克·贾里尼克(Frederick Jelinek)在IBM华生实验室想解决语音识别问题,采取了基于统计的方法,使语音识别率从70%提高到90%。

后来阿尔弗雷德·斯博格特(Alfred Spector)去IBM参观后受到启发,最早让卡内基-梅隆大学从传统自然语言处理方法转到基于统计方法,这也是李开复后来就读大学。

1992年,李开复和洪小文循着基于统计方法而不是基于规则分析方法的思路,结合机器学习技术,开发的“斯芬克斯”系统最终解决了语音识别的问题,使语音识别达到了商业化级别。李开复和洪小文出色的工作,帮助他们的论文导师拉杰·雷迪(Raj Reddy)获得了图灵奖。

不过让计算机理解自然语言依然有很多挑战:

统计模型、计算简化、语料选择、模型训练

  • 给定一个模型,如何计算某个特定的输出序列的概率?【Forward-Backward 算法】
  • 给定一个模型和某个特定的输出序列,如何找到最可能产生这个输出的状态序列?【维特比算法】
  • 给定足够量的观测数据,如何估计隐含马尔可夫模型的参数?【无监督的鲍姆-韦尔奇算法】

90.3 简化思维 案例:如何建立一个可用的搜索引擎?

  • 快速下载:5000亿个网页,如何在最短时间内用最少服务器遍历一遍网页
  • 制作索引:5000亿个网页,如何用最少空间建立网页内容的索引用于比对
  • 排名推荐:5000亿个网页,如何计算出那些网页的质量度高可优先推荐
  • 相关查询:5000亿个网页,如何计算出哪个网页最可能是客户查找的网页

1)下载网页

问题本质:如何在有限时间内最多地爬下最重要的网页?

数学方法:图论

BFS(广度优先算法)找到一个网站就顺链接下载其上全部下级页面

DFS (深度优先算法)先找到重要的网站下载重要的页面

这个问题也可以等价于,从北京出发到走遍全国每个城市,怎样走最好?

2)制作索引

问题本质:如何用最少空间建立网页内容的索引用于比对?

数学方法:布尔代数

  • 建立一个关键字词汇表
  • 每个关键词建立一个长长的二进制数,每一位代表一篇文献
  • 每一位数如果是1则代表一篇文献是否含有某关键词,1000100100010…表示第1篇,第5篇,第8篇,第12篇含有某关键词
  • 计算机要找出哪些文字含用户搜索关键词只需要做一次布尔运算
  • 布尔运算的效率最便宜的微机一秒钟可以进行数十亿次
  • 海量网页就构成了一个海量索引
  • 索引还需要记录每个词的位置和次数
  • 巨大的索引超出计算机内存,需要设计计算机的分布式运算能力

3)网页排名

问题本质:如何计算出那些网页的质量度高优先推荐?

数学方法:PageRank算法

  • PageRank算法核心思想就是一个网页被很多其它网页所链接,特别是高质量的网页所链接,那么它的网页质量就高,相应排名也高。
  • 为了计算网页的质量排名,就需要知道其关联的网页质量排名,这就产生了一个是先有鸡还是先有蛋的怪圈。
  • 利用二维矩阵相乘迭代算法解决这个问题,假定所有网页排名都是一个相同初始值,通过这种迭代算法一定可收敛到网页真实排名。
  • 计算海量网页排名计算量非常大,利用稀疏矩阵计算技巧可简化计算,最后谷歌发展出MapReduce并行计算工具减少服务器负担。
  • 佩奇和布林成功关键是把整个互联网当做一个整体对待,以往的算法只注意了网页内容和查询语句的相关性,忽略了网页之间的关系。

4)查询相关

问题本质:如何计算出最可能是客户要查找的网页?

数学方法:关键词权重的概率论计算(TF-IDF)

  • 包含关键词多的网页应该比少的网页相关度高,但是长网页岂不是占了便宜?所以需要计算“关键词的频率”,也就是关键词次数除以网页的总字数。
  • 如果一个搜索包括N个关键词,那么需要计算每个关键词在网页中出现的总词频(TF)。
  • 你得删除掉很多无用的虚词或副词,也就是不同的关键词应该有不同的权重,使用最多的权重是“逆文本频率指数(IDF)”,也就是取关键词在网页中出现的次数除以网页总数的对数。
  • 把每个关键词的词频和权重做加权求和,就可以得到搜索结果的相关性。
  • 最后的搜索排名主要由相关性和网页排名综合决定。

90.4 附录

1)书中锦句

数学的精彩就在于简单的模型可以干大事,数学的魅力就在于将复杂的问题简单化。

有的科学家年级不算老,但是已经落伍,大家需要耐心等他们退休让出位子,科学才能以更快的速度发展。因为不是所有人都乐意改变自己的观点,无论对错。

知道的信息越多,随机事件的不确定性就越小。

首先,小学生和中学生其实没有必要花那么多时间读书,而他们的社会经验,生活能力以及在那时树立起的志向将帮助他们的一生。其次中学阶段花很多时间比同伴多读的课程,在大学以后用非常短的世界就可以读完,因为在大学阶段,人的理解力要强得多。因此一个学生在中小阶段建立的那一点点优势在大学很快就会丧失殆尽。书本的内容可以早学,可以晚学,但是错过了成长的阶段却是无法补回来的。

一个人想要在自己的领域做到世界一流,他周围必须有非常多的一流人物。

技术分为术和道两种,具体的技术很容易从独门绝技到普及,再到落伍,追求术的人一辈子工作都很辛苦。

许多希望我介绍术的人都是希望走捷径,但是真正做好一件事没有捷径,需要一万小时的专业训练和努力,累积一段时间才有感觉。

在工程上简单实用的方法是最好。

先帮用户解决80%的问题,再慢慢解决剩下的20%的问题。

美国人总是倾向于用机器代替人工完成任务。虽然在短期需要做一些额外的工作,但是从长远看可以节省很多时间和成本。

一个正确的数学模型应当在形式上是简单的。

一个正确的模型可能一开始还不如一个精雕细琢过的错误模型来的准确,但是,如果我们认定大方向是对的,就应该坚持下去。

大量准确的数据对研发很重要。

正确的模型也可能受噪音干扰,而显得不准确,这时不应该用一种凑合的方法来弥补它,而是要找到噪音的根源,这也许能通往重大的发现。

当我们遇到不确定性时,就要保留各种可能性。

世界上最好的学者总是可以深入浅出把大道理讲给外行听,而不是故弄玄虚把简单的问题复杂化。

2)推荐几个喜欢介绍数学科普的博客和网站

阮一峰 http://http//www.ruanyifeng.com

蔡天新 http://blog.sina.com.cn/caitianxin

科学松鼠会 http://songshuhui.net/

数学文化 http://weibo.com/mathematicalculture

推荐阅读