無論是互聯網,還是手機、電視,現代通信都遵循信息論的規律,整個信息論的基礎都是數學。搜索引擎、語音識別、機器翻譯也都是我們生活中離不開的技術,數學也是解決這些問題的最好工具。在《浪潮之巔》出版后,吳軍將蘊含在這些技術中原本深奧難懂的數學知識和背后的故事, 通過深入淺出的筆端,在《數學之美》中向讀者娓娓道來。
《程序員》:《數學之美》集中闡述了對數學和信息處理這些專業學科的理解,可否再舉一個數學方法徹底改變了計算機領域的例子?
吳軍:在通信編碼方面,有個稱為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上一扔就完事這么簡單。