這是一本場景式的機器學(xué)習(xí)實踐書,筆者努力做到“授人以漁,而非授人以魚”。理論方面從人工智能(AI)與機器學(xué)習(xí)(ML)的基本要素講起,逐步展開有監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)、強化學(xué)習(xí)這三大類模型的應(yīng)用場景與算法原理;實踐方面通過金融預(yù)測、醫(yī)療診斷概率模型、月球登陸器、圖像識別、寫詩機器人、中國象棋博弈等案例啟發(fā)讀者將機器學(xué)習(xí)應(yīng)用在各行各業(yè)里,其中后三個案例使用了深度學(xué)習(xí)技術(shù)。本書試圖用通俗的語言講解涵蓋算法模型的機器學(xué)習(xí),主要內(nèi)容包括機器學(xué)習(xí)通用概念、三個基本科學(xué)計算工具、有監(jiān)督學(xué)習(xí)、聚類模型、降維模型、隱馬爾可夫模型、貝葉斯網(wǎng)絡(luò)、自然語言處理、深度學(xué)習(xí)、強化學(xué)習(xí)、模型遷移等。在深入淺出地解析模型與算法之后,介紹使用Python相關(guān)工具進行開發(fā)的方法、解析經(jīng)典案例,使讀者做到“能理解、能設(shè)計、能編碼、能調(diào)試”,沒有任何專業(yè)基礎(chǔ)的讀者在學(xué)習(xí)本書后也能夠上手設(shè)計與開發(fā)機器學(xué)習(xí)產(chǎn)品。本書內(nèi)容深入淺出、實例典型,適合對機器學(xué)習(xí)感興趣的產(chǎn)品設(shè)計、技術(shù)管理、數(shù)據(jù)分析、軟件開發(fā)或?qū)W生讀者。閱讀本書既能了解當(dāng)前工業(yè)界的主流機器學(xué)習(xí)與深度學(xué)習(xí)開發(fā)工具的使用方法,又能從戰(zhàn)略方面掌握如何將人工智能技術(shù)應(yīng)用到自己的企業(yè)與產(chǎn)品中
劉長龍,復(fù)旦大學(xué)信息管理學(xué)士學(xué)位、上海交通大學(xué)計算機技術(shù)碩士學(xué)位,從事計算機軟件研發(fā)十余年。對應(yīng)用軟件開發(fā)有較廣泛深入了解,用C++、Python等技術(shù)主持負(fù)責(zé)過電信級實時計費系統(tǒng)、客戶管理系統(tǒng)、智能家居、物聯(lián)網(wǎng)云平臺的研究和設(shè)計開發(fā)工作。在不寫作的時候,業(yè)余時間喜歡跑步和游泳。
目 錄
第1章 機器學(xué)習(xí)基礎(chǔ) 1
1.1 引言 1
1.1.1 為什么使用機器學(xué)習(xí) 2
1.1.2 機器學(xué)習(xí)與數(shù)據(jù)挖掘 4
1.1.3 機器學(xué)習(xí)與人工智能 5
1.2 機器學(xué)習(xí)的一般流程 7
1.2.1 定義問題 7
1.2.2 收集數(shù)據(jù) 8
1.2.3 比較算法與模型 9
1.2.4 應(yīng)用模型 10
1.3 學(xué)習(xí)策略 10
1.3.1 有監(jiān)督學(xué)習(xí) 11
1.3.2 無監(jiān)督學(xué)習(xí) 14
1.3.3 強化學(xué)習(xí) 16
1.3.4 綜合模型與工具 18
1.4 評估理論 19
1.4.1 劃分?jǐn)?shù)據(jù)集 19
1.4.2 交叉驗證 21
1.4.3 評估指標(biāo) 22
1.4.4 擬合不足與過度擬合 25
1.5 本章內(nèi)容回顧 26
第2章 Python基礎(chǔ)工具 27
2.1 Numpy 28
2.1.1 Numpy與Scipy的分工 28
2.1.2 ndarray構(gòu)造 29
2.1.3 數(shù)據(jù)類型 32
2.1.4 訪問與修改 33
2.1.5 軸 35
2.1.6 維度操作 38
2.1.7 合并與拆分 40
2.1.8 增與刪 41
2.1.9 全函數(shù) 42
2.1.10 廣播 42
2.2 Matplot 43
2.2.1 點線圖 44
2.2.2 子視圖 50
2.2.3 圖像 53
2.2.4 等值圖 57
2.2.5 三維繪圖 58
2.2.6 從官網(wǎng)學(xué)習(xí) 59
2.3 Scipy 60
2.3.1 數(shù)學(xué)與物理常數(shù) 61
2.3.2 特殊函數(shù)庫 62
2.3.3 積分 64
2.3.4 優(yōu)化 65
2.3.5 插值 67
2.3.6 離散傅里葉 68
2.3.7 卷積 70
2.3.8 線性分析 71
2.3.9 概率統(tǒng)計 73
2.4 本章內(nèi)容回顧 77
第3章 有監(jiān)督學(xué)習(xí):分類與回歸 79
3.1 線性回歸 80
3.1.1 何謂線性模型 80
3.1.2 最小二乘法 81
3.1.3 最小二乘法的不足 82
3.1.4 嶺回歸 85
3.1.5 Lasso回歸 87
3.2 梯度下降 90
3.2.1 假設(shè)函數(shù)與損失函數(shù) 90
3.2.2 隨機梯度下降 92
3.2.3 實戰(zhàn):SGDRegressor和SGDClassifier 93
3.2.4 增量學(xué)習(xí) 94
3.3 支持向量機 95
3.3.1 最優(yōu)超平面 95
3.3.2 軟間隔 97
3.3.3 線性不可分問題 98
3.3.4 核函數(shù) 99
3.3.5 實戰(zhàn):scikit-learn中的SVM 100
3.4 樸素貝葉斯分類 101
3.4.1 基礎(chǔ)概率 102
3.4.2 貝葉斯分類原理 103
3.4.3 高斯樸素貝葉斯 105
3.4.4 多項式樸素貝葉斯 106
3.4.5 伯努利樸素貝葉斯 107
3.5 高斯過程 107
3.5.1 隨機過程 108
3.5.2 無限維高斯分布 109
3.5.3 實戰(zhàn):gaussian_process工具包 111
3.6 決策樹 114
3.6.1 最易于理解的模型 114
3.6.2 熵的作用 115
3.6.3 實戰(zhàn):DecisionTreeClassifier與DecisionTreeRegressor 117
3.6.4 樹的可視化 118
3.7 集成學(xué)習(xí) 119
3.7.1 偏差與方差 120
3.7.2 隨機森林 121
3.7.3 自適應(yīng)增強 124
3.8 綜合話題 126
3.8.1 參數(shù)與非參數(shù)學(xué)習(xí) 127
3.8.2 One-Vs-All與One-Vs-One 127
3.8.3 評估工具 129
3.8.4 超參數(shù)調(diào)試 131
3.8.5 多路輸出 134
3.9 本章內(nèi)容回顧 134
第4章 無監(jiān)督學(xué)習(xí):聚類 136
4.1 動機 137
4.2 K-means 138
4.2.1 算法 139
4.2.2 實戰(zhàn):scikit-learn聚類調(diào)用 141
4.2.3 如何選擇K值 144
4.3 近鄰算法 145
4.3.1 生活化的理解 145
4.3.2 有趣的迭代 146
4.3.3 實戰(zhàn):AffinityPropagation類 147
4.4 高斯混合模型 149
4.4.1 中心極限定理 150
4.4.2 最大似然估計 151
4.4.3 幾種協(xié)方差矩陣類型 152
4.4.4 實戰(zhàn):GaussianMixture類 154
4.5 密度聚類 156
4.5.1 凸數(shù)據(jù)集 157
4.5.2 密度算法 158
4.5.3 實戰(zhàn):DBSCAN類 159
4.6 BIRCH 160
4.6.1 層次模型綜述 161
4.6.2 聚類特征樹 162
4.6.3 實戰(zhàn):BIRCH相關(guān)調(diào)用 164
4.7 距離計算 166
4.7.1 閔氏距離 166
4.7.2 馬氏距離 167
4.7.3 余弦相似度 168
4.7.4 時間序列比較 169
4.7.5 杰卡德相似度 169
4.8 聚類評估 170
4.9 本章內(nèi)容回顧 172
第5章 無監(jiān)督學(xué)習(xí):數(shù)據(jù)降維 173
5.1 主成分分析 174
5.1.1 尋找方差最大維度 174
5.1.2 用PCA降維 177
5.1.3 實戰(zhàn):用PCA尋找主成分 178
5.2 線性判別分析 181
5.2.1 雙重標(biāo)準(zhǔn) 181
5.2.2 實戰(zhàn):使用LinearDiscriminantAnalysis 183
5.3 多維標(biāo)度法 185
5.3.1 保留距離信息的線性變換 185
5.3.2 MDS的重要變形 187
5.3.3 實戰(zhàn):使用MDS類 188
5.4 流形學(xué)習(xí)之Isomap 189
5.4.1 什么是流形 190
5.4.2 測地線距離 192
5.4.3 實戰(zhàn):使用Isomap類 193
5.5 流形學(xué)習(xí)之局部嵌入 195
5.5.1 局部線性嵌入 195
5.5.2 拉普拉斯特征映射(LE) 198
5.5.3 調(diào)用介紹 200
5.5.4 譜聚類 201
5.6 流形學(xué)習(xí)之t-SNE 203
5.6.1 用Kullback-Leiber衡量分布相似度 203
5.6.2 為什么是t-分布 205
5.6.3 實戰(zhàn):使用TSNE類 206
5.7 實戰(zhàn):降維模型之比較 207
5.8 本章內(nèi)容回顧 210
第6章 隱馬爾可夫模型 212
6.1 場景建模 213
6.1.1 兩種狀態(tài)鏈 213
6.1.2 兩種概率 215
6.1.3 三種問題 217
6.1.4 hmmLearn介紹 218
6.2 離散型分布算法與應(yīng)用 222
6.2.1 前向算法與后向算法 222
6.2.2 MultinomialNB求估計問題 226
6.2.3 Viterbi算法 227
6.2.4 MultinomialNB求解碼問題 229
6.2.5 EM算法 232
6.2.6 Baum-Welch算法 233
6.2.7 用hmmLearn訓(xùn)練數(shù)據(jù) 235
6.3 連續(xù)型概率分布 236
6.3.1 多元高斯分布 237
6.3.2 GaussianHMM 239
6.3.3 GMMHMM 240
6.4 實戰(zhàn):股票預(yù)測模型 241
6.4.1 數(shù)據(jù)模型 241
6.4.2 目標(biāo) 243
6.4.3 訓(xùn)練模型 243
6.4.4 分析模型參數(shù) 245
6.4.5 可視化短線預(yù)測 247
6.5 本章內(nèi)容回顧 250
第7章 貝葉斯網(wǎng)絡(luò) 251
7.1 什么是貝葉斯網(wǎng)絡(luò) 252
7.1.1 典型貝葉斯問題 252
7.1.2 靜態(tài)結(jié)構(gòu) 253
7.1.3 聯(lián)合/邊緣/條件概率換算 256
7.1.4 鏈?zhǔn)椒▌t與變量消元 258
7.2 網(wǎng)絡(luò)構(gòu)建 259
7.2.1 網(wǎng)絡(luò)參數(shù)估計 260
7.2.2 啟發(fā)式搜索 261
7.2.3 Chow-Liu Tree算法 262
7.3 近似推理 263
7.3.1 蒙特卡洛方法 264
7.3.2 馬爾可夫鏈?zhǔn)諗慷ɡ?265
7.3.3 MCMC推理框架 267
7.3.4 Gibbs采樣 268
7.3.5 變分貝葉斯 268
7.4 利用共軛建模 270
7.4.1 共軛分布 270
7.4.2 隱含變量與顯式變量 272
7.5 實戰(zhàn):胸科疾病診斷 274
7.5.1 診斷需求 274
7.5.2 Python概率工具包 275
7.5.3 建立模型 276
7.5.4 MCMC采樣分析 278
7.5.5 近似推理 281
7.6 本章內(nèi)容回顧 282
第8章 自然語言處理 284
8.1 文本建模 285
8.1.1 聊天機器人原理 285
8.1.2 詞袋模型 286
8.1.3 訪問新聞資源庫 287
8.1.4 TF-IDF 290
8.1.5 實戰(zhàn):關(guān)鍵詞推舉 290
8.2 詞匯處理 294
8.2.1 中文分詞 294
8.2.2 Word2vec 296
8.2.3 實戰(zhàn):尋找近似詞 298
8.3 主題模型 303
8.3.1 三層模型 303
8.3.2 非負(fù)矩陣分解 304
8.3.3 潛在語意分析 305
8.3.4 隱含狄利克雷分配 307
8.3.5 實戰(zhàn):使用工具包 309
8.4 實戰(zhàn):用LDA分析新聞庫 311
8.4.1 文本預(yù)處理 311
8.4.2 訓(xùn)練與顯示 313
8.4.3 困惑度調(diào)參 315
8.5 本章內(nèi)容回顧 317
第9章 深度學(xué)習(xí) 319
9.1 神經(jīng)網(wǎng)絡(luò)基礎(chǔ) 320
9.1.1 人工神經(jīng)網(wǎng)絡(luò) 320
9.1.2 神經(jīng)元與激活函數(shù) 321
9.1.3 反向傳播 323
9.1.4 萬能網(wǎng)絡(luò) 325
9.2 TensorFlow核心應(yīng)用 328
9.2.1 張量 329
9.2.2 開發(fā)架構(gòu) 331
9.2.3 數(shù)據(jù)管理 332
9.2.4 評估器 335
9.2.5 圖與會話 338
9.2.6 逐代(epoch)訓(xùn)練 341
9.2.7 圖與統(tǒng)計可視化 343
9.3 卷積神經(jīng)網(wǎng)絡(luò) 349
9.3.1 給深度學(xué)習(xí)一個理由 349
9.3.2 CNN結(jié)構(gòu)發(fā)展 351
9.3.3 卷積層 354
9.3.4 池化層 356
9.3.5 ReLU與Softmax 357
9.3.6 Inception與ResNet 359
9.4 優(yōu)化 362
9.4.1 批次規(guī)范化 362
9.4.2 剪枝 364
9.4.3 算法選擇 366
9.5 循環(huán)神經(jīng)網(wǎng)絡(luò)與遞歸神經(jīng)網(wǎng)絡(luò) 367
9.5.1 循環(huán)神經(jīng)網(wǎng)絡(luò) 368
9.5.2 長短期記憶(LSTM) 371
9.5.3 遞歸神經(jīng)網(wǎng)絡(luò) 374
9.6 前沿精選 377
9.6.1 物件檢測模型 377
9.6.2 密連卷積網(wǎng)絡(luò) 381
9.6.3 膠囊網(wǎng)絡(luò) 382
9.7 CNN實戰(zhàn):圖像識別 385
9.7.1 開源圖像庫CIFAR 385
9.7.2 項目介紹 388
9.7.3 構(gòu)建Graph 389
9.7.4 優(yōu)化與訓(xùn)練 392
9.7.5 運行 394
9.8 RNN實戰(zhàn):寫詩機器人 397
9.8.1 語言模型 397
9.8.2 LSTM開發(fā)步驟1:網(wǎng)絡(luò)架構(gòu) 401
9.8.3 LSTM開發(fā)步驟2:數(shù)據(jù)加載 402
9.8.4 LSTM開發(fā)步驟3:搭建TensorFlow Graph 403
9.8.5 LSTM開發(fā)步驟4:解析LSTM RNN 404
9.8.6 LSTM開發(fā)步驟5:LSTM中的參數(shù) 406
9.8.7 LSTM開發(fā)步驟6:用sequence_loss計算RNN損失值 406
9.8.8 LSTM開發(fā)步驟7:學(xué)習(xí)速度可調(diào)優(yōu)化器 407
9.8.9 LSTM開發(fā)步驟8:訓(xùn)練 408
9.8.10 開始寫唐詩 410
9.8.11 寫唐詩步驟1:用唐詩語料訓(xùn)練語言模型 410
9.8.12 寫唐詩步驟2:作詩 412
9.8.13 寫唐詩步驟3:作品舉例 414
9.9 本章內(nèi)容回顧 415
第10章 強化學(xué)習(xí) 418
10.1 場景與原理 419
10.1.1 借AlphaGo談人工智能 419
10.1.2 基于價值的算法Q-Learning與Sarsa 421
10.1.3 基于策略的算法 424
10.1.4 基于模型的算法 426
10.2 OpenAI Gym 427
10.2.1 環(huán)境調(diào)用 428
10.2.2 實戰(zhàn):用Q-Learning開發(fā)走迷宮機器人 432
10.3 深度強化學(xué)習(xí) 435
10.3.1 DQN及改進 435
10.3.2 DPN、DDPG及A3C 436
10.3.3 實戰(zhàn):用DPN訓(xùn)練月球定點登陸 439
10.4 博弈原理 444
10.4.1 深度搜索與廣度搜索 444
10.4.2 完美決策 446
10.4.3 蒙特卡洛搜索樹 448
10.5 實戰(zhàn):中國象棋版AlphaGo Zero 449
10.5.1 開源版本AlphaGo Zero 450
10.5.2 盤面建模 452
10.5.3 左右互搏 457
10.5.4 MCTS詳解 464
10.5.5 DDPG詳解 468
10.5.6 運行展示:訓(xùn)練 473
10.5.7 運行展示:查看統(tǒng)計 475
10.5.8 運行展示:當(dāng)頭炮、把馬跳 475
10.5.9 運行展示:人機博弈 476
10.6 本章內(nèi)容回顧 477
第11章 模型遷移 478
11.1 走向移動端 478
11.1.1 Android上的TensorFlow 479
11.1.2 iOS上的CoreML 480
11.2 遷移學(xué)習(xí) 483
11.2.1 動機 483
11.2.2 訓(xùn)練流程 484
11.3 案例實戰(zhàn):基于TensorFlow Hub的遷移學(xué)習(xí)開發(fā) 485
11.3.1 下載并訓(xùn)練 485
11.3.2 檢驗學(xué)習(xí)成果 486
11.3.3 遷移學(xué)習(xí)開發(fā) 487
11.4 本章內(nèi)容回顧 488
后記 489