把握本質規律——《數學之美》作者吳軍

無論是互聯網,還是手機、電視,現代通信都遵循信息論的規律,整個信息論的基礎都是數學。搜索引擎、語音識別、機器翻譯也都是我們生活中離不開的技術,數學也是解決這些問題的最好工具。在《浪潮之巔》出版后,吳軍將蘊含在這些技術中原本深奧難懂的數學知識和背后的故事, 通過深入淺出的筆端,在《數學之美》中向讀者娓娓道來。

《程序員》:《數學之美》集中闡述了對數學和信息處理這些專業學科的理解,可否再舉一個數學方法徹底改變了計算機領域的例子?

吳軍:在通信編碼方面,有個稱為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.pswp.cn/news/450715.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450715.shtml
英文地址,請注明出處:http://en.pswp.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…