機器學習沒有捷徑,根據機器學習演算法地圖學習是最有效的一種方式!

Python_小屋發表於2018-12-21

《機器學習與應用》由清華大學出版社出版,是機器學習和深度學習領域又一高質量的入門與提高教材。該書系統、深入地講述機器學習與深度學習的主要方法與理論,並緊密結合工程實踐與應用。

 

640?wx_fmt=png

640?wx_fmt=png

https://item.m.jd.com/product/12504554.html

 

 

作者簡介

 

雷明,畢業於清華大學計算機系,研究方向為機器學習、計算機視覺。有超過12年的學術研究與產品研發經驗,曾發表論文數篇,具有深厚的理論功底與豐富的實踐經驗。其撰寫的系列技術文章在半年內累計閱讀量達數百萬次擅長用生動、形象的語言把複雜、抽象的理論和演算法解釋清楚。

 

適讀人群

 

計算機,電子,自動化,人工智慧等相關專業的本科生,研究生

從事人工智慧學術研究與產品研發的人員

對人工智慧、機器學習感興趣的人

 

本書優勢(附精彩試讀)

 

1、內容全面、系統,緊跟技術進步

完整的講述了機器學習、深度學習主要演算法以及在各個領域的典型應用,含括了學術界與工業界截止2017年初的新成果,緊跟時代步伐,彌補了市面上經典教材內容老化的缺憾。

 

精彩試讀:

影像超分辨的目標是由低解析度的影像得到高解析度的影像,傳統的做法大多采用純影像處理的技術。用機器學習的思路解決超分辨問題取得了更好的效果,卷積神經網路被成功地用於超分辨問題。文獻[7]提出了一種用生成對抗網路框架解決影像超分辨問題的方法,稱為超分辨生成對抗網路,簡稱SRGAN,能夠將縮小4倍以上的影像進行復原。

這種方法使用了一種新的損失函式,由對抗損失和內容損失兩部分構成。第一部分損失和標準生成對抗框架相同,通過一個判別模型,讓生成網路生成的超分辨影像和真實高解析度影像儘可能接近。

生成器卷積網路採用了深度殘差網路;判別模型也是一個層次很深的卷積網路,用於區分一張影像是真實的高解析度影像還是由生成器網路生成的影像。網路結構如下圖所示。

640?wx_fmt=png

影像超分辨的網路結構

假設低解析度影像為,這裡的目標是根據它估計出高解析度的影像,在訓練樣本中與低解析度影像相對應的真實高解析度影像為

 

 

2、推導論證清晰、深入、詳細

絕大部分核心演算法均有詳細的推導、證明過程,從問題本源、思想層面對演算法進行講解,讓讀者不僅知其然還知其所以然,真正掌握演算法的思想與精髓。在書的前部對機器學習所需的數學知識也做了系統的講解

 

精彩試讀:

目標函式的二階導數為,前面假設二階導數,從而保證目標函式是凸函式,即開口向上的拋物線,有極小值。如果,或者該怎麼處理?對於線性核或正定核函式,由於矩陣的任意一個上述子問題對應的二階子矩陣半正定,必定有。下面給出證明這個關於兩個變數的子問題的目標函式是凸函式,只需要證明它的Hessian矩陣是半正定矩陣。這兩個變數的目標函式的Hessian


10.3.2節證明整個對偶問題的Hessian矩陣正定的方法相同,如果是線性核,這個矩陣也可以寫成一個矩陣和它的轉置的乘積形式:


矩陣為訓練樣本特徵向量乘上類別標籤形成的矩陣。顯然這個Hessian矩陣是半正定的,因此必定有。如果是非線性核,因為核函式相當於對兩個核對映之後的向量做內積,因此上面的結論同樣成立。

無論本次迭代時的初始值是多少,通過上面的子問題求解演算法得到是在可行域裡的最小值,因此每次求解更新這兩個變數的值之後,都能保證目標函式值小於或者等於初始值,即函式值下降,所以SMO演算法能保證收斂。

 

 

3、核心演算法配有實現細節介紹,使用示例,知名開源庫程式碼分析

對大部分核心演算法的實現細節進行了介紹,並配有示例程式與知名開源庫原始碼分析,包括OpenCV,libsvm,liblinear,Caffe,這對需要使用、實現機器學習演算法的讀者至關重要

 

精彩試讀

求解器的實現是原始碼分析的核心,分為可信域牛頓法與座標下降法兩類。可信域牛頓法由TRON類實現,座標下降法由各個問題具體的求解函式實現。限於篇幅,在這裡只分析一部分求解器,其他的實現原理類似。

可信域牛頓法由類TRON實現,這個類為L2-正則化logistic迴歸和L2-正則化支援向量機的訓練提供支援。類定義如下:

class TRON

{

public:

// 傳入的是基類function的指標,可以使用上面兩種損失函式,eps為迭代精度

// max_iter為最大迭代次數,預設值為1000

TRON(const function *fun_obj, double eps = 0.1, int max_iter = 1000);

~TRON();

// 這是求解的介面函式

void tron(double *w);

void set_print_string(void (*i_print) (const char *buf));

private:

int trcg(double delta, double *g, double *s, double *r); // 共軛梯度法,被tron呼叫

double norm_inf(int n, double *x);

double eps; // 收斂精度

int max_iter; // 最大迭代次數

function *fun_obj; // 目標函式

void info(const char *fmt,...);

void (*tron_print_string)(const char *buf);

};

 

 

4、重要演算法的實際應用均有講解

核心演算法的實際應用都有介紹,對深度學習技術在計算機視覺、語音識別、自然語言處理、計算機圖形學等領域的應用情況有詳細而深入的介紹。這些內容能幫助讀者掌握演算法的實際應用方法、建模的思路。

 

在本書的核心演算法部分介紹了機器學習和深度學習的主要演算法,包括

線性迴歸

嶺迴歸

LASSO迴歸

貝葉斯分類器   

決策樹    

K近鄰演算法    

距離度量學習     

資料降維演算法,包括主成分分析、流形學習    

線性判別分析     

人工神經網路     

支援向量機     

logistic迴歸      

線性支援向量機     

softmax迴歸      

Bagging演算法與隨機森林    

boosting演算法

高斯混合模型    

隱馬爾可夫模型    

自動編碼器    

受限玻爾茲曼機     

卷積神經網路     

迴圈神經網路   

生成對抗網路      

聚類演算法,包括層次聚類、k均值演算法、DBSCAN演算法、OPTICS演算法、EM演算法、均值漂移演算法、譜聚類     

半監督學習,包括自訓練、協同訓練、生成模型、半監督支援向量機、基於圖的演算法、半監督深度學習     

強化學習,包括策略迭代演算法、價值迭代演算法、蒙特卡洛演算法、時序差分演算法、深度Q網路、策略梯度演算法

 

在工程實踐部分介紹了機器學習演算法在工程應用時面臨的問題與解決方案,包括

樣本的收集與標註

特徵工程

演算法與模型選擇

過擬合問題

安全性問題(對抗樣本)

計算與儲存成本問題

深度神經網路模型壓縮與優化

 

購買指南

目前本書已在京東上七五折包郵預售

640?wx_fmt=png

https://item.m.jd.com/product/12504554.html

 

目錄

全書由21章組成,共分為三大部分。第1~3章為第一部分,介紹機器學習的基本原理、所需的數學知識(包括微積分、線性代數、概率論和優化方法),以及機器學習中的核心概念。第4~20章為第二部分,是本書的主體,介紹各種常用的有監督學習演算法、無監督學習演算法、半監督學習演算法和強化學習演算法。對於每種演算法,從原理與推導、工程實現和實際應用3個方面進行講解,對於大多數演算法,都配有實驗程式。第21章為第三部分,介紹機器學習和深度學習演算法實際應用時面臨的問題,並給出典型的解決方案。此外,附錄A給出各種機器學習演算法的總結,附錄B給出梯度下降法的演化關係,附錄C給出EM演算法的推導。

 

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

 

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

參考文獻15

 

2章數學知識17

2.1微積分和線性代數17

2.1.1導數17

2.1.2向量與矩陣19

2.1.3偏導數與梯度21

2.1.4雅克比矩陣22

2.1.5Hessian矩陣23

2.1.6泰勒展開24

2.1.7行列式24

2.1.8特徵值與特徵向量25

2.1.9奇異值分解26

2.1.10二次型26

2.1.11向量與矩陣求導26

2.2最優化方法27

2.2.1梯度下降法27

2.2.2牛頓法28

2.2.3座標下降法29

2.2.4拉格朗日乘數法30

2.2.5凸優化30

2.2.6拉格朗日對偶34

2.2.7KKT條件36

2.2.8擬牛頓法37

2.2.9面臨的問題38

2.3概率論39

2.3.1隨機事件與概率39

2.3.2條件概率39

2.3.3隨機變數40

2.3.4數學期望與方差41

2.3.5隨機向量41

2.3.6最大似然估計42

參考文獻43

 

3章基本概念44

3.1演算法分類44

3.1.1監督訊號44

3.1.2分類問題與迴歸問題45

3.1.3判別模型與生成模型47

3.1.4強化學習47

3.2模型評價指標48

3.2.1精度與召回率48

3.2.2ROC曲線48

3.2.3混淆矩陣50

3.2.4交叉驗證50

3.3模型選擇50

3.3.1過擬合與欠擬合50

3.3.2偏差與方差分解51

3.3.3正則化52

參考文獻54

 

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

 

4章貝葉斯分類器57

4.1貝葉斯決策57

4.2樸素貝葉斯分類器58

4.2.1離散型特徵58

4.2.2連續型特徵59

4.3正態貝葉斯分類器59

4.3.1訓練演算法59

4.3.2預測演算法60

4.4實驗程式61

4.5原始碼分析64

4.5.1主要資料結構64

4.5.2訓練函式65

4.5.3預測函式68

4.6應用70

參考文獻71

 

5章決策樹72

5.1樹形決策過程72

5.2分類與迴歸樹73

5.3訓練演算法74

5.3.1遞迴分裂過程74

5.3.2尋找最佳分裂74

5.3.3葉子節點值的設定77

5.3.4屬性缺失問題77

5.3.5剪枝演算法78

5.4實驗程式79

5.5原始碼分析81

5.5.1主要資料結構81

5.5.2遞迴分裂84

5.5.3尋找最佳分裂90

5.5.4尋找替代分裂96

5.5.5變數的重要性99

5.5.6預測演算法100

5.6應用103

參考文獻103

 

6章k近鄰演算法104

6.1基本概念104

6.2預測演算法104

6.3距離定義105

6.3.1常用距離定義105

6.3.2距離度量學習106

6.4實驗程式107

6.5應用109

參考文獻110

 

7章資料降維111

7.1主成分分析111

7.1.1資料降維問題111

7.1.2計算投影矩陣111

7.1.3向量降維114

7.1.4向量重構114

7.2原始碼分析114

7.2.1主要資料結構114

7.2.2計算投影矩陣115

7.2.3向量降維117

7.2.4向量重構117

7.3流形學習118

7.3.1區域性線性嵌入119

7.3.2拉普拉斯特徵對映119

7.3.3區域性保持投影122

7.3.4等距對映123

7.4應用124

參考文獻124

 

8章線性判別分析125

8.1用投影進行分類125

8.2投影矩陣125

8.2.1一維的情況125

8.2.2推廣到高維127

8.3實驗程式128

8.4原始碼分析131

8.4.1主要資料結構131

8.4.2計算投影矩陣132

8.4.3向量投影135

8.4.4向量重構136

8.5應用136

參考文獻137

 

9章人工神經網路138

9.1多層前饋型神經網路138

9.1.1神經元138

9.1.2網路結構139

9.1.3正向傳播演算法140

9.2反向傳播演算法141

9.2.1一個簡單的例子141

9.2.2完整的演算法145

9.3實驗程式149

9.4理論解釋152

9.4.1數學性質152

9.4.2與神經系統的關係153

9.5面臨的問題153

9.5.1梯度消失153

9.5.2退化154

9.5.3區域性極小值154

9.5.4鞍點154

9.6實現細節問題154

9.6.1輸入值與輸出值154

9.6.2網路規模155

9.6.3啟用函式155

9.6.4損失函式156

9.6.5權重初始化156

9.6.6正則化156

9.6.7學習率的設定156

9.6.8動量項156

9.7原始碼分析157

9.7.1主要資料結構157

9.7.2啟用函式160

9.7.3權重初始化163

9.7.4訓練函式164

9.7.5預測函式177

9.8應用179

參考文獻180

 

10章支援向量機182

10.1線性分類器182

10.1.1線性分類器概述182

10.1.2分類間隔182

10.2線性可分的問題183

10.2.1原問題183

10.2.2對偶問題184

10.3線性不可分的問題187

10.3.1原問題187

10.3.2對偶問題187

10.4核對映與核函式190

10.5SMO演算法193

10.5.1求解子問題193

10.5.2優化變數的選擇196

10.6多分類問題197

10.7實驗程式198

10.8原始碼分析200

10.8.1求解演算法201

10.8.2主要資料結構204

10.8.3求解器211

10.9應用222

參考文獻223

 

11章線性模型225

11.1logistic迴歸225

11.2正則化logistic迴歸228

11.2.1對數似然函式228

11.2.2L2正則化原問題229

11.2.3L2正則化對偶問題232

11.2.4L1正則化原問題233

11.2.5實驗程式234

11.3線性支援向量機236

11.3.1L2正則化L1loss SVC原問題236

11.3.2L2正則化L2loss SVC原問題237

11.3.3L2正則化SVC對偶問題237

11.3.4L1正則化L2loss SVC原問題238

11.3.5多類線性支援向量機238

11.3.6實驗程式240

11.4原始碼分析241

11.4.1求解的問題241

11.4.2主要資料結構241

11.4.3求解器249

11.5softmax迴歸262

11.6應用263

參考文獻264

 

12章隨機森林266

12.1整合學習266

12.1.1隨機抽樣266

12.1.2Bagging演算法267

12.2隨機森林概述267

12.3訓練演算法267

12.4變數的重要性268

12.5實驗程式269

12.6原始碼分析271

12.6.1主要資料結構271

12.6.2訓練演算法273

12.6.3預測演算法282

12.7應用282

參考文獻283

 

13章Boosting演算法284

13.1AdaBoost演算法簡介284

13.2訓練演算法284

13.3訓練誤差分析286

13.4廣義加法模型288

13.5各種AdaBoost演算法290

13.5.1離散型AdaBoost290

13.5.2實數型AdaBoost292

13.5.3LogitBoost292

13.5.4Gentle型AdaBoost294

13.6實現細節問題294

13.6.1弱分類器的選擇295

13.6.2弱分類器的數量295

13.6.3樣本權重削減295

13.7實驗程式295

13.8原始碼分析297

13.8.1主要資料結構297

13.8.2弱分類器300

13.8.3強分類器306

13.9應用——目標檢測318

13.9.1VJ框架的原理319

13.9.2模型訓練321

參考文獻322

 

14章深度學習概論324

14.1機器學習面臨的挑戰324

14.1.1人工特徵325

14.1.2機器學習演算法326

14.2深度學習技術326

14.3進展與典型應用328

14.3.1計算機視覺329

14.3.2語音識別331

14.3.3自然語言處理331

14.3.4計算機圖形學332

14.3.5推薦系統332

14.3.6深度強化學習333

14.4自動編碼器333

14.4.1自動編碼器簡介333

14.4.2去噪自動編碼器334

14.4.3稀疏自動編碼器334

14.4.4收縮自動編碼器335

14.4.5多層編碼器335

14.5受限玻爾茲曼機335

14.5.1玻爾茲曼分佈335

14.5.2受限玻爾茲曼機336

14.5.3訓練演算法338

14.5.4深度玻爾茲曼機339

14.5.5深度置信網339

參考文獻339

 

15章卷積神經網路347

15.1網路結構347

15.1.1卷積層348

15.1.2池化層351

15.1.3全連線層351

15.2訓練演算法352

15.2.1卷積層352

15.2.2池化層355

15.2.3隨機梯度下降法356

15.2.4遷移學習357

15.3典型網路357

15.3.1LeNet5網路357

15.3.2AlexNet網路358

15.3.3VGG網路359

15.3.4GoogLeNet網路360

15.4理論分析361

15.4.1反摺積運算361

15.4.2卷積層視覺化362

15.4.3理論解釋364

15.5挑戰與改進措施365

15.5.1卷積層365

15.5.2池化層365

15.5.3啟用函式366

15.5.4損失函式366

15.5.5網路結構366

15.5.6批量歸一化370

15.6實際例子371

15.6.1LeNet5網路371

15.6.2訓練自己的模型373

15.7原始碼分析374

15.7.1Caffe簡介374

15.7.2資料層376

15.7.3卷積層376

15.7.4池化層378

15.7.5神經元層378

15.7.6內積層384

15.7.7損失層386

15.7.8網路的實現——Net類396

15.7.9求解器398

15.8應用——計算機視覺413

15.8.1人臉檢測414

15.8.2通用目標檢測416

15.8.3人臉關鍵點定位425

15.8.4人臉識別425

15.8.5影像分割428

15.8.6邊緣檢測429

15.8.7風格遷移432

15.8.8影像增強433

15.8.9三維視覺435

15.8.10目標跟蹤436

15.9應用——計算機圖形學437

15.9.1幾何模型438

15.9.2物理模型439

15.9.3紋理合成440

15.9.4影像彩色化441

15.9.5HDR442

15.10應用——自然語言處理444

15.10.1文字分類444

15.10.2機器翻譯444

參考文獻444

 

16章迴圈神經網路450

16.1網路結構450

16.1.1迴圈層450

16.1.2輸出層451

16.1.3一個簡單的例子452

16.1.4深層網路452

16.2網路的訓練453

16.2.1一個簡單的例子453

16.2.2完整的演算法455

16.3挑戰與改進措施457

16.3.1梯度消失457

16.3.2長短期記憶模型458

16.3.3門控迴圈單元459

16.3.4雙向網路459

16.4序列預測問題460

16.4.1序列標註問題460

16.4.2連線主義時序分類461

16.4.3序列到序列學習465

16.5應用——語音識別467

16.5.1語音識別問題467

16.5.2隱馬爾可夫模型468

16.5.3高斯混合模型474

16.5.4GMM-HMM框架475

16.5.5深度模型475

16.6應用——自然語言處理478

16.6.1中文分詞479

16.6.2詞性標註480

16.6.3命名實體識別480

16.6.4文字分類481

16.6.5自動摘要483

16.6.6機器翻譯483

16.7應用——機器視覺485

16.7.1字元識別485

16.7.2目標跟蹤486

16.7.3視訊分析488

參考文獻490

 

17章生成對抗網路494

17.1隨機資料生成494

17.2生成對抗網路簡介495

17.2.1生成模型495

17.2.2判別模型496

17.3模型的訓練496

17.3.1目標函式496

17.3.2訓練演算法497

17.3.3理論分析498

17.4應用與改進499

17.4.1改進方案500

17.4.2典型應用503

參考文獻505

 

18章聚類演算法506

18.1問題定義506

18.2層次聚類507

18.3基於質心的演算法507

18.4基於概率分佈的演算法508

18.5基於密度的演算法512

18.5.1DBSCAN演算法512

18.5.2OPTICS演算法514

18.5.3Mean Shift演算法516

18.6基於圖的演算法517

18.7演算法評價指標518

18.7.1內部指標518

18.7.2外部指標518

18.8應用519

參考文獻519

 

19章半監督學習521

19.1問題假設521

19.1.1連續性假設521

19.1.2聚類假設521

19.1.3流形假設521

19.1.4低密度分割假設521

19.2啟發式演算法522

19.2.1自訓練522

19.2.2協同訓練522

19.3生成模型522

19.4低密度分割523

19.5基於圖的演算法523

19.6半監督深度學習524

參考文獻525

 

20章強化學習527

20.1強化學習簡介527

20.1.1問題定義527

20.1.2馬爾可夫決策過程528

20.2基於動態規劃的演算法532

20.2.1策略迭代演算法532

20.2.2價值迭代演算法534

20.3蒙特卡洛演算法535

20.3.1演算法簡介535

20.3.2狀態價值函式估計536

20.3.3動作價值函式估計537

20.3.4蒙特卡洛控制537

20.4時序差分學習538

20.4.1Sarsa演算法538

20.4.2Q學習539

20.5深度強化學習540

20.5.1深度Q網路541

20.5.2策略梯度演算法544

20.6應用547

參考文獻547

 

第三部分工程實踐問題

 

21章工程實踐問題概述551

21.1實現細節問題551

21.1.1訓練樣本551

21.1.2特徵預處理552

21.1.3模型選擇552

21.1.4過擬合問題552

21.2安全性問題553

21.2.1對抗樣本553

21.2.2形成原因分析555

21.3實現成本問題556

21.3.1訓練樣本量556

21.3.2計算與儲存成本556

21.4深度模型優化557

21.4.1剪枝與編碼557

21.4.2二值化網路558

21.4.3卷積核分離562

參考文獻563

 

附錄A各種機器學習演算法的總結565

 

附錄B梯度下降法的演化關係(見第15章)569

 

附錄C EM演算法的推導(見第18章)570

 

640?wx_fmt=png


相關文章