愛伊米

《機器學習-原理、演算法與應用》出版了

為什麼要寫本書?

本書的前身為《機器學習與應用》,雷明著,清華大學出版社。在第一版的基礎上做了大幅度最佳化,並經過反覆校對,最終形成此書。由於之前是第一次寫書,缺乏經驗,導致了書的內容過多,裡面存在大量開源庫程式碼佔據篇幅。這一版改進了這些問題,且增加了不少新的內容,更為系統和全面,品質也得到了不小的提升。

《機器學習-原理、演算法與應用》出版了

作為公眾號文章的早期的主要作者,我之前寫了大量閱讀量深受大家喜愛的文章,如:

其他的不再一一列舉。這些文章有一個共同的特點:脈絡清晰,深入淺出,一針見血。它們將一些複雜的理論和演算法用很淺顯易懂的方式表達出來。這是我寫作的初衷,讀者真正需要的是能看懂,而不是看不懂!

由於時間倉促,且不是正規的出版物,這些文章的質量無法得到完全的保證。為了讓內容更為系統,準確,幫助大家學好機器學習與深度學習,我一直有寫一本機器學習教材的想法。但是,市面上已經有不少這方面的經典教材,國外的如《PRML,Pattern Recognition and Machine Learning》,《ESL,The Elements of Statistical Learning》,《Pattern Classification》,《MLAPP,Machine Learning-A Probabilistic Perspective》,《Deep Learning》。國內的有大家耳熟能詳的《機器學習 西瓜書》以及《統計學習方法》。這些經典教材經過了市場檢驗,其質量之高,是毋庸置疑的!既然已經有這麼多經典教材,還有“重複造輪子”的必要嗎?

筆者的回答是有必要。這裡面國外的經典教材,筆者當年基本上都讀過,國內的教材,也大致翻了一遍。作為一個過來人,我覺得這些教材在如下方面還可以做出改進:

1。內容是否系統性全面,是否老化。仔細讀過這些教材的讀者會發現,要真正做到這一點並不容易。機器學習和深度學習最近幾年發展很快,新方法和理論層出不窮。若非頻繁的更新,經典的教材要跟上時代的步伐絕非易事。另外,由於作者自己的知識面和偏好,能夠全面覆蓋機器學習和深度學習主要演算法的書屈指可數。當然,是否要在一本書裡同時講機器學習和深度學習也是有爭議的。

2。表述是否淺顯易懂而又不失深度。在這方面,PRML堪稱優秀代表,作者語言樸實易懂,將各種演算法和理論闡述的非常清晰。而有的教材,看上去則晦澀難懂,尤其是對初學者。

3。對理論的講述是否細緻深入。這一點的優秀代表是《統計學習方法》和《PRML》,《ESL》以及《MLAPP》。要將演算法的推導和證明做的很細,是非常耗費時間和精力的。

4。對實際的應用是否有系統性的闡述。要知道,人工智慧,乃至整個計算機科學,是偏實踐和應用的學科。很多讀者在學完機器學習之後並不知道怎麼用的。而正式的教材,一般也不提及實際應用。這會造成很多困惑:這個演算法到底有什麼用?應該怎麼用?

筆者發現,市面上能同時滿足這幾點的經典教材目前還空缺,因此下定決心,寫出一本系統而全面,讓讀者能夠讀懂,且知道怎麼用的教材來。事實上,這一計劃在2014年就開始了,本書的部分內容也始於這一年。筆者深感自己功力有限,為了不班門弄斧,在寫此書之前閱讀了大量經典論文,有不少都經過了反覆推敲和錘鍊。寫書所耗費的時間和精力大幅度的超出了我的預期。

為什麼要選擇這本書?

本書適合作為高等學習本科,研究生的機器學習和深度學習教材,也可作為人工智慧領域研發人員的參考書。作為一本機器學習、深度學習入門與提高,尤其是入門的教材,在筆者看來,需要具備以下特點:

1。內容全面系統。作為教材,對一個領域的闡述必須是全面而系統的,而非支離破碎的知識點。本書做到了這一點,內容包括了有監督學習,無監督學習,強化學習的核心演算法,共計54種。內容的組織合理,條理清晰。結合SIGAI的“機器學習演算法地圖”,“深度學習演算法地圖”使用,效果更佳。如果完整的學習本書,可以讓你對機器學習和深度學習有全面而系統的理解。為了讓讀者理解數學公式,本書特意在第2章安排了數學知識的講解。

2。深入淺出。寫書的目的是讓讀者能夠看到,且更容易看懂,即將複雜的問題簡單化,而不是相反。本書的內容在深度上與經典教材相當,在表述上下足了功夫,用淺顯易懂的語言將複雜的機器學習演算法闡述清楚。對於這一領域公認的難以理解的點,如SVM,EM演算法,反向傳播演算法,流形學習等有非常清晰而易懂的講述。化抽象為具體,變複雜為簡單。對於很多關鍵點,一針見血,直指問題的本質。這是一本讀者真正能夠讀懂的機器學習教材。

3。理論講述詳細。對主要的機器學習演算法和理論,從思想起源講起,有詳細的推導和證明,很多內容是市面上的教材所不曾有的。筆者親手推導了幾乎所有公式,證明了大量的核心結論。為了讓讀者對演算法的實現不再困惑,對實現時的要點有系統性的闡述。

4。系統的闡述了具體應用。對主要演算法在機器視覺,語音識別,自然語言處理等領域的應用有詳細的闡述,幫助讀者理解演算法的使用,養成實際建模的能力。

7。參考文獻齊全。各章均列出了主要的參考文獻,供讀者進一步閱讀。

對於有意向將本書作為教材的高校,我們將在後續免費提供習題集和配套PPT。

《機器學習-原理、演算法與應用》出版了

本書的目錄

下面列出這本書的目錄,供大家參考,全書共397頁,23章。由基本概念與數學知識,主要的機器學習演算法與理論,工程實踐問題3部分構成。第一部分介紹了機器學習領域的基本概念與所需的核心數學知識點。第二部分內容含括了有監督學習,降維,聚類,半監督學習,強化學習的核心演算法。第三部分內容講述了工程實踐中的若干重要問題。

第一部分基本概念與數學知識

第1章機器學習簡介3

1。1機器學習是什麼3

1。1。1一個簡單的例子3

1。1。2為什麼需要機器學習5

1。2典型應用7

1。2。1語音識別7

1。2。2人臉檢測8

1。2。3人機對弈9

1。2。4機器翻譯10

1。2。5自動駕駛11

1。3發展歷程11

1。3。1歷史成就11

1。3。2當前進展12

1。4關於本書13

參考文獻13

第2章數學知識15

2。1微積分和線性代數15

2。1。1導數15

2。1。2向量與矩陣17

2。1。3偏導數與梯度19

2。1。4雅可比矩陣20

2。1。5Hessian矩陣21

2。1。6泰勒展開22

2。1。7行列式22

2。1。8特徵值與特徵向量23

2。1。9奇異值分解24

2。1。10二次型24

2。1。11向量與矩陣求導24

2。2最最佳化方法25

2。2。1梯度下降法25

2。2。2牛頓法26

2。2。3座標下降法27

2。2。4拉格朗日乘數法28

2。2。5凸最佳化28

2。2。6拉格朗日對偶32

2。2。7KKT條件34

2。2。8擬牛頓法35

2。2。9面臨的問題36

2。3機率論37

2。3。1隨機事件與機率37

2。3。2條件機率37

2。3。3隨機變數38

2。3。4數學期望與方差39

2。3。5隨機向量39

2。3。6最大似然估計40

參考文獻41

第3章基本概念42

3。1演算法分類42

3。1。1監督訊號42

3。1。2分類問題與迴歸問題43

3。1。3判別模型與生成模型45

3。1。4強化學習45

3。2模型評價指標46

3。2。1精度與召回率46

3。2。2ROC曲線46

3。2。3混淆矩陣48

3。2。4交叉驗證48

3。3模型選擇48

3。3。1過擬合與欠擬合48

3。3。2偏差與方差分解49

3。3。3正則化50

參考文獻52

第二部分主要的機器學習演算法與理論

第4章貝葉斯分類器55

4。1貝葉斯決策55

4。2樸素貝葉斯分類器56

4。2。1離散型特徵56

4。2。2連續型特徵57

4。3正態貝葉斯分類器57

4。3。1訓練演算法57

4。3。2預測演算法58

4。4實驗程式59

4。5應用61

參考文獻61

第5章決策樹62

5。1樹形決策過程62

5。2分類與迴歸樹63

5。3訓練演算法64

5。3。1遞迴分裂過程64

5。3。2尋找最佳分裂64

5。3。3葉子節點值的設定67

5。3。4屬性缺失問題67

5。3。5剪枝演算法68

5。3。6訓練演算法的流程69

5。3。7計算變數的重要性70

5。4實驗程式70

5。5應用71

參考文獻71

第6章k近鄰演算法72

6。1基本概念72

6。2預測演算法72

6。3距離定義73

6。3。1常用距離定義74

6。3。2距離度量學習74

6。4實驗程式75

6。5應用76

參考文獻76

第7章資料降維78

7。1主成分分析78

7。1。1資料降維問題78

7。1。2計算投影矩陣78

7。1。3向量降維81

7。1。4向量重構81

7。2流形學習81

7。2。1區域性線性嵌入82

7。2。2拉普拉斯特徵對映83

7。2。3區域性保持投影86

7。2。4等距對映87

7。2。5隨機近鄰嵌入88

7。2。6t分佈隨機近鄰嵌入89

7。3實驗程式90

7。4應用91

參考文獻91

第8章線性判別分析92

8。1用投影進行分類92

8。2投影矩陣92

8。2。1一維的情況92

8。2。2推廣到高維94

8。3實驗程式96

8。4應用96

參考文獻97

第9章人工神經網路98

9。1多層前饋型神經網路98

9。1。1神經元98

9。1。2網路結構99

9。1。3正向傳播演算法100

9。2反向傳播演算法101

9。2。1一個簡單的例子101

9。2。2完整的演算法105

9。3實驗程式109

9。4理論解釋110

9。4。1數學性質110

9。4。2與神經系統的關係111

9。5面臨的問題111

9。5。1梯度消失111

9。5。2退化111

9。5。3區域性極小值111

9。5。4鞍點111

9。6實現細節問題112

9。6。1輸入值與輸出值112

9。6。2網路規模112

9。6。3啟用函式112

9。6。4損失函式113

9。6。5權重初始化113

9。6。6正則化113

9。6。7學習率的設定114

9。6。8動量項114

9。7應用114

參考文獻115

第10章支援向量機118

10。1線性分類器118

10。1。1線性分類器概述118

10。1。2分類間隔118

10。2線性可分的問題119

10。2。1原問題119

10。2。2對偶問題120

10。3線性不可分的問題123

10。3。1原問題123

10。3。2對偶問題123

10。4核對映與核函式126

10。5SMO演算法129

10。5。1求解子問題129

10。5。2最佳化變數的選擇132

10。6多分類問題133

10。7實驗程式134

10。8libsvm簡介136

10。8。1求解演算法137

10。8。2庫的使用140

10。9應用142

參考文獻143

第11章線性模型145

11。1logistic迴歸145

11。1。1第一種表述145

11。1。2第二種表述147

11。1。3L2正則化原問題148

11。1。4L2正則化對偶問題151

11。1。5L1正則化原問題152

11。1。6實驗程式154

11。2線性支援向量機156

11。2。1L2正則化L1loss SVC原問題156

11。2。2L2正則化L2loss SVC原問題156

11。2。3L2正則化SVC對偶問題157

11。2。4L1正則化L2loss SVC原問題158

11。2。5多類線性支援向量機158

11。2。6實驗程式160

11。3liblinear簡介160

11。3。1求解的問題161

11。3。2庫的使用161

11。4softmax迴歸162

11。5應用164

參考文獻165

第12章隨機森林166

12。1整合學習166

12。1。1隨機抽樣166

12。1。2Bagging演算法167

12。2隨機森林概述167

12。3訓練演算法167

12。4變數的重要性168

12。5實驗程式169

12。6應用169

參考文獻169

第13章Boosting演算法171

13。1AdaBoost演算法171

13。1。1強分類器與弱分類器171

13。1。2訓練演算法172

13。1。3訓練誤差分析174

13。2廣義加法模型176

13。3各種AdaBoost演算法177

13。3。1離散型AdaBoost177

13。3。2實數型AdaBoost179

13。3。3LogitBoost180

13。3。4Gentle型AdaBoost181

13。4實現細節問題182

13。4。1弱分類器182

13。4。2弱分類器的數量182

13。4。3樣本權重削減183

13。5實驗程式183

13。6梯度提升演算法183

13。6。1梯度提升框架184

13。6。2迴歸問題185

13。6。3分類問題185

13。6。4XGBoost187

13。7應用——目標檢測189

13。7。1VJ框架的原理190

13。7。2模型訓練192

參考文獻193

第14章深度學習概論195

14。1機器學習面臨的挑戰195

14。1。1人工特徵196

14。1。2機器學習演算法197

14。2深度學習技術197

14。3進展與典型應用199

14。3。1計算機視覺200

14。3。2語音識別202

14。3。3自然語言處理202

14。3。4計算機圖形學203

14。3。5推薦系統203

14。3。6深度強化學習204

14。4自動編碼器204

14。4。1自動編碼器簡介204

14。4。2去噪自動編碼器205

14。4。3稀疏自動編碼器205

14。4。4收縮自動編碼器206

14。4。5多層編碼器206

14。5受限玻爾茲曼機206

14。5。1玻爾茲曼分佈206

14。5。2受限玻爾茲曼機結構207

14。5。3訓練演算法209

14。5。4深度玻爾茲曼機210

14。5。5深度置信網210

參考文獻210

第15章卷積神經網路218

15。1網路結構218

15。1。1卷積層219

15。1。2池化層222

15。1。3全連線層222

15。2訓練演算法223

15。2。1卷積層223

15。2。2池化層226

15。2。3隨機梯度下降法227

15。2。4遷移學習228

15。3典型網路228

15。3。1LeNet5網路228

15。3。2AlexNet網路229

15。3。3VGG網路230

15。3。4GoogLeNet網路231

15。4理論分析232

15。4。1反捲積運算232

15。4。2卷積層視覺化233

15。4。3理論解釋235

15。5挑戰與改進措施236

15。5。1卷積層236

15。5。2池化層236

15。5。3啟用函式237

15。5。4損失函式237

15。5。5網路結構237

15。5。6批次歸一化241

15。6實現細節242

15。6。1卷積層242

15。6。2啟用函式244

15。6。3內積層244

15。6。4損失層245

15。6。5求解器248

15。7應用——計算機視覺251

15。7。1人臉檢測251

15。7。2通用目標檢測254

15。7。3人臉關鍵點定位262

15。7。4人臉識別263

15。7。5影象分割265

參考文獻266

第16章迴圈神經網路270

16。1網路結構270

16。1。1迴圈層270

16。1。2輸出層271

16。1。3一個簡單的例子272

16。1。4深層網路272

16。2網路的訓練273

16。2。1一個簡單的例子273

16。2。2完整的演算法275

16。3挑戰與改進措施277

16。3。1梯度消失277

16。3。2長短期記憶模型278

16。3。3門控迴圈單元279

16。3。4雙向網路279

16。4序列預測問題280

16。4。1序列標註問題280

16。4。2連線主義時序分類281

16。4。3序列到序列學習285

16。5應用——語音識別287

16。5。1語音識別問題287

16。5。2GMM-HMM框架288

16。5。3深度模型288

16。6應用——自然語言處理291

16。6。1中文分詞292

16。6。2詞性標註293

16。6。3命名實體識別293

16。6。4文字分類294

16。6。5自動摘要296

16。6。6機器翻譯296

參考文獻298

第17章生成對抗網路302

17。1隨機資料生成302

17。2生成對抗網路結構303

17。2。1生成模型303

17。2。2判別模型304

17。3模型的訓練304

17。3。1目標函式304

17。3。2訓練演算法305

17。3。3理論分析306

17。4應用與改進307

17。4。1改進方案308

17。4。2典型應用311

參考文獻313

第18章聚類演算法314

18。1問題定義314

18。2層次聚類315

18。3基於質心的演算法315

18。4基於機率分佈的演算法316

18。4。1高斯混合模型316

18。4。2EM演算法317

18。5基於密度的演算法322

18。5。1DBSCAN演算法322

18。5。2OPTICS演算法324

18。5。3Mean Shift演算法326

18。6基於圖的演算法328

18。7演算法評價指標331

18。7。1內部指標331

18。7。2外部指標331

18。8實驗程式332

18。9應用332

參考文獻332

第19章半監督學習334

19。1問題假設334

19。1。1連續性假設334

19。1。2聚類假設334

19。1。3流形假設334

19。1。4低密度分割假設334

19。2啟發式演算法335

19。2。1自訓練335

19。2。2協同訓練335

19。3生成模型335

19。4低密度分割336

19。5基於圖的演算法336

19。6半監督深度學習337

參考文獻338

第20章隱馬爾可夫模型340

20。1馬爾可夫模型340

20。2隱馬爾可夫模型簡介343

20。2。1模型結構343

20。2。2中文分詞345

20。3估值問題345

20。4解碼問題347

20。5訓練演算法349

20。6應用352

參考文獻352

第21章條件隨機場353

21。1馬爾可夫隨機場353

21。1。1機率圖模型353

21。1。2馬爾可夫隨機場354

21。2條件隨機場概述355

21。2。1條件隨機場簡介355

21。2。2線性鏈條件隨機場355

21。3推斷演算法357

21。4訓練演算法359

21。5應用360

參考文獻360

第22章強化學習361

22。1強化學習簡介361

22。1。1問題定義361

22。1。2馬爾可夫決策過程362

22。2基於動態規劃的演算法366

22。2。1策略迭代演算法366

22。2。2價值迭代演算法368

22。3蒙特卡洛演算法369

22。3。1演算法簡介369

22。3。2狀態價值函式估計370

22。3。3動作價值函式估計371

22。3。4蒙特卡洛控制371

22。4時序差分學習372

22。4。1Sarsa演算法372

22。4。2Q學習373

22。5深度強化學習374

22。5。1深度Q網路375

22。5。2策略梯度演算法378

22。6應用381

參考文獻381

第三部分工程實踐問題

第23章工程實踐問題概述385

23。1實現細節問題385

23。1。1訓練樣本385

23。1。2特徵預處理386

23。1。3模型選擇386

23。1。4過擬合問題386

23。2安全性問題387

23。2。1對抗樣本387

23。2。2形成原因分析389

23。3實現成本問題390

23。3。1訓練樣本量390

23。3。2計算與儲存成本390

23。4深度模型最佳化391

23。4。1剪枝與編碼391

23。4。2二值化網路392

23。4。3卷積核分離396

參考文獻397

如何使用本書

學習本書需要讀者具有大學本科理工科的數學基礎,以及基本的程式設計知識。包括:

微積分/高等數學

線性代數

機率論

書中有大量涉及最最佳化方法,對於國內高校的大部分學生是沒有學過這門課的,但透過閱讀本書第2章,能夠有效彌補這些知識。

如果有至少一種程式設計語言的知識,已經資料結構和演算法的基礎知識,閱讀起來會更為順暢。要閱讀和修改本書的實驗程式則需要讀者掌握python語言程式設計。

對於要學機器學習或深度學習課程的同學,建議系統的閱讀本書,以保證能夠理解內容,知識系統。對於要實際使用機器學習或深度學習演算法的工程技術人員,可以根據自己的需要進行裁剪,閱讀所需的章節,以節約時間和精力。

作者簡介

雷明,2009年畢業於清華大學計算機系,研究方向為機器學習,機器視覺。曾發表論文數篇。畢業後曾就職於百度,任高階軟體工程師;zmodo/meshare,任CTO。有超過15年機器學習學術研究與產品研發經驗。SIGAI微信公眾號早期主要作者。

如何購買本書

本書已經在京東預售,購買連結為:

https://item。jd。com/12685964。html?dist=jd

由於水平有限,時間倉促,書中難免會有錯誤。本書的勘誤可以在:

免費獲取

文中所提及的深受人民群眾喜愛的機器學習演算法地圖和深度學習演算法地圖可以在:

免費獲取

致謝

本書在寫作和最佳化過程中收到了大量讀者和同事、同行的反饋。這本書的誕生凝聚了清華大學出版社白立軍老師的大量心血,得到了出版社領導和老師的大力支援。數位熱心讀者為本書審稿。上海交通大學計算機系嚴駿馳教授為本書作序,哈佛大學數學中心教授、丘成桐先生的弟子顧險峰教授,前優酷首席科學家李卓桓師兄,筆者的好友劉彬先生,師弟歐陽鵬博士,張振博士為本書寫推薦。

在此一併表示感謝!