1. 程式人生 > >讀玩《數學之美》(在讀)

讀玩《數學之美》(在讀)

第1章 文字和語言 vs 數字和資訊

主要講述了文字、數字和語言的歷史。

語言和數字的出現都是為了傳遞資訊(通訊)。

語言的數學本質:每一門語言都是一種編碼規則,而語言的語法規則則是解編碼的演算法。

每次我們想表達一句話,都先在頭腦中使用某種編碼規則編碼一次。而對方聽到後,在腦中解碼,才能聽懂對方想要表達的意思。

羅塞塔石碑 (Rosette stone),不列顛博物館鎮館三寶之一,世界級文物。

製作於公元前 196 年,刻有古埃及國王托勒密五世登基的詔書。石碑上用希臘文字、古埃及文字和當時的通俗體文字刻了同樣的內容,這使得近代的考古學家得以有機會對照各語言版本的內容後,解讀出已經失傳千餘年的埃及象形文之意義與結構,而成為今日研究古埃及歷史的重要里程碑。

由於其知名度與重要性,除了石碑本身外,羅塞塔石碑或羅塞塔這名詞也被引伸用來意指或暗喻一些其他的事物。

其中,由於石碑上的刻文被用來作為語言翻譯用途,因此有一款非常受歡迎的多國語言學習軟體,也以《羅塞塔石碑》來命名。

除此之外,由於是破解埃及象形文這種如謎題般的事物之起始點,“羅塞塔石碑” 也被用來暗喻要解決一個謎題或困難事物的關鍵線索或工具,舉例來說,歐洲航天局(ESA)就將其發展的太空探測器命名為羅塞塔,因為透過此計劃,將會破解太陽系生成的祕密,是天文研究上的關鍵突破。

第2章 自然語言處理——從規則到統計

所謂的自然語言處理,即讓機器讀懂人類的語言

本章主要講述了讓機器處理自然語言的兩種方法:基於語法規則和基於統計。

歷史表明,基於語法規則的方向是錯的。

在講述從基於規則到基於統計的歷史時,筆者提出了一個很有趣的問題:為什麼這場爭議持續了15年呢?

他解釋,首先,一種新的研究方法的成熟需要很多年。

第二,用基於統計的方法代替傳統的方法,需要等原有的一批語言學家退休。

簡單地介紹了,基於統計的方法的核心模型 = 通訊系統 + 隱含馬爾科夫模型

第3章 統計語言模型

自然語言的表達、傳遞具有上下文相關的特性。

而針對這種特性建立的數學模型,即是統計語言模型(Statistical Language Model)。

統計語言模型是自然語言處理的基礎。

假定S是一個有意義的句子,由一連串特定順序的詞w1

w_1w2w_2,…,wnw_n組成。

馬爾科夫假設:假設在句子S中,wiw_i出現的概率只和它之前(緊鄰)的N個詞有關。

當N為1時,我們稱之為二元模型(Bigram Model),

當N為N -1時,我們稱之為N元模型。

我們先來考慮最簡單的情況,N = 1,即wi1w_{i-1}wiw_i。由之前的假設,wiw_i的出現與wi1w_{i-1}有關,

所以P(wi1w_{i-1},wiw_i) = P(wiw_i | wi1w_{i-1}) P(wiw_i),

可以預見,隨著N的增大,組合詞的概率會越來越難算。

但同樣的,模型的效果也越好。

四元以上的模型鮮有人用。Google的羅塞塔翻譯系統和語音搜尋系統,使用的是四元系統。該模型儲存在500+臺的伺服器上。

馬爾科夫假設的侷限性:再高階的模型也不能覆蓋所有的語言現象。

可以採用一些長程的依賴性來彌補這方面的不足。

在延伸閱讀部分,筆者還介紹了,零概率問題(總會有新詞出現的嘛,或者說樣本不到位)、模型不平滑問題(其實就是零概率問題導致的)、Zipf定律( 20% 的詞佔了 80% 的出現次數)。

筆者引申這些就是想表達,統計語言模型形式上看似簡單,實際上水深著呢(要考慮的東西很多…)。

但數學的魅力就在於將複雜的問題簡單化,哈哈

第4章 談談分詞

如章名所言,簡單談了中文分詞方法的演變(詞典→統計語言模型),以及如何衡量分詞結果的好壞。

和中文語系相比,英語是不存在分詞問題的。

不過,筆者也舉了一個栗子:英語連續手寫軟體需要使用分詞(單詞和單詞間沒有停頓)。

第5章 隱含馬爾科夫模型

第6章 資訊的度量和作用

6.1 資訊熵

資訊量的大小如何度量?一本50多萬字的《史書》到底有多少資訊量?

資訊理論的創始人夏農(Shannon)從資訊的反面——不確定性,對資訊量的度量進行了定義。換句話來說,我們消除了多少不確定性,就得到了多少資訊量。

不確定性的度量用資訊熵來表示,單位為Bit。資訊熵越大表示不確定性越大。

資訊熵公式如下(無特別說明,log的底都為2):
H(X)=xXP(x)log2P(x)H(X) =-\sum _{x∈X}P(x)log_{2}P(x)

舉個栗子,我們知道拋硬幣的隨機分佈為:

正面 反面
概率P 0.5 0.5

則拋硬幣這一事件的不確定性(熵)為:H(X) = - (0.5 log0.5 + 0.5 log0.5) = 1 Bit

6.2條件熵

條件熵(Conditional Entropy)公式:
H(XY)=xX,yYP(x,y)logP(xy)H(X | Y) =-\sum _{x∈X, y∈Y}P(x, y)logP(x | y)
其中,P(x, y)為聯合分佈概率,P(x | y)為條件概率。

6.3互資訊

互資訊公式:
I(X;Y)=H(X)H(XY)I(X; Y) = H(X) - H(X | Y)
即引入事件Y後,對事件X的不確定性的消除量。所以互資訊也稱為資訊增益

6.4 相對熵

相對熵(Relative Entropy)公式:
KL(f(x)g(x))=xXf(x)logf(x)g(x)KL(f(x) || g(x)) = \sum _{x∈X}f(x)▪ log\frac{f(x)}{g(x)}
又可以譯作交叉熵,英文為Kullback-Leibler Divergence。

KL(P || Q) 表示當用概率分佈 Q 來擬合真實分佈 P 時,產生的資訊損耗。其中 P 表示真實分佈,Q 表示 P 的擬合分佈。

損耗越大,兩個隨機分佈的的差異性越大。

因此相對熵用於度量兩個隨機分佈的的差異性。

從上面可以看出,相對熵是不對稱的。

為了讓它對稱,詹森(J)和夏農(S)提出了一種新的相對熵計算方法:
JS(f(x)g(x))=12[KL(f(x)g(x))+KL(g(x)f(x))]JS(f(x) || g(x)) = \frac{1}{2}[KL(f(x) || g(x)) + KL(g(x) || f(x))]

相對熵最早用在訊號處理上。比如有兩個隨機訊號,它們的KL越小,說明這兩個訊號越接近。

其他方面,比如說論文抄襲檢測。

6.5語言模型複雜度

用於衡量語言模型的好壞。

原理很簡單,即在給定上下文的條件下,文章中每個位置平均可以選擇的單詞數量。

第7章 賈里尼克和現代語言處理

介紹了自然語言處理大師——賈里尼克的生平。

有興趣的可以去看下。這裡摘錄了幾個有趣的觀點:

1)小學生和中學生其實沒有必要花那麼多的時間讀書,而他們(這時候)培養(或積累)的生活能力、社會經驗以及樹立的志向將幫助他們的一生。因為中小學階段積累的優勢,會隨著年紀的增長,理解力的增強而消失殆盡。

這個觀點,我同意一半吧。多讀點書還是有用的,畢竟優勢不是朝夕,而是一點一點建立起來的。但不能只讀書,我想這正是筆者所強調的。

2)想要在自己的領域做到世界一流,他的周圍必須有非常多的一流人物。

3)不需要我告訴你們做什麼,我只需要告訴你們不要去做什麼(這樣可以少犯很多錯誤)

第8章 簡單之美——布林代數和搜尋引擎

技術分為術和道兩種,具體的做事方法是術,做事的原理和原則是道。

(對於一個問題)不要總是指望靠一個演算法、一個模型就能畢其功於一役,這是不現實的。

筆者說的布林代數和搜尋引擎的關係,其實就是搜尋時對鍵入的關鍵詞做的邏輯運算。

第9章 圖論和網路爬蟲

圖論部分主要介紹了圖論的一些典故(如七橋問題)和定理。
在這裡插入圖片描述

筆者在Google最常用得到一道面試題:如何構建一個網路爬蟲:

1)首先,用BFS還是DFS?
2)頁面的分析和URL的提取
3)URL表——記錄已爬過的網頁

在圖論出現後的很長時間裡,很難體會到這個領域的研究有什麼實際用處。

但是隨著網際網路的出現,圖論一下子就有了用武之地。

很多數學方法都是這樣。

第10章PageRank——Google民主表決式網頁排名技術

思路:利用網頁之間的聯絡來衡量網頁的質量。(這是一個系統的觀點,把整個網際網路當做一個整體對待,而不是像資訊檢索那樣,把每個網頁當成獨立的個體)

網頁間的聯絡,即有多少個網頁指向了同一個網頁,這個數量我們稱之為權重(當然不只是數量)。則一個網頁的排名來自於指向它的所有網頁的權重總和。

使用矩陣來實現所有網頁各自權重的計算。

第11章 如何確定網頁和查詢的相關性

11.1搜尋關鍵詞的權重

在給定關鍵詞的情況下,網頁權重的衡量:
W=i=1nTFiIDFiW = \sum_{i =1}^{n}TF_{i}·IDF_{i}
其中,TF是詞頻(Term Frequency),即關鍵詞在網頁中的佔比。

IDF是逆文字頻率指數(Inverse Document Frequency)。IDF聽著很複雜,其實就是包含關鍵詞的網頁在所有網頁中的佔比。俗話說,物以稀為貴,正是這個理。越稀有,則IDF越大。

11.2 TF-IDF與資訊理論

從資訊理論的角度,一個查詢(Query)中的每個關鍵詞的權重反映了這個Key Word對這個查詢提供了多少資訊。

第12章 有限狀態機和動態規劃——地圖與本地搜尋的核心技術

有限狀態機(Finite-state machine, FSM),是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型。

第13章 Google AK-47的設計者——阿米特·辛格 博士

講述了阿米特·辛格博士的一些事蹟。

在電腦科學領域,一個好的演算法應該像AK-47衝鋒槍那樣:簡單、有效、可靠性好而且容易讀懂,而不是故弄玄虛。

第14章 餘弦定理與新聞的分類

我們將一篇新聞出現過的所有實詞的TF-IDF值組織成一個向量,用這個向量代表這篇新聞——特徵向量。

那怎麼衡量兩個向量間的差異程度呢?

向量夾角!夾角越大,相關性越小。當兩向量垂直(正交)時,兩向量無關。

上面這種做法,在我們知道一些新聞類別的特徵向量時,很容易實現。

但當我們事先沒有這些新聞類別的特徵向量時怎麼辦?

解決:自底向上不斷合併的辦法。

1)計算所有新聞間兩兩的餘弦相似性,將相似性大於一個閾值的新聞合併成一個小類(Subclass)
2)把每個小類中所有的新聞作為一個整體,計算所有小類的特徵向量。
3)…

這種新聞歸類的方法(餘弦相似性)適用於被分類的文字集在百萬數量級。如果大到億級,計算時間會比較長。在下一個章節筆者介紹了一種更快速但相對粗糙的演算法。

第15章 矩陣運算和文字處理中的兩個分類問題

即矩陣運算中的奇異值分解(SVD,Singular Value Decomposition)。

首先我們使用一個大矩陣來描述所有文章、詞的關聯性,再將它分解成三個矩陣相乘。這三個矩陣都有著非常清晰的物理含義。

通過SVD,我們可以一次性得到分類的結果。

第16章 資訊指紋及其應用

對於兩個大檔案是否相同,我們去比較它們的每一個位元組,是非常耗時耗資源的。

就像人一樣,每個人的指紋都是獨一無二的。我們通過比較指紋,就能確定是否為同一個人。

同理,對於一個檔案,我們通過一種演算法,將其所有位元組隨機對映到16個位元組中——特徵值。通過比較兩個檔案的特徵值,達到比較兩個檔案的目的。

當然,也存在兩個不同檔案的特徵值相同的情況,但機率非常小。

第17章 密碼學的數學原理

密碼學的最高境界是無論敵方獲取多少密文,也無法消除己方情報系統的不確定性。

介紹了RSA演算法。

第18章 談談搜尋引擎反作弊問題和搜尋結果的權威性問題

筆者將搜尋引擎比作一個特殊的通訊系統,作弊就是加入噪音,反作弊和確定權威性就是去噪音的過程。(實際上我仍然無法理解)

第19章 談談數學模型的重要性

介紹了托勒密的貢獻。

第20章 談談最大熵模型

第21章 拼音輸入法的數學原理

第22章 自然語言處理的教父馬庫斯和他的優秀弟子們

第23章 布隆過濾器

第24章 馬爾可夫鏈的擴充套件 — 貝葉斯網路

第25章 條件隨機場、文法分析及其他

第26章 維特比和他的維特比演算法

第27章 上帝的演算法 — 期望最大化演算法

第28章 邏輯迴歸和搜尋廣告

第29章 各個擊破演算法和Google 雲端計算的基礎

第30章 Google 大腦和人工神經網路

第31章 大資料的威力——談談資料的重要性