把握本质规律——《数学之美》作者吴军

无论是互联网,还是手机、电视,现代通信都遵循信息论的规律,整个信息论的基础都是数学。搜索引擎、语音识别、机器翻译也都是我们生活中离不开的技术,数学也是解决这些问题的最好工具。在《浪潮之巅》出版后,吴军将蕴含在这些技术中原本深奥难懂的数学知识和背后的故事, 通过深入浅出的笔端,在《数学之美》中向读者娓娓道来。

《程序员》:《数学之美》集中阐述了对数学和信息处理这些专业学科的理解,可否再举一个数学方法彻底改变了计算机领域的例子?

吴军:在通信编码方面,有个称为Turbo Code的方法。以往电话传输语音时只能使用64Kbps带宽(PCM标准)。如果希望在其基础之上传输数据,也无法超越64Kbps的瓶颈,因此通过调 制解调器上网最快只能到56Kbps。而利用Turbo Code则能将电话线扩展到很多频带。频带拓宽以后,再利用它提供的一套编码方法,能够实现容错、校验,保证数据平滑地传输。我们今天使用的DSL就得益 于这项数学编码技术。

DSL技术在20世纪80年代前后就已经被提出,但直到90年代互联网兴起之后才真正得到普及和推广。因为在此之前, 公司内部计算机往往使用同轴电缆相连,不需要考虑使用电话线传输大量数据。互联网兴起以后,家庭用户对电话线路传输数据有了迫切需要,为这项技术的实践提供了契机。Turbo Code还被用于计算机内部的通信,比如硬盘的控制器,它的应用使得硬盘的传输率大大提高,这样通信不会成为硬盘数据读写的瓶颈。今天的硬盘控制器都用到 了这项技术。在Turbo Code的解码中,最重要的算法是BCJR算法,一个典型的应用数学的成果。这个算法,在《数学之美》书中也提及过。

《程序员》:统计学对提高自然语言处理效率发挥了重要的作用,是否还有其他一些数学知识对未来的计算机领域也将发挥重要的作用,值得程序员关注?

吴军:云计算兴起以后,大数据处理日益重要。大数据处理在很大程度上依赖于机器学习,因为对数据进行挖掘不可能由人完成。机器学习对各种数学工具的需求非常 多。过去一些数学工具我们没有看到特别的用处,比如线性代数,但今天很多分析都仰仗于此。比如PageRank、社交网络关系链分析都基于线性代数。

从前我们讲到机器智能,往往是针对一个小问题、小专家系统,这已经是公认的很难继续发展的领域了。然而在有了大数据之后,机器智能的问题被集中到了如何最快 地从大量的、看似没有太多联系的数据中获取知识,这不仅是当今的热门话题,也是一个很有意义的事情。在这个过程中,以往研究人员觉得派不上大用场的数学工 具又开始重新发挥重要作用。另外,最大熵模型中最优化理论的很多基础也是以往大家所忽视的,其中泛函分析就是一个比较纯粹的数学理论,但如今它也有很多实 际应用。

《程序员》:对于大学生,以及工作后的程序员,如果他们希望进一步学习数学和算法的知识,你有哪些建议?

吴军:对于已经工作的人,在知道某个好方法之后,还要在做事的过程中有意识地使用这些好方法,这一点非常重要。

以 中文分析为例,通常我们遇到的问题,可以使用常规语言模型得到比较好地解决,但某些特殊情况,比如诗词就涉及很多特定分词,而无法通过常规语言模型处理。 此时有两个办法:可以通过编写一些特别的规则拼凑——这样写出的程序必然混乱;但假如你相信这样的问题不只会出现一次,也可以为此建立一个特定的语言模 型,并结合常规模型一起解决。编程过程中涉及数学的情况非常多,关键看你用不用它——是相信存在一个数学模型能够解决,还是只图省事将问题绕过去,差别很 大。

对于在校生,建议多在实验室参与项目实践,毕业以后在实验室之外也继续实践。我觉得国内学生学习课程时,课程设计做得太少,很多计算机 系课程的编程量,可能连美国同类课程的1/10都不到。此外,如果阅读与数学相关的工程书籍,我建议选择从国外引进的译作,系统性和严谨性都好些。关于具 体选择哪本,还需要看是解决哪个领域的问题。

关于算法,一直有“道”和“术”的说法,大部分专业书籍介绍的往往是具体算法,属于“术”的范畴,读者在阅读之后并不容易举一反三。与此类似,如果仅是了解一个数学工具或学会解决一个问题,也存在这样的弊端。我希望读者在阅读书籍之后能够进一步做 深入的思考,真正掌握算法的精髓,在遇到需要使用的场合,才可能做到自如运用,这样才算从本质层面真正学会。否则就算了解再多算法,问题稍微变化,就会觉 得无所适从。

《程序员》:在你的学习经历中,有没有希望与读者分享的经验?

吴军:我的学习过程应该与大家没有很大差别,但作 为工程人员,我学习的内容可能相对多一些、广泛一些。我所幸的是,在成长的过程中,在学习和工作经历中,总能和很多各个方面一流的人共事,比如我在清华时 遇到王作英教授、李星教授,在约翰·霍普金斯遇到贾里尼克院士、运筹学大师阿兰·高德曼院士,在Google遇见搜索名师阿米特·辛格院士、计算机系统专 家R·凯茨院士等。我觉得一个人周围是什么朋友,是什么样的同事与自己能否取得进步的关系很大。在年轻的时候,选择工作时,宁可少挣些钱,也要寻找最好的 成长机会。我所从事的计算机领域是一个应用广泛、机会很多的领域。但在这个领域中我也见到过许多年轻人,过早地考虑经济利益,放弃了很多学习的机会,以至 于长期发展缺乏基础,运用所学知识也难以自如。因此,对自己是否有高要求,追求高的境界,好的方法,对能否取得进步的影响也很大。

《程序员》:你提到写作这本书也是希望IT公司的工程主管们能够带领自己的部门提高工程水平,对于工程主管,你有哪些经验希望与他们分享?

吴军:对于做工程来说,如果使用一个正确的好方法,未必一定能够取得成功,因为在整个过程中还有很多非技术因素会发挥作用。但从长远来看,如果使用一个不好 的方法和不正确的模型,几乎可以肯定这个产品不会取得成功。即使短期看起来有效,但做出的产品往往只是山寨的结果。产品是能够持续受到用户欢迎,还是昙花 一现,很多时候就在于是否能用正确的方法处理问题,能否真正把握其中的本质规律。

《程序员》:Princeton大学出版社出版了一本《Nine Algorithms That Changed the Future》,其中也讲到许多关于搜索引擎、密码学方面的知识,可否谈谈算法和数学之间的关系?

吴军:算法很多时候是以数学为基础的,比如PageRank,我觉得影响更大的还有Viterbi算法,它是我们今天通信技术的基础。还有应用数学一些分 支,比如运筹学、博弈论中的方法,在计算机科学,以及经济学上都有很多直接应用,这些方法背后的数学是许多计算机算法的基础。

《程序员》:你是国家核高基项目“新一代搜索引擎与浏览器”的总负责人,可否介绍一下这个项目和目前取得的进展。

吴军:这一项目是腾讯公司和清华大学联合申请的,因为要求以企业为主,因此就定了我做总负责人。这个项目的目的是构造一个全新的搜索引擎,不仅搜索质量要做 到国内最好,此外还要结合社交网络,为用户提供个性化的体验。在浏览器方面,希望打造一个优化搜索体验的浏览器。我们知道,在社交网络中,可以搜索的内容 比一般网页搜索要多很多。除了外网的内容,还包括用户自己的内容,用户好友的内容,社交网络中一般性,却是非登录态用户(包括网络爬虫)看不到的内容。如 何将这些内容组织好,很具有挑战性。同时,在社交网络中的用户在登录时,我们可以通过他过去的习惯以及好友关系链等个性化的信息,提供比非登录态用户更加 精准的结果。为了做到这些,需要打造适合搜索的云计算平台。此外无线搜索也会进一步完善个性化和本地化,因为无线终端是与个人绑定的,同时具有丰富的地理 位置信息,这些信息不仅可以帮助把无线搜索做好,而且可以帮助商家的无线搜索上投放广告。在浏览器方法,很多搜索的功能都将以插件的形式直接放到浏览器 中。

《程序员》:百度的搜索引擎已经做得足够好了,为什么腾讯还要花大力气,大投入做这件事?是否是眼红百度的广告收入?

吴军:2009年腾讯CTO熊(明华)总来硅谷请我加盟腾讯、帮助公司做好搜索时,我也问过他同样的问题。我说,这个题目对我来讲没有吸引力,因为不过是把 这Google的工作重复一遍。对我来讲做一个和Google一样好的搜索引擎不难,难的是做出来以后,和百度的差异不足以使得用户需要切换过来。因此需 要给我一个理由,包括用户能得到什么新的好处,否则即使做得再好用户也是不可能从百度切换过来的。我一直强调新的产品只有质变,革命性的变革才能战胜已经 统治市场的产品。同时还需要他告诉我公司有什么特殊的资源推广,因为雅虎和微软投入了大量资源推广都不成功,国内的新浪、搜狐和网易也不成功。那么腾讯是 否有资源,有决心做这件事,因为这是一件长期吃力未必讨好的事情。他介绍了腾讯的社交网络Qzone,这个和Facebook类似,里面的内容是外面没有 的,同时登录台很多信息是可以利用的。有了这些信息就有希望比百度有质的提高。在推广资源上,腾讯在无线领域有得天独厚的优势,而现在恰恰处在无线搜索的 爆发期。在决心上,腾讯将它看作五年后收入主要的成长点,放在战略高度。

虽然熊总第一次没有说服了我,但我们谈得还是很投缘,之后他带我和 朱会灿到深圳见了公司的几位主要负责人,我们也对腾讯的业务和优势有了些了解,最终他们一起说服了我们。在我看来,搜索这件事,要么做成通吃市场,要么失 败一无所获,几乎没有中间状态。当然,这些事情要做到,需要花很大的精力、很长的时间,不是照着Google做一个搜索引擎往QQ上一扔就完事这么简单。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450715.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hibernate4 注解方法说明

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1.类级别注解 Entity 映射实体类 Table 映射数句库表 Entity(name"tableName") - 必须,注解将一个类声明…

消息队列常见面试题

文章目录2. 消息队列2.1 MQ有什么用?2.2 说一说生产者与消费者模式2.3 消息队列如何保证顺序消费?2.4 消息队列如何保证消息不丢?2.5 消息队列如何保证不重复消费?2.6 MQ处理消息失败了怎么办?2.7 请介绍消息队列推和拉…

Mybatis 详解--- 一级缓存、二级缓存

2019独角兽企业重金招聘Python工程师标准>>> Mybatis 为我们提供了一级缓存和二级缓存,可以通过下图来理解: ①、一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(Hash…

我的nabcd

我们组要做的软件是一款MP3播放软件,名字叫TDG音乐 N(need需求),由于现在版权越来越被重视,许多播放软件里面的大部分歌曲都是收费的,不想花钱又想听可怎么办呢,只能在网上找免费资源&#xff0…

【C/C++和指针】深度解析---指针与数组 【精华】

一&#xff0c;引例子 二维数组可以使用指向数组的指针代替&#xff0c;而指针数组才可以用指向指针的指针代替。 [html] view plaincopy#include<iostream> using namespace std; void main() { char *a[]{"Hello","the","World&q…

Redis常见面试题详解

文章目录1. Redis1.1 Redis可以用来做什么&#xff1f;1.2 Redis和传统的关系型数据库有什么不同&#xff1f;1.3 Redis有哪些数据类型&#xff1f;1.4 Redis是单线程的&#xff0c;为什么还能这么快&#xff1f;1.5 Redis在持久化时fork出一个子进程&#xff0c;这时已经有两个…

IntelliJ 创建main函数、for循环、输出语句快捷键

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 今天偶然发现了IntelliJ中 创建main函数的快捷键&#xff0c;依次还有for循环&#xff0c;System.out.println(); 在编写代码的时候直接…

CentOS新增用户并授予sudo权限

2019独角兽企业重金招聘Python工程师标准>>> 新增用户 添加用户useradd demo设置用户密码passwd demo授予sudo权限 输入以下命令&#xff0c;编辑sudoers配置&#xff1a;visudo找到以下行root ALL(ALL) ALL增加以下内容&#xff1a;demo ALL(ALL) ALL保存后登录dem…

跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击

跨站脚本功攻击&#xff0c;xss&#xff0c;一个简单的例子让你知道什么是xss攻击 一、总结 一句话总结&#xff1a;比如用户留言功能&#xff0c;用户留言中写的是网页可执行代码&#xff0c;例如js代码&#xff0c;然后这段代码在可看到这段留言的不同一户的显示上就会执行。…

用业绩建立信任

当年从香港到美国&#xff0c;对于中学毕业的郭尊华来说&#xff0c;算是一个失败。他尽管家境普通&#xff0c;但因为成绩不佳进不了香港的大学&#xff0c;不得不远赴美国读书。在课余做过挖地、当侍者等多份工作的他&#xff0c;在大三的时候终于得到一份初级工程师的工作。…

idea 快捷键 小结

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。1.setting 打开快捷键&#xff1a;ctrl alt s 在 file - setting 中。 2.回到默认设置&#xff1a;删除如下路径的文件夹 C:\Users…

Jenkins常用插件

Generic Webhook Trigger Plugin触发器webhook用户触发构建Deploy to container Plugin部署到tomcatGradle Plugin Gradle插件构建项目Maven Plugin Maven插件构建项目Git Plugin Git插件克隆项目GitHub plugin GitHub插件集成githubSSH Slaves plugin SSH插件用于远程登录Buil…

spark广播变量 和 累加器

1 为什么使用广播变量 和 累加器 变量存在的问题&#xff1a;在spark程序中&#xff0c;当一个传递给Spark操作(例如map和reduce)的函数在远程节点上面运行时&#xff0c;Spark操作实际上操作的是这个函数所用变量的一个独立副本。这些变量会被复制到每台机器上&#xff0c;并且…

分布式常见面试题详解

文章目录1. 分布式1.1 什么是CAP原则&#xff1f;1.2 说一说你对高并发的理解1.3 如何实现分布式存储&#xff1f;1.4 说一说你对分布式事务的了解1.5 分布式系统如何保证最终一致性&#xff1f;1.6 谈谈你对分布式的单点问题的了解1.7 HTTP和RPC有什么区别&#xff1f;1.7 HTT…

C11标准委员会成员解读C语言新标准

导读&#xff1a;C语言国际标准新的新草案之前已经公布&#xff0c;新标准提高了对C的兼容性&#xff0c;并将新的特性增加到C语言中。此外支持多线程的功能也受到了开发者的关注&#xff0c;基于ISO/IEC TR 19769:2004规范下支持Unicode&#xff0c;提供更多用于查询浮点数类型…

如何将拷贝过来的数据 *.ibd 文件生效

1.将拷贝的数据文件 "qqq.idb"放在自己的数据库中. 一般存放在 mysql/ data/ databasename 下 2. "qqq.idb" 改个名字-->"qqq--.idb", 主要是避免冲突&#xff01; 3.执行 create table qqq(...) 语句&#xff0c;此时除了会生成一个 qqq…

windows 下启动zookeeper的zkServer.cmd服务闪退

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 解决方案把conf目录下的默认zoo_sample.cfg的文件名字改成zoo.cfg 即可&#xff1a; 以上转自&#xff1a;http://blog.csdn.net/qq4960…

设计模式常见面试真题详解

文章目录1. 设计模式1.1 说一说设计模式的六大原则1.2 说一下六大原则中的开闭原则1.3 手写一个单例模式1.4 手写一个线程安全的单例模式1.5 说一说你对工厂模式的理解1.6 简单工厂模式和抽象工厂模式有什么区别&#xff1f;1.7 如何实现工厂模式&#xff1f;1.8 说一说你策略模…

Android内存优化之内存泄漏

内存泄漏 内存泄漏一般有以下几种情况&#xff1a;单例、静态变量、Handler、匿名内部类、资源使用未关闭 单例导致的内存泄漏 单例的情况主要是因为单例的生命周期比较长&#xff0c;如果引用的一些资源&#xff08;比如Context、图片等&#xff09;没有做特殊处理&#xff0c…

cmd - 使用curl命令的注意点

前言 最近在cmd中使用curl命令来测试rest api&#xff0c;发现有不少问题&#xff0c;这里记录一下。 在cmd中使用curl命令的注意事项 json不能由单引号包括起来json数据里的双引号要用反斜杠\转义json数据里不能带有空格如果想要在json数据里使用空格则必须用双引号将整个json…