數學之美

強推啊。javascript

永遠沒法知道機率論的利用會如此之大。html

摘要:java

不一樣的文字系統在記錄信息上的能力是等價的。算法

文字只是信息的載體,而非信息自己。瀏覽器

機器翻譯和語言識別,全都靠的是數學,更準確的是統計。服務器

20世紀60年代,基於喬姆斯基形式語言的編譯器技術獲得了很大的發展,計算機高級程序語言均可以歸納成上下文無關的文法,這是一個在算法上能夠在多項式時間內解決的問題。網絡

上下文無關算法能夠想看計算理論導論...機器學習

基於統計的語言處理的核心模型是通訊系統加隱含馬爾可夫模型。函數

統計語言模型:馬爾可夫假設:(二元模型)工具

          假設任意一個詞出現的機率只同它前面的詞有關。

  由於有了大量機讀文本,也就是專業人士講的語料庫,只要數一數Wi-1,Wi這對詞在統計的文本中先後相鄰出現了多少次,以及Wi-1自己在一樣的文本中出現了多少次,而後用兩個數分別除以語料庫的大小,便可獲得這些詞或者二元組的相對頻度。  根據大數定理,只要統計量足夠,相對頻度就等於機率。  如上是統計語言模型的理論。用來解決複雜的語音識別、機器翻譯等問題。

假定文本中的每一個詞Wi和前面的N-1個詞有關,而與更前面的詞無關。這樣當前詞wi的機率只取決於前面的N-1個詞 P(Wi-N+1,Wi-N+2,...,Wi-1).

 

 

 

這種假設被稱爲N-1階馬爾可夫假設,對應的語言模型稱爲N元模型。N=1的一元模型其實是一個上下文無關模型,也就是假定當前詞出現的機率與前面的詞無關。而在實際應用中最多的是N=3.

空間複雜度爲|v|的N-1次冪。|v|是一種語言詞典的詞彙量。

使用語言模型須要知道模型中全部的條件機率,稱之爲模型的參數。

若是用直接的比值計算機率,大部分條件機率依然是零,這種模型咱們稱之爲不平滑,在實際應用中,統計語言模型的零機率問題是沒法迴避的,必須解決。

訓練統計語言模型的藝術就在於解決好統計樣本不足時的機率估計問題。

古德提出在統計中相信可靠的統計數據,面對不可信的統計數據打折扣的一種機率估計方法,同時將折扣出來的那一小部分機率給予未看見的事件。有一個從新估算機率的公式。稱爲 古德-圖靈估計。原理爲:對於沒有看見的事件,咱們不能認爲它發生的機率就是0,所以咱們從機率的總量中,分配一個很小的比例給予這些沒有看見的事件。這樣一來,看見的那些事件的機率總和就要小於1了。所以,須要將全部看見的事件機率調小一點,至於小多少,要根據「越是不可信的統計折扣越多」的方法進行。

 

隱含馬爾可夫模型最初應用於通訊領域,繼而推廣到語音和語言處理中,成爲鏈接天然語言處理和通訊的橋樑。同時,隱含馬爾可夫模型也是機器學習主要工具之一。它須要一個訓練算法(鮑姆-韋爾奇算法)和使用時的編碼算法(維特比算法)。

 

信息的度量,信息熵,越小,代表數據越純。

信息量就等於不肯定性的多少。

 

若是沒有信息,任何公式或者數字的遊戲都沒法排出不肯定性。

幾乎全部的天然語言處理、信息與信號處理的應用都是一個消除不肯定性的過程。

熵描述一個元素的不肯定性大小。

 

搜索引擎的原理很簡單,創建一個搜索引擎大體須要作這樣幾件事:自動下載儘量多的網頁;創建快速有效的索引;根據相關性對網頁進行公平準確的排序。

 

布爾代數(0、1/ true、false)對於數學的意義是將咱們對世界的認識從連續狀態擴展到離散狀態。

 

現代物理的研究成果代表,咱們的世界實實在在是量子化的而不是連續的。咱們的宇宙的基本粒子數目是有限的,並且遠比古高爾(10的100次冪)要小得多。

 

搜索引擎會自動把用戶的查詢語句轉換成布爾運算的算式。

計算機作布爾運算時很是快的,最便宜的微機均可以在一個指令週期進行32位布爾運算,一秒鐘進行數十億次以上。

 

互聯網雖然很複雜,可是說穿了其實就是一張大圖而已,能夠把每個網頁看成一個節點,把那些超連接看成鏈接網頁的弧。能夠從任何一個網頁出發,用圖的遍歷算法,自動地訪問到每個網頁並把他們存起來。完成這個功能的程序叫作網絡爬蟲。在網絡爬蟲中,使用一個成爲哈希表的列表而不是一個記事本記錄網頁是否下載過的信息。

 

網絡爬蟲在工程上的實現?

1. BFS仍是 DFS?

網絡爬蟲對網頁遍歷的次序不是簡單的BFS或者DFS,而是有一個相對複雜的下載優先級排序的方法。管理這個優先級排序的子系統通常稱爲調度系統。由它來決定當一個網頁下載完成後,接下來下載哪個。固然在調度系統裏須要存儲那些已經發現可是還沒有下載的網頁url,它們通常存在一個優先級隊列裏。

 2.頁面的分析和url的提取。

當一個網頁下載完成後,須要從這個網頁中提取其中的URL,把它們加入到下載的隊列中。早期互聯網的網頁是由html實現的,提取url不難。如今使用一些腳本語言如javascript生成的。打開網頁的源代碼,url不是直接可見的文本,而是運行這一段腳本後才能獲得的結果。所以,網絡爬蟲的頁面分析就變得複雜不少,要模擬瀏覽器運行一個網頁,才能獲得裏面隱含的url。所以,須要作瀏覽器內核的工程師來寫網絡爬蟲中的解析程序,惋惜出色的瀏覽器內核工程師在全世界數量並很少。所以,若發現一些網頁明明存在,但搜索引擎就是沒有收錄,一個可能的緣由就是網絡爬蟲中的解析程序沒能成功解析網頁中不規範的腳本程序。

3.記錄哪些網頁下載過-url表

爲了防止一個網頁被下載屢次,須要在一個哈希表中記錄哪些網頁已經下載過。採用哈希表的好處是,判斷一個網頁的url是否在表中,平均只須要一次或者略多的查找。維護一張哈希表不現實,太大,其次,因爲每一個下載服務器在開始下載前和完成下載後都要訪問和維護這張表,以避免不一樣的服務器作重複的工做,這個存儲哈希表的服務器的通訊就成了整個爬蟲系統的瓶頸。

解決方案明確每臺下載服務器的分工,判斷url是否下載--》批處理。

 

網頁排名。

PageRank算法,在互聯網上,若是一個網頁被不少其餘網頁所連接,說明它受到廣泛的認可和信賴,那麼它的排名就高,這就是pagerank的核心思想。

網頁排名的高明之處在於它把整個互聯網看成一個總體來對待。這無心識中符合了系統論的觀點。相比之下,之前的信息檢索大多把每個網頁看成獨立的個體對待,大部分人當初只注意了網頁內容和查詢語句的相關性,忽略了網頁之間的關係。

pagerank算法二維矩陣,Amn表示第m個網頁指向第n個網頁的連接數。迭代進行收斂,算出排名值,值越大,越先顯示。因爲網頁之間連接的數量相比互聯網的規模很是稀疏,所以計算網頁的網頁排名也須要對0機率或者小几率事件進行平滑處理。網頁的排名是個一維向量,對它的平滑處理只能利用一個小的常數。

網頁排名的計算主要是矩陣相乘,這種計算很容易分解成多個小任務,在多臺計算機上並行。

 

肯定網頁和查詢的相關性。TF-IDF(term frequency/inverse document frequency)

若是一個關鍵詞只在不多的網頁中出現,經過它就容易鎖定搜索目標,它的權重也就應該大。分之,若是一個詞在大量網頁中出現,看到它仍然不很清楚要找什麼內容,所以它的權重就應該小.

所謂IDF的概念就是一個特定條件下關鍵詞的機率分佈的交叉熵。

 

地圖和本地搜索的最基本技術--有限狀態機和動態規劃

地址的識別和分析,地址的文法是上下文有關文法中相對簡單的一種,所以有許多識別和分析的文法,但最有效的是有限狀態機。關鍵要解決兩個問題,即經過一些有效的地址創建狀態機,以及給定一個有限狀態機後,地址字串的匹配算法。擔當用戶輸入的地址不太標準則須要模糊匹配,爲了實現這個目的,基於機率的有限狀態機,這種基於機率的有限狀態機和離散的馬爾可夫鏈基本上等效。

 

 

全球導航的關鍵算法是計算機科學圖論中的動態規劃的算法。加權圖。最短路徑。能夠將一個尋找全程最短路線的問題,分解成一個個尋找局部最短路線的小問題,這即是動態規劃的原理。

 

有限狀態機的應用遠不止地址的識別,今天的語音識別解碼器基本上是基於有限狀態機的原理。另外,它在編譯原理、數字電路設計上有着很是重要的應用。

DFA定義,5元組:起始狀態、有限狀態集合、輸入符號的集合、映射函數、終止狀態。

DFA主要是指從一個狀態到另外一個狀態是肯定的。詳情能夠參考計算理論導論。

有限狀態傳感器的特殊性在於,有限狀態機中的每一個狀態由輸入和輸出符號定義。

有限狀態機和動態規劃的應用很是普遍,遠遠不止識別地址、導航等地圖服務相關領域。它們在語音識別、拼寫和語法糾錯、拼音輸入法、工業控制和生物的序列分析等領域都有着極其重要的應用。

 

新聞的分類很大程度上依靠餘弦定理。新聞由計算機整理、分類和聚合各個新聞網站的內容,一切都是自動生成的,這裏面的關鍵技術就是新聞的自動分類。

計算機本質上只能作快速計算。爲了讓計算機可以算新聞,就要求咱們首先把文字的新聞變成能夠計算的一組數字,而後再設計一個算法來算出任意兩篇新聞的類似性。首先,怎樣找一組數字或者說一個向量來描述一篇新聞,新聞是傳遞信息的,而詞是信息的載體,新聞的信息和詞的語義是聯繫在一塊兒的。計算TF-IDF。而後用這個值組成特徵向量來描述新聞。每一篇新聞均可以對應這樣一個特徵向量,向量中每個維度的大小表明每一個詞對這篇新聞主題的貢獻。當新聞從文字變成了數字後,計算機就有可能算一算新聞之間是否類似了。

 

定性地認識到兩篇新聞的主題是否接近,取決於它們的特徵向量長得像不像。固然,咱們還須要定量地衡量兩個特徵向量之間的類似性。

向量的方向卻有很大的意義。若是兩個向量的方向一致,說明相應的新聞用詞的比例基本一致。所以,能夠經過計算兩個向量的夾角來判斷對應的新聞主題的接近程度。而要計算兩個向量的夾角,就要用到餘弦定理了。

 

在天然語言處理中,最多見的兩個分類問題分別是,將文本按主題歸類和將詞彙表中的字詞按意思歸類。這兩個分類問題均可以經過矩陣運算解決。

新聞分類乃至各類分類實際上是一個聚類問題,關鍵是計算兩篇新聞的類似程度。爲了完成這個過程,咱們要將新聞變成表明它們內容的實詞,而後再變成一組數,具體說是向量,最後求這兩個向量的夾角。當這兩個向量的夾角很小時,新聞就相關,當他們垂直或者說正交時,新聞則無關。可是由於要對全部新聞作兩兩計算,並且要進行屢次迭代,所以耗時特別長,尤爲是當新聞的數量很大,同時詞表也很大的時候,但願有一個方法,一次就能把全部新聞相關性計算出來,這個一步到位的辦法就是利用矩陣運算的奇異值分解(Singular Value Decomposition,SVD)。

SVD: 須要一個大矩陣來描述文章和詞的關聯性。在這個矩陣中,每一行對應一篇文章,每一列對應一個詞,若是有n個詞,m篇文章,那麼就是一個m*n矩陣。第i行、第j列第元素是字典中第j個詞在第i篇文章中出現的加權詞頻。奇異詞分解,就是把上面這樣一個大矩陣,分解成三個小矩陣相乘。三個矩陣有很是清晰的物理含義。第一個矩陣是對詞進行分類的一個結果。它的每一行表示一個詞,每一列表示一個語義相近的詞類,或者簡稱爲語義類。這一行的每一個非零元素表示這個詞在每一個語義類中的重要性或者說是相關性,數值越大越相關。最後一個矩陣時對文本的分類結果。它的每一列對應一個文本,每一行對應一個主題。這一列中每一個元素表示在這篇文本在不一樣主題中的相關性。中間的矩陣則表示詞的類和文章的類之間的相關性。

如何利用計算機進行奇異值分解....

 

 

任何一段信息,均可以對應一個不太長的隨機數,做爲區別它和其餘信息的指紋。只要算法設計的好,任何兩段信息的指紋都難以重複。信息指紋在加密、信息壓縮和處理中有着普遍的應用。

假設可以找到一個函數,將5000億個網址隨機地映射到128位二進制,也就是16個字節的整數空間,這樣,每一個網址就只須要佔用16個字節而不是原來的100個。這個16字節的隨機數,就稱做該網址的信息指紋。網絡爬蟲在下載網頁時,它將訪問過的網頁地址都變成一個個信息指紋,存到哈希表中,每當遇到一個新網址,計算機就計算出它的指紋,而後比較該指紋是否已經在哈希表中,來決定是否下載這個網頁。

網址的信息指紋的計算方法通常分爲2步。首先,將這個字符串當作是一個特殊的、長度很長的整數。接下來就須要一個產生信息指紋的關鍵算法:僞隨機數產生器算法,經過它將任意很長的整數轉換成特定長度的僞隨機數,這種是將一個數的平方掐頭去尾,去中間的幾位數,可是頗有可能重複。如今經常使用的梅森旋轉算法要好得多。

信息指紋的用途遠不止網址的消重,孿生兄弟是密碼。信息指紋的一個特徵是其不可逆性,也就是說,沒法根據信息指紋推出原有信息。這種性質,正是網絡加密傳輸所須要的。

 

判斷集合是否相同。最簡單的笨方法是對這個集合中的元素一一做比較,時間複雜度是N的平方。稍微好一點點是將兩個集合的元素分別排序而後順序比較,這樣時間複雜度是NlogN。處於同一個水平的方法是將第一個集合放在一張哈希表中,而後把第二個集合的元素一一和哈希表中的元素做對比。時間複雜度是N,可是額外使用了N的空間,代碼複雜,不完美。完美的方法是計算這兩個集合的指紋,而後直接進行比較。時間複雜度是N,不須要額外的空間。

好比在網頁搜索中,判斷兩個網頁是不是重複的。若是把兩個網頁的正文從頭比到尾,計算時間太長,也沒有必要。咱們只需對每一個網頁挑出幾個詞,這些詞構成網頁的特徵詞集合。而後計算和比較這些特徵集合的信息指紋便可。只需找出每一個網頁中IDF最大的幾個詞,而且計算出他們的信息指紋便可。若是兩個網頁這麼計算出來的信息指紋相同,它們基本上是相同的網頁。爲了容許有必定的容錯能力,google裏採用了一種特定的信息指紋--類似哈希。

 

視頻的匹配有兩個核心技術,關鍵幀的提取和特徵的提取。

 

信息指紋重複的可能性,很小。

信息指紋能夠理解爲將一段信息隨機地映射到一個多維二進制空間中的一個點。只要這個隨機函數作得好,那麼不一樣信息對應的這些點不會重合,所以這些二進制的數字就成了原來信息所具備的獨一無二的指紋。

 

 

當密碼之間分佈均勻而且統計獨立時,提供的信息最少。

公鑰、私鑰。

公開祕鑰方法保證產生的祕文是統計獨立而分佈均勻的。也就是說,不論給出多少份明文和對應的密文,也沒法根據已知的明文和密文的對應來破譯下一份密文。要破解公開祕鑰的加密方式,至今的研究結果代表最好的辦法仍是對大數N進行因數分解。

 

自從有了搜索引擎,就有了針對搜索引擎網頁排名的做弊。早期最多見的做弊方式是重複關鍵詞。

搜索引擎做弊從本質上看就如同對搜索排序的信息加入噪音,所以反做弊的第一條是要加強排序算法的抗噪聲能力,其次是像在信號處理中去噪音那樣,還原原來真實的排名。信號加入噪音至關於卷積的過程,去噪至關於解卷積的過程。從廣義上講,只要噪音不是徹底隨機而且先後有相關性,就能夠檢測到而且消除。事實上,徹底隨機不相關的高斯白噪音是很難消除的。

具體的反做弊作法是,針對和商業相關的搜索,採用一套抗干擾強的搜索算法,這就如同在高噪音環境下采用抗干擾的麥克風同樣。而對信息類的搜索,採用敏感的算法,就如同在安靜環境下采用敏感的麥克風,對輕微的聲音也能有很好的效果。那些賣連接的網站(做弊者發現一個網頁被引用的連接越多,排名就可能越靠前),都有大量的出鏈,而這些出鏈的特色和不做弊網站的出鏈特色大不相同。每個網站到其餘網站到出鏈數目能夠做爲一個向量,它是這個網站固有的特徵。既然是向量,咱們就能夠計算餘弦距離。咱們發現,有些網站到出鏈向量之間的餘弦距離幾乎爲1,通常來說這些網站一般是一我的建的,用於賣連接,改進pagerank算法,使得買來的連接不起做用。

 

在網絡搜索的研發中,在前面提到的單文本詞頻/逆文本頻率指數(TF-IDF)和網頁排名能夠看做是網絡搜索中的橢圓模型。

 

最大熵模型:不要把全部的雞蛋放在同一個籃子裏。至關於行星運動的橢圓模型。要保留所有的不肯定性,將風險降到最小。

 

最大熵原理指出,須要對一個隨機事件的機率分佈進行預測時,咱們的預測應當知足所有已知的條件,而對未知的狀況下不要作任何主觀假設。在這種狀況下,機率分佈最均勻,預測的風險最小。由於這時機率分佈的信息熵最大,因此人們稱這種模型叫最大熵模型。由於當咱們遇到不肯定性時,就要保留各類可能性。

 

對任何一組不自相矛盾的信息,這個最大熵模型不只存在,並且是惟一的。此外,它們都有同一個很是簡單的形式--指數函數。不少複雜的問題均可以採用最大熵模型,包括句法分析、語言模型和機器翻譯。

 

最大熵模型能夠將各類信息整合到一個統一到模型中。它有不少良好的特性:從形式上看,它很是簡單,很是優美;從效果上看,它是惟一一種能夠知足各個信息源的限制條件,同時又能保證平滑特性。

 

輸入法輸入漢字的快慢取決於對漢字編碼的平均長度,通俗的講,就是擊鍵次數乘以尋找這個鍵所須要的時間。

 

將漢字輸入到計算機中,本質上是一個將咱們人爲約定的信息記錄編碼--漢字,轉換成計算機約定的編碼,國際碼或者UTF-8的信息轉換過程。對漢字的編碼分爲兩部分:對拼音的編碼和消除歧義性的編碼。

 

語言和文字做爲通訊的編碼手段,一個重要目的是幫助思惟和記憶。若是一個輸入法中斷了人們的思惟過程,就和人的天然行爲不相符合。

 

香農第必定理指出,對於一個信息,任何編碼的長度都不小於它的信息熵。

 

拼音轉漢字的算法和在導航中尋找最短路徑的算法相同,都是動態規劃。

 

布隆過濾器

在平常生活中,包括設計計算機軟件時,常常要判斷一個元素是否在一個集合中。好比,在字處理軟件中,須要檢查一個英語單詞是否拼寫正確;在網路爬蟲裏,一個網址是否已訪問過。最直接的方法就是將集合中所有元素存在計算機中,遇到一個新元素時,將它和集合中的元素直接比較便可。通常來說,計算機中的集合是用哈希表來存儲的。好處是快速準確,缺點是耗費存儲空間。用哈希表實現的具體辦法是將每個email地址對應成一個8字節的信息指紋,而後將這些信息指紋存入哈希表,因爲哈希表的存儲效率通常只有50%。使用布隆過濾器的數學工具,只須要哈希表的1/8到1/4的大小就能夠解決一樣的問題。

布隆過濾器背後的數學原理在於兩個徹底隨機的數字衝突的機率很小,所以,能夠作很小的誤識別率條件下,用不多的空間存儲大量信息。常見的補救誤識別的方法是再在創建一個小的白名單,存儲那些可能被識別兀判斷信息。

 

貝葉斯網絡,加權網絡圖。假定在這個圖中馬爾可夫假設成立,即每個狀態只和與它直接相連的狀態有關,而和它間接相連的狀態沒有直接關係,那麼它就是貝葉斯網絡。

馬爾可夫鏈是貝葉斯網絡的特例,而貝葉斯網絡是馬爾可夫鏈的推廣。

使用貝葉斯網絡必須先肯定這個網絡的拓撲結構,而後還要知道各個狀態之間相關度機率。獲得拓撲結構和這些參數的過程叫作結構訓練和參數訓練,統稱訓練。從理論上講,它是一個NP完備問題,也就是說,對於如今的計算機是不可計算的。

 

貝葉斯網絡在圖像處理、文字處理、支持決策等方面有不少應用。在文字處理方面,語義相近的詞之間的關係能夠用一個貝葉斯網絡來描述。

相關文章
相關標籤/搜索