●部分基本概念與數學知識
章機器學習簡介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.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
0章支持向量機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
1章線性模型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
2章隨機森林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
3章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
4章深度學習概論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
5章卷積神經網絡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.層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
6章循環神經網絡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
7章生成對抗網絡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
8章聚類算法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
9章半監督學習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梯度下降法的演化關繫(見5章)569
附錄CEM算法的推導(見8章)570
機器學習是當前解決很多人工智能問題的核心技術,深度學習的出現帶來了自2012年以來的人工智能復興。本書是機器學習和深度學習領域的入門與提高教材,繫統、深入地講述機器學習與深度學習的主流方法與理論,並緊密結合工程實踐與應用。全書由21章組成,共分為三大部分。~3章為部分,介紹機器學習的基本原理、所需的數學知識(包括微積分、線性代數、概率論和很優化方法),以及機器學習中的核心概念。第4~20章為第二部分,是本書的主體,介紹各種常用的有監督學習算法、無監督學習算法、半監督學習算法和強化學習算法。對於每種算法,從原理與推導、工程實現和實際應用3個方面進行介紹,對於大多數算法,都配有實驗程序。第21章為第三部分,介紹機器學習和深度學習算法實際應用時面臨的問題,並給出典型的解決方案。此外,附錄A給出各種機器學習算法的總結,附錄B給出梯度下降法的演化關繫,附錄C給出EM算法的推導。
本書理等