本書的最大特色就是理論說明深入淺出、通俗容易,入門門檻不高,理論與實作並重。降低學習門檻是我們主要的努力方向。特別是廣大的工程技術人員,無論是在職還是學生,進入機器學習領域不外乎兩條路。
第一條路是從原始程式碼學習,輔助一些書籍資料。大多數軟體設計人員都做過幾年原始程式解析工作,原始程式解析這條路是比較辛苦的,但一旦掌握,就會形成一種條件反射。程式設計師寧讀取原始程式也不願意讀數學公式,這是普遍現象。筆者認為,隨著機器學習一步步走向工程實作,這部分人在讀者群中應佔絕大部分。
為了大幅地降低學習的難度,首先在內容上,我們以大量的文字描述來說明重要的定理和公式,盡可能在數學推導過程中增加充分的文字解釋,消除初學者的了解障礙。其次,我們將原始程式、公式和文字解釋對照起來,使初學者在閱讀原始程式和文字解釋的同時,也能夠輕鬆了解演算法的數學原理,使他們意識到數學分析並不遙遠,了解起來並不困難。最後,我們使用向量程式設計的設計方式,這種方式的優勢是可以部分地將數學公式直接對映到程式上,程式簡潔,想法清晰,學習效率很高。三管齊下,使初學者能多角度加深演算法概念的了解,在實作應用中做到舉一反三。
第二條路是從數學入手,一般針對研究所或科學研究院校的研究人員。他們喜歡那種有一定的理論高度,看明白了拿來就可以講課或寫論文用的書籍。這部分讀者的特點是比較重理論,缺點是實作能力不強。本書可以透過豐富的演算法程式彌補他們在此方面的不足。
筆者翻譯過幾本國外的專業論文和書籍,也看過不少的本土經典。如果內容差異不大,從效率和接受程度上,看中文書籍要快很多,時間成本對任何一個人都是重要的;中文書籍的另一個優勢是作者與大多數的讀者都有相似的背景知識結構,因而沒有文化差異性,想法上很好了解,容易被讀者接受。本書內容多取材於實作,目標明確,針對性強,對讀者而言學習效率高。
本書內容及系統結構
本書的特點之一是從結構上闡明了研究機器學習理論和演算法的方法。最重要的不是數學,也不是這些演算法本身,而是思想的發展過程,這與之前所有的書籍有所不同。全書分為三條主線。
第一條主線是從第一代神經網路(線性分類器)、第二代神經網路(非線性)及其在預測領域的應用,到支援向量機,最後是深度學習。
從第5 章開始我們深入說明了感知器網路及Logisitic 網路的演算法及相關的理論基礎。第6 章,我們詳細介紹了三種典型的神經網路:BP 網路、SOM 網路、玻爾茲曼機網路。這兩章的內容主要集中在第二代神經網路的模型上。
■第8章我們從統計學習理論開始,深入探討了支援向量機的模型,並列出了文字分類的實例。支援向量機的出現結束了淺層機器學習演算法的大多數問題,使人工智慧走向了一個新階段。
■第9、10章我們詳細介紹了認知分層理論,並探討了人類神經系統的兩大重要機制:反覆運算和分層。由此引用了深度神經網路架構(深度學習),並以Theano 架構為中心介紹了GPU 運算的模型。深度學習架構中的演算法很多,我們介紹了多層感知器和旋積神經網路兩個演算法,作為讀者入門的基礎。
第二條主線是貝氏理論,從單純貝氏演算法到貝氏網,最後是隱馬克夫模型,這部分屬於智慧推理的範圍。
■第2章我們詳細介紹了單純貝氏演算法在文字分類中的應用。由於文字處理的大多數演算法都是以貝氏網為基礎的,而單純貝氏是其中最簡單的演算法,所以以此開篇。
■第11章,我們從隨機過程開始,層層深入,相繼介紹了馬可夫鏈、貝氏網路、隱馬克夫模型。最後,我們列出了隱馬克夫模型的重要應用——自然語言處理的詞性標記模組,並列出詳細的程式說明和結巴分詞及詞性標記應用。
最後一條主線是矩陣降維、奇異值分解(SVD)和PCA 演算法。因為演算法簡單,本書都使用真實案例說明。
■第4章,我們透過一個實例介紹了推薦系統的內容,並分析介紹了協作過濾理論中的兩個重要演算法:KMeans 和SVD 隱語義分析。我們不僅說明了SVD 的數學推導,而且列出了手動計算的程式。
■第9章,我們說明了主成分分析(PCA)的基本原理和演算法,並透過實例說明,列出了PCA 的演算法實現和監測評估。
■第3、9 章,我們介紹了決策時演算法的發展歷史,以及各個歷史時期的代表演算法——ID3、C4.5、CART、AdaBoost,並列出基本原理和程式實現。
目前機器學習主要由這三條主線貫穿始終,本書著力於說明這三條主線的理論發展、思想變遷、數學原理,而實際演算法就是其上的一顆顆明珠。希望讀者在學習完本書之後,能夠將機器學習的各種理論融會貫通。