1.整體來說,這本書到底在談些什么?
談數學知識在計算機中的實際應用,還有精妙的數學方法。
2.作者細部說了什么,怎么說的?
作者細部介紹了現實世界關于信息的問題(現象),進而用數學模型描述,細節上也說明了運用的數學方法。
3. 這本書內容真實嗎?說得有道理嗎?是全部有道理,還是部分有道理?
真實,有道理。作者在書中介紹的內容都已在實際中運用,不是假設和推理。
4. 這本書跟你有什么關系?這究竟有什么意義?
這本書闡述了看似無用的數學知識,在某些方面發揮了強大的作用,真真實實地向我展示了“數學之美”。對我來說,我更了解了數學在計算機中的實際應用,數學在計算機中很重要,到底重要在哪里?書中提供了一部分有力的答案。
這篇讀書筆記應該怎么寫?
第一,我要重新整合篇章結構,聚合相同的主題。第二,我要記下在那些美麗的數學方法。
這本書的結構是怎樣的?
各章在書中相對時獨立的,但是又有著相同的主題——自然語言處理、搜索引擎等。各章的主題都是介紹一個數學方法,它們往往顯得“簡單”,卻又很強大,作者說這就是“數學之美”。我認為,本書的第一個主題是自然語言處理,第二個是搜索引擎,第三個是應用到各個地方的技術,第四個我分為人物專題。
第一部分——自然語言處理
- 自然語言處理的歷史——人們最先想到的方法是讓計算機像人一樣了解自然語言的語法,進而“讀懂”自然語言,經過了十幾年后,那些基于文法規律的模型卻被新出現的基于統計模型輕易地打敗了。基于文法規律的模型有什么問題呢?——1.人類自然語言的規則太多,“特例”也很多,要用人工完善這些特例是一件工作量非常大的工作,導致這個模型的進步緩慢。2.一個簡單的句子都可以分析出一個復雜的語法樹,而復雜句子的語法樹甚至在一張紙上也畫不下,后期處理的計算量自然非常大。
-
基于統計的模型為什么那么強大?或者說,它為什么又更合理?——要解答這個問題,首先要弄清一個問題——自然語言的本質是什么?自然語言從本質上來說是一種上下文相關的信息,講到這里,不得不介紹信息傳播模型。
信息傳輸模型.png - 人們簡化了語言的單詞(一個單詞多種意思)和發音(一種發音多種意思),然后用上下文去消除歧義。——計算機是否也能用這種方法消除歧義?如果一個句子沒有歧義,那么自然就可以得到它的意思。答案是可以,方法就是上下文相關特性的統計語言模型。統計語言模型之所以強大就是因為它與自然語言的特性更相符,也更適合計算機處理。
- 統計語言模型的原理是什么?簡單來說,“一個句子是否合理,就看他的可能性大小如何。”這個概率的計算方法可以搜索“二元文法模型”得到更細致的公式。
- 要想實現二元模型必須想要實現分詞,方法也是運用統計語言模型,假設一個句子有幾種分詞結果,ASDFGGG、DJFJDHDK、FJDKJFJDND,運用統計語言模型的方法就可以計算這種分詞方法的可能性,無疑可能性最大的結果是最優的。為了簡化運算,需要用到“維特比算法”。
- 這樣,我們實現了讓機器“理解”一個句子。那么,我們能否做到讓機器去理解一段語音,顯然答案是可以的。語音識別的過程相當于觀測到一段連續信號,然后用它去推測原信號表達的意思。這時候我們就得到了一概率公式,這個公式可以用“隱含馬爾科夫模型”近似求解。
- 翻譯的二義性怎么解決?——信息熵——信息的作用是什么,信息的作用是消除不確定性,信息熵一方面就是這種不確定性的度量——想要消除或降低一段信息的不確定性就要引入一段新的信息去補充,然而,“美國大選的獲勝者”引入“你的年齡”這個信息,并沒有能有效降低不確定性。那么如何衡量兩段信息的相關程度?——“互信息”“ 互信息(Mutual Information)是信息論里一種有用的信息度量,它可以看成是一個隨機變量中包含的關于另一個隨機變量的信息量,或者說是一個隨機變量由于已知另一個隨機變量而減少的不肯定性。”——當我們有足夠的信息,我們就可以算出互信息。
第二部分——搜索引擎
- 互聯網上有那么多的網頁,為什么搜索引擎可以在很短的時間內找到大量的結果?——建立索引,那么索引是如何工作的呢?——我們可以用一個很長的二進制數表示一個關鍵詞是否出現在某篇文本里,比如0001010010111001中的1表示哪些文章出現了這個關鍵詞,而010101001101表示了哪些文章出現了另外的一些關鍵詞,對它們進行簡單的布爾運算AND,我們就能得到要找的結果。【問題:為什么不是建立了一個關鍵詞表,然后每篇文章據此生成一個二進制數,然后用關鍵詞相應的二進制數進行匹配?例如——關鍵詞:0101000000 文獻:0101010111,有0為0,其余情況為1(布爾運算AND)可以嗎?】
- 那么多的網頁,要做以上的操作,我至少要先把它們下載回來吧,那么如何保障下載回來的網頁沒有重復?——圖論中的遍歷算法,廣度優先搜索(BFS)和深度優先搜索(DFS),簡單來說,BFS就是先搜索每個節點直接相連的其他節點,DFS就是順著一個節點的相連的節點走到底,再返回上一層繼續相同操作。書中的解釋簡單易懂,還有圖例說明。那么用什么工具去實現這樣的操作?——網絡爬蟲,同時,人們用哈希表記錄網頁是否下載過。那么哈希表又是怎樣記錄這些內容?這篇文章的解釋很不錯。
- 那好,我們能讓用戶通過搜索得到很多的網頁,現在我們要考慮的問題是如何能讓搜索最相關的網頁和質量最高的網頁顯示在最前面,畢竟,沒有用戶會想得到滿是廣告的搜索結果吧。Google的PageRank算法就是為了解決這個問題而生,它根據其他網頁對這個網頁的信息,例如其他網頁對這個網頁的鏈接,來確定它是否值得依賴,但事情沒有那么簡單,不同質量的網站理所當然有不同的權重,要計算這個“質量”又要先知道排名,這就變成了一個循環。那么如何解決?——二維矩陣相乘,這個算法最終實現的效果是無論如何取排名的初始值,都能保證結果向真實值收斂。為了解決計算量太大的問題,還要用到一種叫做“稀疏矩陣運算”的技巧。我們得到了哪些網頁是比較有價值的結果,但是我們如何確定哪些是用戶需要的內容?——TF-IDF(詞頻-逆文本指數)
- 防作弊問題,作弊方法:重復關鍵詞,引用鏈接。第一種方法作者說是很好解決的,第二種方法也可以用數學的方法解決。
- 結果的權威度——不同的信息源對不同的信息有不同的權威,
第三部分——各種技術
- 地址分析——有限狀態機,有限狀態機是一種特殊的有向圖,有限狀態機只能進行模糊匹配,于是又有了基于概率的有限狀態機,
- 全球導航——動態分析,在圖論中,一個抽象的圖包括一些節點和連接他們的弧,如何考慮每條弧的權重,這個圖是加權圖,關于這個動態規劃,書中有很精彩簡單易懂的描述,但以我的理解無法更簡潔地復述了,原理是“將尋找全程最短的路線分解為一個個尋找局部路線的小問題。”
- 新聞分類——“計算機的本質上只能做快速運算,為了讓計算機能夠“算”新聞”(而不是讀新聞),就要求我們先把文字的新聞變成一組可計算的數字,然后再設計一個算法來算出任何兩篇新聞的相似性。“——具體做法就是算出新聞中每個詞的TF-IDF值,然后按照詞匯表排成一個向量,我們就可以對這個向量進行運算了,那么如何度量兩個向量?——向量的夾角越小,那么我們就認為它們更相似,而長度因為字數的不同并沒有太大的意義。——如何計算夾角,那就用到了余弦定理(公式略)。——如何建立新聞類別的特征向量,有兩種方法,手工和自動生成。至于自動分類的方法,書本上有介紹,我這里就略過了。很巧妙,但是我的篇幅肯定是放不下的。除余弦定理之外,還可以用矩陣的方法對文本進行分類,但這種方法需要迭代很多次,對每個新聞都要兩兩計算,但是在數學上有一個十分巧妙的方法——奇異值分解(SVD)。奇異值分解,就是把上面這樣的大矩陣,分解為三個小矩陣的相乘。這三個小矩陣都有其物理含義。這種方法能夠快速處理超大規模的文本分類,但是結果略顯粗陋,如果兩種方法一前一后結合使用,既能節省時間,又提高了精確性。
//簡書的投稿推薦無疑也用到了文本分析,不過是比較簡單的文本分析算法。
- 信息指紋——網頁本身太長,儲存5000億個網址就要50TB,而且對字符串的查找又比較慢,所以一種算法——偽隨機數產生器算法就產生了,它能把任意長度的整數轉化為特定長度的隨機數,這樣爬蟲就能更快地識別一個網頁是否下載過。cookie也是一種信息指紋。書中還介紹了幾種信息指紋的用法,①判斷兩個集合是否相同,②判斷集合是否基本相同。③判斷文本是否相同。
- 視頻的反盜版——視頻中關鍵幀才是連續的圖像,其他幀儲存與關鍵幀的差異值,用信息指紋處理這些關鍵幀,再比對是否相同,就知道了是否盜版。
- RSA算法——這個算法用公鑰加密信息,而用私鑰解碼,公鑰可以公開,但是只有知道私鑰的人才能解碼,而且也不能從公鑰反推出私鑰(理論上可以,但是計算量十分巨大),這個算法幾乎可以說建立了互聯網安全的基礎,2016年圖靈獎就頒發給了在互聯網加密做出杰出貢獻的兩位科學家。拓展閱讀。
- 拼音輸入法的數學原理——我認為還是閱讀原文為好。
第四部分——人物專題
- 賈里尼克——作者用一篇文章介紹他,我看到的是——少年普通,拿到MIT的全額獎學金——提出厲害的算法,在大公司IBM領導研究室,取得優秀成果——暮年另一所大學在信息處理領域取得全球領先地位——生活簡樸。
- 阿米特·辛格博士——作者這篇文章主要介紹辛格博士做事情的哲學,先用最簡單的辦法解決80%的問題,剩下的再慢慢解決,這種做法避免了開發大而全的功能導致的工期過長問題,我認為在實際中是更實用的。
- 馬庫斯與他的弟子們——馬庫斯推動了統計方法在自然語言處理方面的應用,建立標準語料庫。另外介紹了三個他的學生的成績。
思維導圖
讀后感
這本書在2月25號從第三章開始看,到28號看完,大約兩百七十多頁,我看這么快一方面是我跳過了我都不懂的延伸閱讀部分,因為讀懂那部分必須一些我并沒有掌握的知識;另一方面則是作者的講解非常的透徹,深入淺出,即使對相關知識了解不深,也能讀懂作者的內容。我想,我的這篇讀書筆記是斷然寫不好,因為書中最精彩的部分,關于數學的那部分,恰恰是我不能從讀書筆記中表達出來的部分。所以我的這篇讀書筆記,是有很大的不足的,在于那些缺乏的公式和解釋。除了上面我提到的技術,作者還介紹了其他的技術和數學。
其他作者介紹了的技術和數學
- 布隆過濾器
- 貝葉斯網絡
- 條件隨機場和文法分析
- 維特比算法
- CDMA技術
- 期望最大化算法
- 邏輯回歸模型
- 分治算法
- 人工神經網絡
- 大數據
- NP問題
對于那些理科專業的學生,特別是數學和計算機,這本書是非常有益的,這本書適合想了解自然語言處理的專業人士,同時,這本書也適合那些并不了解這方面知識的人們,因為作者的描寫真的做到了淺白易懂。最后,我建議有興趣的朋友可以買一本《數學之美》,親自觀察數學的美麗之光。
題外話
歡迎任何想了解這本書的朋友和我交流,也歡迎指出我文章中的錯誤,良好的互動能幫助我們互相進步,: D