機器學習是當前解決很多人工智能問題的核心技術,自2012年以來,深度學習的出現帶來了人工智能復興。本書是機器學習和深度學習領域的入門與提高教材,緊密結合工程實踐與應用,系統(tǒng)、深入地講述機器學習與深度學習的主流方法與理論。全書由23章組成,共分為三大部分。第1~3章為*部分,介紹機器學習的基本原理、所需的數學知識(包括微積分、線性代數、*化方法和概率論),以及機器學習中的核心概念。第4~22章為第二部分,是本書的主體,介紹各種常用的有監(jiān)督學習算法、無監(jiān)督學習算法、半監(jiān)督學習算法和強化學習算法。對于每種算法,從原理與推導、工程實現和應用3個方面進行介紹,對于大多數算法,都配有實驗程序。第23章為第三部分,介紹機器學習和深度學習算法實際應用時面臨的問題,并給出典型的解決方案。
本書理論推導與證明詳細、深入,結構清晰,詳細地講述主要算法的原理與細節(jié),讓讀者不僅知其然,還知其所以然,真正理解算法、學會使用算法。對于計算機、人工智能及相關專業(yè)的本科生和研究生,這是一本適合入門與系統(tǒng)學習的教材;對于從事人工智能和機器學習產品研發(fā)的工程技術人員,本書也具有很強的參考價值。
全面系統(tǒng)地講述了深度學習、機器學習的主要算法,包括有監(jiān)督學習,無監(jiān)督學習,強化學習的54種算法。對算法的思想,推導與證明,實現要點有清晰透徹的闡述 對機器學習、深度學習算法在計算機視覺,自然語言處理,語音識別等領域的應用有詳細的介紹 配有20個實驗程序,包含18份源代碼,幫助讀者正確的掌握算法與開源庫的使用 配有25個講解視頻,對復雜、難以理解的知識點有清晰透徹的講解
序
近年來,隨著IBM沃森、谷歌DeepMind AlphaGo等新型人機系統(tǒng)的橫空出世,人工智能日益受到全社會的關注,媒體報道熱度空前。事實上,伴隨大數據、深度學習、智能芯片等技術的成熟、政府的扶持以及資本的持續(xù)投入,一方面在前端催生了刷臉支付、智能音箱、以圖搜圖、智能翻譯等新的商業(yè)場景和產品;另一方面,人工智能在后端也正深刻地改變著既有的技術模式和流程。例如,在端對端的深度神經網絡中,一些傳統(tǒng)的特征工程模塊被弱化乃至取代;原本基于單步預測的個性化推薦引擎被強化學習技術改造。
放眼世界,人工智能正成為國際競爭的新焦點。英國、美國、新加坡等國家也各自提出了推動人工智能相關技術與產業(yè)發(fā)展的綱要與規(guī)劃。美國國防部高級研究計劃局則于2018年9月宣布將投入20億美元開展一項名為 AI Next 的計劃,其旨在加速人工智能研究。MIT則計劃斥資10億美元,建設新的計算機學院,致力于將人工智能技術用于該校的所有研究領域。在國內,國務院于2017年7月發(fā)布了《國務院關于印發(fā)新一代人工智能發(fā)展規(guī)劃的通知》。清華大學、上海交通大學、南京大學等國內頂級高校,也陸續(xù)成立了自己的人工智能研究院。在工業(yè)界,商湯、曠視、依圖等人工智能獨角獸企業(yè),也帶動了人工智能技術在國內的落地與發(fā)展。
從學術角度來看,以1956年達特茅斯會議作為人工智能學科公認的起點,60多年的沉浮史見證了多次起伏,誕生了多個思想學派。近30年的人工智能發(fā)展,在作者看來,機器學習(包括深度學習)成為這期間的主流思想和技術。支持向量機、隨機森林、決策樹、卷積神經網絡、循環(huán)神經網絡、生成對抗網絡和強化學習等方法層出不窮,構成了當代人工智能的華麗篇章。與此同時,大量機器學習開源框架和成型工具對用戶日益友好。初學者往往不需要太多的數學基礎和編程能力,簡單調用接口即可完成一些人工智能任務。這些條件往往可以快速給予初學者信心,鼓勵更多人才進入人工智能相關領域,推動了人工智能的應用。同時,一些從業(yè)者對開源軟件或者框架的過度依賴,乃至抱著一種不求甚解的態(tài)度,不去理解和掌握主要算法和模型背后的原理和數學基礎。如此一來,個體的技術發(fā)展?jié)摿κ芟,而整個行業(yè)的持續(xù)發(fā)展也將缺乏高層次人才基礎。事實上,盡管人工智能算法工具日益傻瓜化,甚至出現了AutoML這樣的自動化機器學習技術,然而深刻理解算法背后的機理,可對具體問題選擇合適模型、訓練算法和超參數的能力,充分體現機器學習從業(yè)者的創(chuàng)新能力和解決問題的能力。
本人全面閱讀了雷明老師的作品,在語言精確性和條理性、內容全面性和完整性、理論深度以及工程實踐指導方面,不啻為集專業(yè)性與通俗性為一體的上乘之作。特別是在公式步步推導的細節(jié)方面,有非常仔細的表述,給人一種踏實的感覺。我相信通過本書,讀者將可以高效、細致、全面地掌握機器學習的主流知識點和整體脈絡。在碰到具體問題時,本書的專業(yè)內容也方便讀者進行快速查閱和鞏固。
人工智能的車輪滾滾向前,從業(yè)人員都力圖趕上趨勢的發(fā)展。開卷有益,希望本書能夠幫助讀者打好機器學習的內功基礎,緩解部分從業(yè)者內心的焦慮。相信翻看此書時的獲得感和充實感,會為讀者留下一段美好的回憶。
上海交通大學特別研究員嚴駿馳
2018年11月于廣州白云國際會議中心
前言
自2012年以來,得益于深度學習技術的迅猛進步,人工智能在學術界與產業(yè)界都迎來了蓬勃發(fā)展。深度學習現階段較好地解決了圖像識別、聲音識別等感知類問題。與之相對應的是優(yōu)秀教材的缺乏,由于技術的快速進步,此前的經典書籍面臨內容老化問題。本書旨在幫助人工智能相關方向的在校學生與工程技術人員更好地理解和掌握機器學習技術,本書的前身為2019年1月出版的《機器學習與應用》,筆者對該書做了大量優(yōu)化,刪除了開源庫代碼分析,增加了若干重要算法的講解,將C 版的示例程序改為Python版。
全書從原理與應用兩個角度進行講述。系統(tǒng)而深入地講解了目前主要的機器學習與深學習算法,包括有監(jiān)督學習、無監(jiān)督學習、半監(jiān)督學習、強化學習4種類型。對于主要的算法,分為理論、實驗程序、實際應用3部分進行講解。對于核心的推導和證明,筆者都詳細地給出。
學習本書需要讀者具有數學(包括微積分、線性代數、概率論等本科數學知識,以及最優(yōu)化方法)與程序設計(至少掌握一門編程語言)的基礎知識。
本書對深度學習算法與理論做了重點與深入的講解。對于卷積神經網絡、循環(huán)神經網絡等應用最為廣泛的方法,詳細地介紹了它們的原理與實現,并分析了截至2017年的主要學術論文,保證了本書內容能夠反映學術界與工程界的新成果。
機器學習是范圍極廣、內容龐雜的一門學科,技術發(fā)展日新月異,由于筆者的水平與經驗有限,書中難免有錯誤與理解不到位的地方,敬請讀者指正!
雷明
2019年6月
雷明,致力于研發(fā)機器學習與深度學習、計算機視覺框架,SIGAI創(chuàng)始人。2009年畢業(yè)于清華大學計算機系,獲碩士學位,研究方向為機器學習、計算機視覺,發(fā)表論文數篇。曾就職于百度公司,任高級軟件工程師和項目經理;zmodo/meshare,任CTO與平臺研發(fā)中心負責人。在機器學習、計算機視覺方向有豐富的學術研究與產品研發(fā)經驗。
第一部分基本概念與數學知識
第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發(fā)展歷程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最優(yōu)化方法25
〖1〗
〖2〗機器學習原理、算法與應用
〖1〗
目錄
2.2.1梯度下降法25
2.2.2牛頓法26
2.2.3坐標下降法27
2.2.4拉格朗日乘數法28
2.2.5凸優(yōu)化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監(jiān)督信號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連續(xù)型特征57
4.3正態(tài)貝葉斯分類器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葉子節(jié)點值的設定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與神經系統(tǒng)的關系111
9.5面臨的問題111
9.5.1梯度消失111
9.5.2退化111
9.5.3局部極小值111
9.5.4鞍點111
9.6實現細節(jié)問題112
9.6.1輸入值與輸出值112
9.6.2網絡規(guī)模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優(yōu)化變量的選擇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正則化L1loss SVC原問題156
11.2.2L2正則化L2loss SVC原問題156
11.2.3L2正則化SVC對偶問題157
11.2.4L1正則化L2loss 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實現細節(jié)問題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機器學習面臨的挑戰(zhàn)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推薦系統(tǒng)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.1LeNet5網絡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挑戰(zhàn)與改進措施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實現細節(jié)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章循環(huán)神經網絡270
16.1網絡結構270
16.1.1循環(huán)層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挑戰(zhàn)與改進措施277
16.3.1梯度消失277
16.3.2長短期記憶模型278
16.3.3門控循環(huán)單元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.2GMMHMM框架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章半監(jiān)督學習334
19.1問題假設334
19.1.1連續(xù)性假設334
19.1.2聚類假設334
19.1.3流形假設334
19.1.4低密度分割假設334
19.2啟發(fā)式算法335
19.2.1自訓練335
19.2.2協(xié)同訓練335
19.3生成模型335
19.4低密度分割336
19.5基于圖的算法336
19.6半監(jiān)督深度學習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基于動態(tài)規(guī)劃的算法366
22.2.1策略迭代算法366
22.2.2價值迭代算法368
22.3蒙特卡洛算法369
22.3.1算法簡介369
22.3.2狀態(tài)價值函數估計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實現細節(jié)問題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深度模型優(yōu)化391
23.4.1剪枝與編碼391
23.4.2二值化網絡392
23.4.3卷積核分離396
參考文獻397