讀書分享:《數學之美》中的一些關鍵名詞

最近兩週在拜讀吳軍的《數學之美》,對NLP中的一些“道”瞭解了一下,感受到了數學的強大,其中有一些名詞很有代表性,特此記錄,以免遺忘。
注:本文中大部分內容都摘自《數學之美》,特此說明!

一、隱含馬爾可夫模型

實際應用:語音識別

1、馬爾可夫鏈

馬爾科夫提出了一種假設:隨機過程中各個狀態St的概率分佈,只與它的前一個狀態St-1有關。比如天氣預報,硬性假定今天的氣溫只跟昨天有關而與前天無關。這個假設被命名爲馬爾科夫假設,符合這個假設的隨機過程則被稱爲馬爾科夫過程,也稱爲馬爾可夫鏈。

2、轉移概率

從一種狀態變換爲另一種狀態的概率,就是轉移概率。
舉例: 比如今天天氣很潮溼,明天下雨的概率爲90%,不下雨的概率爲10%,則從“天氣潮溼”——>“明天下雨”的轉移概率就是90%。

3、隱含馬爾可夫模型

隱含馬爾可夫模型是馬爾可夫鏈的一個擴展:任一時刻t的狀態St是不可見的。所以觀察者沒法通過觀察到一個狀態序列S1,S2,S3,…Sr來推測轉移概率等參數。但是,隱含馬爾可夫模型在每個時刻t會輸出一個符號Ot,而且Ot跟St相關且僅跟St相關。這個被稱爲獨立輸出假設。隱含馬爾可夫模型的結構如下:其中隱含的狀態S1,S2, S3,…是一個典型的馬爾可夫鏈。
個人理解: 現實生活中,很多事物會有正反兩面,我們能看到的往往只是正面(表面),但是真正能說明事物的其實是反面(裏面),但是我們只能得到正面無法得到反面,所以假設每一個反面對應的正面也是符合馬爾可夫鏈的。

二、信息的度量和作用

實際應用:NLP(自然語言處理)

1、信息熵

信息熵,也就是將信息的量(或價值)統計出來。
H(x) = E[I(xi)] = E[ log(2,1/P(xi)) ] = -∑P(xi)log(2,P(xi)) (i=1,2,…n)
舉例: 比如世界盃結束了,我一場都沒看過,我要從32支隊伍中猜測哪隻隊伍獲勝了,那對我來說“最後誰得了冠軍”這條信息的價值就是-A隊獲勝的概率log(A隊獲勝的概率)-B隊獲勝的概率log(B隊獲勝的概率)…
如果對我來說32支隊伍的獲勝概率都是一樣的,也就是1/32,那麼信息熵就是-32*(1/32)*log(1/32)=5

2、互信息(Mutual Information)

在這裏插入圖片描述
互信息,指的是兩個隨機事件的“相關性”的量化度量,就是在瞭解了其中一個Y的前提下,對消除另一個X不確定性所提供的信息量。
舉例: 假設年齡和有無孩子總共有4個樣本,分別是10歲:無孩子,30歲:有孩子,30歲:無孩子,40歲:有孩子。
那年齡和是否有孩子的互信息就是:
p(10歲,有孩子)*log(p(10歲,有孩子)/p(有孩子)*p(10歲))+ ==>計算結果爲0
p(10歲,無孩子)*log(p(10歲,無孩子)/p(無孩子)*p(10歲))+ ==>計算結果爲0.25
p(30歲,有孩子)*log(p(30歲,有孩子)/p(有孩子)*p(30歲))+ ==>計算結果爲0
p(30歲,無孩子)*log(p(30歲,無孩子)/p(無孩子)*p(30歲))+ ==>計算結果爲0
p(40歲,有孩子)*log(p(40歲,有孩子)/p(有孩子)*p(40歲))+ ==>計算結果爲0.25
p(40歲,無孩子)*log(p(40歲,無孩子)/p(無孩子)*p(40歲)) ==>計算結果爲0
加起來就是0.5
互信息的作用,主要運用在NLP(自然語言處理)的詞義上,比如同樣一個名詞,在A條件下的意思和B條件下的意思是完全不一樣的,只有通過計算上下文中其它詞語的個數,再結合這些詞語和該名詞之間的互信息,才能確定這個名詞到底是什麼含義。

三、圖論和網絡爬蟲

實際應用:NLP(自然語言處理)

1、圖論

簡單來說,圖論就是把物與物之間的關係用圖和線條結合並展示出來。
裏面有2種遍歷算法:
1)、廣度優先搜索(Breadth-First Search,簡稱BFS)
是指把與其直接相連的節點先走一遍,然後再依次再子節點中再遍歷一次。比如很多賣保險的,都會先從身邊人開始銷售,等身邊人銷售完了,再通過某個好友發展下線繼續來一遍。
2)、深度優先搜索(Depth-First Search,簡稱DFS)
一條路走到黑,走得通最好,走不通就換條路繼續走。

2、散列表(Hash Table,也叫哈希表)

是根據關鍵碼值(Key value)而直接進行訪問的數據結構。也就是說,它通過把關鍵碼值映射到表中一個位置來訪問記錄,以加快查找的速度。只要做好散列表,那麼查找的時間就只有O(1)

四、PageRank

實際應用:搜索引擎網頁排名

PageRank是Google所有引擎中網頁排名的算法。
當你在使用搜索引擎時,什麼內容會放在前面,什麼內容會放在後面呢?排除廣告不說,只有把用戶想要的東西放在前面,這樣用戶纔會喜歡上這個搜索引擎。PageRank的做法就是民主表決,比如有100個人搜索“數學之美”,有1000個網站與之有關,其中80個人認爲A網站符合自己的需求,那麼A的排名就最高。

五、如何確定網頁和查詢的相關性

實際應用:搜索引擎網頁查找
PageRank是用來對相關的網頁進行排名的算法,而TF-IDF則用來把相關聯的網頁給找出來。

1、TF(Term Frequency,詞頻)

比如一段文字有100個字,其中大數據出現3次,那麼它的tf就是0.03

2、IDF(Inverse Documnet Frequency,逆文本頻率指數)

當一個詞在很多網頁中都出現過,說明這個詞“不值錢”,比如“我”、“和”這種停用詞(stopwords),越專業的詞纔會在越少的詞中出現。
假設一個關鍵詞w在Dw個網頁中出現過,那麼Dw越大,w的權重越小,IDF就是來計算w的權重的。
公式爲log(D/Dw),其中D是全部網頁數
比如假定中文網頁數爲D=10億,其中包含專用詞“大數據”的網頁數爲200萬,即Dw=200萬,
則它的權重IDF=log(100000/200)=log(500)=8.96

3、TF-IDF

知道了TF和IDF,就可以計算出該網頁和搜索內容的相關性了。
比如我要搜“大數據和雲計算”,則TF-IDF的計算結果就是:
TF(大數據)*IDF(大數據)+TF(雲計算)*IDF(雲計算)

六、有限狀態機和動態規劃

1、有限狀態機(Finite State Machine)

實際應用:地址快速匹配(如快遞)
有限狀態機是一個特殊的有向圖,包括一些狀態(節點)和連接這些狀態的有向弧。
每一個有限狀態機都有一個開始狀態和一個終止狀態,以及若干中間狀態。每一條弧上帶有從一個狀態進入下一個狀態的條件。當其獲得一個輸入字符時,將從當前狀態轉換到另一個狀態,或者仍然保持在當前狀態。
比如:一串地址“上海市浦東新區春曉路100號”,當進行到“市”後,自動進入下一步“區”進行匹配,這樣就可以把地址進行快速的分解和匹配。

2、動態規劃(Dynamic Programming)

實際應用:地圖最短路徑
比如要找從北京到廣州的最短路線,假設北京到廣州之間有20個城市,那麼最傻瓜的做法就是把所有可能的線路看一遍,然後找到最優的,這樣的計算量是指數級的增長,明顯不可取。
動態規劃的方法,就是把北京和廣州之間橫切幾刀(比如3刀),從北往南數第一刀之上,假設有3個城市,分別是A、B、C,因爲要找到北京和廣州之間的最短路徑,不論如何總會經過A、B、C三個城市中間的一個(乘飛機的滾開!),那麼北京到A、B、C三個城市的最短路徑肯定也是包含在北京和廣州之間的最短路徑裏的。比如找到了北京和A的距離是最短的,然後在找城市A和第2刀之間的幾個城市中的最短路徑,以此類推,一直到廣州爲止,這樣的計算量大概是傻瓜辦法的萬億被之一。

七、餘弦定理和新聞的分類

實際應用:新聞分類
越是相似的文章,兩者之間的餘弦相似度就會越大,1是完全一樣,0是完全無關。餘弦相似度就是用來把文章之間的關係進行量化,進而做分類等動作。
在這裏插入圖片描述
讓我們先回到初中,回顧下餘弦定理(我知道你肯定不記得了!)
在這裏插入圖片描述
如果將三角形的兩邊b和c看成是兩個以A爲起點的向量,那麼上述公式等價於
cosA = <b, c> / |b| * |C|
其中,分母表示兩個向量b和c的長度,分子表示兩個向量的內積。

八、矩陣運算和文本處理中的兩個分類問題

實際應用:大數據處理

1、奇異值分解(Singular Value Decomposition,簡稱SVD)

之前有提到過根據餘弦定理來計算文章和詞之間的關聯性,但實際操作中,往往是成千上萬篇文章和幾十上百萬個詞的關聯性計算,這樣的話數據量會非常非常大。在這個矩陣中,每一行對應一篇文章,每一列對應一個詞,如果有N個詞,M篇文章,則得到一個M X N的矩陣。其中,第i行、第j列的元素aij,是字典中第j個詞在第i篇文章中出現的加權詞頻(比如用詞的TF-IDF值),比如M=1000000,N=500000,100萬乘50萬,即5000億個元素。
奇異值分解,就是把上面這樣一個大矩陣,分解成三個小矩陣相乘。
第一個矩陣X是對詞進行分類的一個結果。它的每一行表示一個詞,每一列表示一個語義相近的此類,或者簡稱語義類。這一行的每個非零元素表示這個詞在每個語義類中的重要性(或者說相關性),數值越大越相關。
第三個矩陣Y是對文本的分類結果。它的每一列對應一篇文章,每一行對應一個主題。這一列中的每個元素表示這篇文本在不同主題中的相關性。
中間的矩陣則表示詞的類和文章的類之間的相關性。
只要對關聯矩陣A進行一次奇異值分解,就可以同時完成近義詞分類和文章的分類。另外,還能得到每個主題和每個詞的語義類之間的相關性!

九、信息指紋及其應用

實際應用:唯一性判斷(識別盜版)

1、信息指紋

任何一段信息(包括文字、語音、視頻、圖片等),都可以對應一個不太長的隨機數,作爲區別這段信息和其他信息的指紋。只要算法設計得好,任意兩端信息的指紋都很難重複,就如同人類的指紋一樣。信息指紋在加密、信息壓縮和處理中有着廣泛的應用。
信息指紋的一個特徵是其不可逆性,即無法根據信息指紋推出原有信息。

2、僞隨機數產生器算法(Pseudo-Random Number Generator,簡稱PRNG)

通過該算法可以將任意很長的整數轉換成特定長度的僞隨機數。

3、基於加密的僞隨機數產生器(Cryptographically Secure Pseudo-Random Number Generator,簡稱CSPRNG)

常用的算法有MD5(很熟悉,有沒有!)或者SHA-1等標準。

十、最大熵模型

實際應用:NLP、金融等
論及投資,人們常說不要把所有的雞蛋放在一個籃子裏,這樣可以降低風險。在數學上,這個原理稱爲最大熵原理(The Maximum Entropy Principle)。

1、最大熵原理和最大熵模型

最大熵模型,就是要保留全部的不確定性,將風險降到最小。
最大熵原理指出,對一個隨機事件的概率分佈進行預測時,我們的預測應當滿足全部已知的條件,而對未知的情況不要做任何主觀假設。

2、香農第一定理

對於一個信息,任何編碼的長度都不小於它的信息熵。

十一、布隆過濾器

實際應用:名單過濾(如垃圾郵件識別)
布隆過濾器(Bloom Filter)是一個很長的二進制向量和一系列隨機映射函數。
假定存儲一億個電子郵件地址,先建立一個16億個比特位即兩億字節的向量,然後將這16億個比特位全部清零。對於每一個電子郵件地址X,用8個不同的隨機數產生器(F1,F2,…,F8)產生8個信息指紋(f1,f2,…,f8)。再用一個隨機數產生器G把這8個信息指紋映射到1-16億中的8個自然數g1,g2,…,g8。現在把這8個位置的比特位全部設置爲1。對這一億個電子郵件地址都進行這樣的處理後,一個針對這些電子郵件地址的布隆過濾器就建成了,見下圖。
在這裏插入圖片描述
現在,讓我們看看如何用布隆過濾器來檢測一個可疑的電子郵件地址Y是否在黑名單中。用相同的8個隨機數產生器(F1,F2…,F8)對這個地址產生8個信息指紋S1,S2,…,S8,然後將這8個指紋對應到布隆過濾器的8個比特位,分別是t1,t2…,t8。如果Y在黑名單中,顯然,t1,t2,…,t8對應的8個比特值一定是1。這樣,再遇到任何在黑名單中的電子郵件地址,都能準確地發現。

十二、貝葉斯網絡

實際應用:詞分類
每一個狀態只跟與其直接相連的狀態有關,而跟與它間接相連的狀態沒有直接關係,就是貝葉斯網絡。

十三、條件隨機場、文法分析及其他

實際應用:句法分析

1、文法分析

自然語言的句法分析(Sentence Parsing)一般是指根據文法對一個句子進行分析,建立這個句子的語法樹,即文法分析(Syntactic Parsing)。

2、條件隨機場

條件隨機場是隱含馬爾科夫模型的一種擴展,它保留了隱含馬爾科夫模型的特性(每個狀態的序列還是一個馬爾科夫鏈)。但條件隨機場是一種特殊的概率圖模型,這個圖中頂點代表隨機變量,頂點之間的弧代表相互的依賴關係,通常用概率來表述,比如:P(x1,y1)。它的特殊性在於,變量間遵循馬爾科夫假設,即每個狀態的轉移概率只取決於相鄰的狀態。這一點與貝葉斯網絡相同。不同在於條件隨機場是無向圖,貝葉斯網絡是有向圖。
大部分應用中,條件隨機場的節點分爲狀態節點的集合Y和觀察變量節點的集合X。整個條件隨機場的量化模型就是這兩個集合的聯合概率分佈P(X,Y)=P(x1,x2……xn,y1,y2……yn)
在這裏插入圖片描述

十四、期望最大化算法

實際應用:各種模型的核心
在一般性的問題中,如果有非常多的觀測數據(點),讓計算機不斷迭代來學習一個模型。首先,根據現有的模型,計算各個觀測數據輸入到模型中的計算結果,這個過程稱爲期望值計算過程(Expectation),或E過程;接下來,重新計算模型參數,以最大化期望值。這個過程爲最大化的過程(Maximization),或M過程。這一類算法就稱爲EM算法。
之前介紹的很多算法,其實都是EM算法,比如隱含馬爾科夫模型的訓練方法Baum-Welch算法,以及最大熵模型的訓練方法GIS算法。

十五、人工神經網絡(Artificial Neural Network)

實際應用:現在的AI大多就是是ANN

1、人工神經網絡的基本原理

人工神經網絡是一個分層的有向圖,第一層(一般圖中會展示爲最下方或最左方)用來接受輸入的信息,也稱爲輸入層。來自這些點的數值按照它們輸出的弧的權重,根據G=w0+X1W1+X2W2+…XnWn進行線性加權得到G,然後再做一次函數變化f(G),賦給第二層的節點Y。
第二層的節點照此將數值向後面傳遞,直到第三層節點,如此一層層傳遞,直到最後一層,最後一層又被稱爲輸出層。
在模式分類時,一個模型(圖像、語音、文字等)的特徵值(比如座標),從輸入層開始,按照上面的規則和公式一層層向後傳遞。最後在輸出層,哪個節點的數值最大,輸入的模式就被分在哪一類。
在人工神經網絡中,需要設計的部分只有兩個,一個是它的結構,即網絡分幾層、每層幾個節點、節點之間如何連接,等等;第二就是非線性函數f(
)的設計,常用的函數是指數函數,即
f(G)=e(G次方)

2、成本函數的原則

成本函數需要遵循這樣一個原則:既然人工神經網絡解決的是分類問題,那麼我們希望分完類之後,同一類樣本(訓練數據)應該相互比較靠近,而不同類的樣本應該儘可能地原理。

3、Google大腦

Google大腦,說穿了是一種大規模並行處理的人工神經網絡。
Google大腦採用人工神經網絡而不是其他機器學習的技術原因:通用性、穩定性和易並行化。
Google大腦採用了隨機梯度下降法(Stochastic Gradient Descent),這種算法在計算成本函數時不需要像梯度下降法那樣對所有的樣本都計算一遍,而只需要隨機抽取少量的數據來計算成本函數,這樣可以大大降低計算量,當然會犧牲一點準確性。
在現實生活中,真正能夠通用的工具在形式上必定是簡單的!

十六、大數據的威力

實際應用:Everywhere

1、切比雪夫不等式

19世紀俄國數學家切比雪夫研究統計規律中,論證並用標準差表達了一個不等式,這個不等式具有普遍的意義,被稱作切比雪夫定理,其大意是:
任意一個數據集中,位於其平均數m個標準差範圍內的比例(或部分)總是至少爲1-1/m2,其中m爲大於1的任意正數。對於m=2,m=3和m=5有如下結果:
所有數據中,至少有3/4(或75%)的數據位於平均數2個標準差範圍內。
所有數據中,至少有8/9(或88.9%)的數據位於平均數3個標準差範圍內。
所有數據中,至少有24/25(或96%)的數據位於平均數5個標準差範圍內
在這裏插入圖片描述

2、大數據的重要性

首先,只有當一些隨機事件的組合一同出現了很多次以後,才能得到有意義的統計規律嗎;其次,大數據的採集過程是一個自然的過程,有利於消除主觀性的偏差;當然,更重要的是,只有多維度的大數據才能讓那些原本有聯繫,但似乎又聯繫不太緊密的事件反覆出現,然後發現新的規律。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章