《數學之美》讀書筆記&思考

嗶譜嗶譜發表於2019-02-28

之前本科在北郵參加一個講座的拍攝時,有幸與本書作者合影。當時是我還不是很瞭解吳軍博士,只覺得他是個很厲害的人。當讀完《數學之美》這本書後,我不由得對他肅然起敬。雖然書名看起來像是一本數學教材,但本書主要講的是數學在機器學習等領域的神奇用處。最難能可貴的是作者將很多知識點都講的淺顯易懂,文風和劉未鵬有些相似。用作者本人的話說就是:一個技術或者問題有“術”和“道”之分!這本書講的比較偏向“道”!讀了這本書我恍然大悟,數學原來並不只是枯燥的考試題,而是人類理解世界最重要的一種工具。數學不僅有用而且還有無窮魅力!

自然語言處理(NLP)走的大彎路

NLP的發展歷程就是一個很有趣也很有代表性的例子,其近70年的發展過程基本上可以分為2個階段。

早期的20多年,即從20世紀50年代到70年代,是科學家們走彎路的階段。全世界的科學家對NLP的認識都侷限在人類學習語言的方式,也就是說,用電腦模擬人腦。當時,學術界對人工智慧和NLP的普遍認為:要讓機器完成翻譯或者語音識別等只有人類才能做的事情,就必須讓計算機理解自然語言,而做到這有點就必須讓計算機擁有我們人類這樣的智慧。為什麼會有這樣的認為呢?因為我們人類就是這麼做的,道理就這麼簡單。對於人類來說,一個能把英語翻譯成漢語的人,必定能很好地理解這兩種語言。這就是直覺的作用。所以當時的主要研究方向是分析語句和獲取語義。在人工智慧領域,後來把這樣的方法論稱為“鳥飛派”,也就是看看鳥是怎樣飛的,就能模仿鳥造出飛機,而不需要了解空氣動力學。實際上我們知道,懷特兄弟發明飛機靠的是空氣動力學而不是仿生學。今天,機器翻譯和語音識別已經做得不錯,並且有上億人使用過,但是這個領域之外的大部分人依然錯誤地以為這兩種應用是靠計算機理解了自然語言才實現的。事實上,它們全都靠得是數學,更準確地說是靠統計。

從NLP到NMP

自然語言從它產生開始,逐漸演變成一種上下文相關的資訊表達和傳遞方式,因此讓計算機處理自然語言,一個基本的問題就是為自然語言這種上下文相關的特性建立數學模型。這個模型就是我們常說的統計語言模型,它是今天所有NLP的基礎,並且廣泛應用於機器翻譯、語音識別、印刷體或手寫體識別、拼音糾錯、漢字輸入和文獻查詢。一般使用的是二元模型(馬爾可夫鏈),假設任意一個詞出現的概率之和他前面一個詞有關。由於大部分條件概率是零,所以要使用古德—圖靈估計公式對其進行平滑處理,即卡茨退避法。Google的羅塞塔翻譯系統和語音搜尋系統,使用的是四元模型,該模型儲存於500臺以上的Google伺服器上。2005年,Google使用比其他研究機構多幾千甚至上萬倍的資料,訓練出了一個六元模型,開發出了當時世界上最好的機器翻譯系統。

NLP部分應用

因為自己搭建了一個開源曲譜庫的關係,所以我就想是不是能夠以曲譜庫為依託,建立一個統計音樂模型,用於自然音樂處理(Natural Music Processing)方面的研究 。下圖是我通過整理、類比得到的NMP可能具有的相關前景。

NMP部分應用

個人覺得,NMP的首要工作還是建立一個完善且龐大的曲譜庫,為統計音樂模型的訓練提供充足的訓練樣本,避免模型的過擬合。二元模型具體實現設想如下:可以先將音樂按照節拍分成N小節,然後以小節為單位訓練二元模型。不同應用時,分節粒度可能不同。

NLP與通訊

隱含馬爾可夫模型最初應用於通訊領域,那麼它是怎麼和NLP扯上關係的呢?

我們不妨換個角度來思考這個問題。所謂語音識別,就是聽者去猜測說話者要表達的意思。這其實就像通訊中,接收端根據收到的訊號去分析、理解、還原傳送端傳送過來的資訊。我們平時在說話時,腦子就是一個資訊源。我們的喉嚨(聲帶)、空氣,就是如同電線和光纜般的通道。聽眾的耳朵就是接收器,而聽到的聲音就是傳送過來的訊號。根據聲學訊號來推測說話者的意思,就是語音識別。

同樣,很多NLP的應用也可以這樣理解。在從漢語到英語的翻譯中,說話者講的是漢語,但是通道編碼的方式是英語,如果利用計算機,根據接收到的英語資訊,推測說話者的漢語意思,就是機器翻譯。同樣,如果要根據帶有拼寫錯誤的語句推測說話者想要表達的漢語意思,就是自動糾錯。這樣,幾乎所有的NLP問題都可以等價成通訊解碼問題。

隱含馬爾可夫模型最早成功應用是語音識別,最出名的是賈里尼克領導的IBM華生實驗室以及李開復研發的世界上第一個大詞彙量連續語音識別系統Sphinx。在賈里尼克之前,科學家們把語音識別問題當作人工智慧和模式匹配問題,而賈里尼克把它當成通訊問題,並用2個隱含馬爾可夫模型(聲學模型和語言模型)把語言識別概括得清清楚楚。同時,隱含馬爾可夫模型也是機器學習的主要工具。幾乎和所有機器學習的主要工具一樣,它需要一個訓練演算法(鮑姆—韋爾奇演算法)和使用時的解碼演算法(維特比演算法)。如今,隱含馬爾可夫模型被廣泛應用於機器翻譯、拼音糾錯、手寫體識別、影像處理、基因序列分析以及股票預測和投資。

《數學之美》讀書筆記&思考

【思考】:樂譜識別是不是也能當成通訊問題,使用聲學模型和音樂模型來解決呢?

這裡還有個小插曲:我想既然可以把樂譜識別看成通訊,那能否用音樂的不同音符來加密傳輸資訊呢?就當我以為我有了重大發現的時候,我看到了CDMA之母海蒂·拉瑪,恍然大悟。

堅果手機廣告
上世紀四十代初的某一天,海蒂·拉瑪結識了擅長鋼琴的安塞爾,二人聊得投機。安塞爾為她彈琴時,海蒂突發奇想:跳動的琴鍵發出不同頻率的聲音,那麼用這樣跳動的頻率是不是可以實現保密通訊?

這就是跳頻, CDMA技術的核心概念。跳頻好比是把長篇的內容分成很多小節,每發一節就換一個頻率再發下一節。傳送方和接收方只要協調好變換頻率的規則,就可以實現通訊。只要每一小節足夠短小,它就會被支離破碎地淹沒在雜波背景當中,第三方甚至都偵測不到這一路通訊的存在,更別說監聽擷取了。身處戰爭年代,在政軍要員之間耳濡目染,使她對保密通訊有所意識,加上海蒂早年學習過通訊專業,只不過後來為了演電影,輟學了。

不多日,這件專利誕生了:

《數學之美》讀書筆記&思考

搜尋引擎一把梭

搜尋引擎的原理非常簡單,建立一個搜尋引擎大致需要做這樣幾件事:自動下載儘可能多的網頁;建立快速有效的索引;根據相關性對網頁進行公平準確的排序。

下載

  • 圖論中的遍歷演算法
  • 廣度優先演算法(BFS)
  • 深度優先演算法(DFS)
  • 雜湊表:記錄是否下載過該網頁

索引

  • 布林運算
  • 根據網頁的重要性、質量和訪問的頻率建立常用和非常用等不同級別的索引。

排序

搜尋結果的排名取決於兩組資訊:網頁的質量資訊,以及這個查詢與每個網頁的相關性資訊

網頁質量

PageRank演算法的核心是迭代計算每個網頁的權重,然後通過權重的大小對網頁排名。

迭代初始時每個網頁的權重是一樣的,然後通過計算更新每個網頁的權重,規則如下:

1、當一個網頁被越多的網頁引用時,它的權重越大

2、當一個網頁的權重越大時,它引用的網頁的權重也隨之變大

3、當一個網頁引用的網頁越多時,被它引用的網頁獲得的權重就越小

如此反覆迭代,演算法最終會收斂到一個固定的排名。

網頁相關性

TF-IDF方法(Term Frequency-Inverse Document Frequency)

TF:單文字詞頻,是某一個給定的詞語在該檔案中出現的頻率。這個數字是對詞數(term count)的歸一化,以防止它偏向長的檔案。(同一個詞語在長檔案裡可能會比短檔案有更高的詞數。)

IDF:逆文字頻率指數,是一個詞語普遍重要性的度量。某一特定詞語的idf,可以由總檔案數目除以包含該詞語之檔案的數目,再將得到的商取以10為底的對數得到。

兩個網站間的相似性 = ∑(關鍵詞 * 詞頻 * 權重)

Google AK-47 的設計哲學

《數學之美》讀書筆記&思考

在計算機領域,一個好的演算法應該像AK-47那樣:簡單、有效、可靠性好並且容易讀懂(或者說易操作),而不應該故弄玄虛。美國工程院院士阿米特·辛格博士就是Google AK-47 的設計者,Google內部的排序演算法Ascorer裡面的A便是他名字首字母。辛格這種做事的哲學,即先幫助使用者解決80%的問題,再慢慢解決剩下的20%問題,是在工業界成功的祕訣之一。許多失敗並不是因為人不優秀,而是做事情的方法不對,一開始追求大而全的解決方案,之後長時間不能完成,最後不了了之。

這點上我十分認同辛格博士。回想起當初獨自一人建立曲庫到有越來越多優秀的小夥伴加入我們核心組,再到Bilibili收穫了500粉絲,感慨良多。一開始其實有一個名叫自由神社的網站也在做JE吧的口琴曲庫。但是為了圖方便,一開始使用的是WordPress,這直接導致了上傳機制過於繁瑣以及許多功能後期無法擴充套件。後來幾乎是我建立github曲庫的同時期,自由神社開始著手研發2.0版本。但是要達到github的issue能夠直接提供的功能談何容易。首先,github曲庫支援拖拽上傳圖片,自帶完善的搜尋功能,支援模糊搜尋,自帶排序。經過半年實踐,曲庫已經積累一定的經驗,並優化了上傳模板。自由神社要自己建立同等功能的譜子資料庫面臨幾個問題:1. 負責資料庫的同學太忙沒有時間;2. 實現曲庫和譜子搜尋功能需要花費一定時間;3. 譜子需要重複搬運。剛開始,許多人認為一定要用自己的資料庫存放譜子,自己去做搜尋功能,這樣才比較放心,但最後統統不了了之了。說到底還是因為對於一個興趣驅動的開源專案來說,重新造輪子的開發成本太高,不管是時間還是精力。其實github本就是存放程式碼的開源倉庫,用於存放開源曲譜實也無可厚非。就這樣,我們用80%的精力建立了曲庫2.0,給大家提供了所有必須的功能。而自由神社2.0的開發則因為遭遇瓶頸,最終停滯不前。

數學模型的重要性

  • 一個正確的數學模型在形式上是簡單的。
  • 一個正確的模型一開始可能還不如一個精雕細琢的錯誤模型來的準確,但是,如果我們認定大方向是對的,就應該堅持下去。
  • 大量準確的資料對研發很重要
  • 正確的模型也可能受噪音干擾,而顯得不準確;這時候不應該用一種湊合的修正方法加以彌補,而是要找到噪聲的根源,這也許能通往重大發現。

貝葉斯網路

從數學層面來講,貝葉斯網路是一個加權有向圖,是馬爾可夫鏈的擴充套件。而從認識論的層面看,貝葉斯網路克服了馬爾可夫鏈那種機械的線性約束,它可以把任何有關聯的事件統一到它的框架下面。

貝葉斯網路比神經網路更容易考慮(上下文)前後的相關性,因此可以解碼一個輸入的序列,比如講一段語音識別成文字,或者將一個英文句子翻譯成中文。而人工神經網路的輸出相對孤立,它可以識別一個個的字,但是很難處理一個序列,因此他主要的應用常常是估計一個概率模型的引數,比如語音識別中聲學模型引數的訓練、機器翻譯中語言模型引數的訓練,等等,而不是作為解碼器。

【思考】:貝葉斯網路更適合樂譜識別

相關文章