內容提要
機器學習需要一條脫離過高理論門檻的入門之路。
《機器學習篇》從小紅帽采蘑菇的故事開篇,介紹了基礎的機器學習分類模型的訓練(第1 章)。如何評估、調試模型?如何合理地發掘事物的特徵?如何利用幾個模型共同發揮作用?後續章節一步一步講述了如何最佳化模型,更好地完成分類預測任務(第2 章),並且初步嘗試將這些技術運用到金融股票交易中(第3 章)。
自然界最好的非線性模型莫過於人類的大腦。《深度學習篇》從介紹並對比一些常見的深度學習框架開始(第4 章),講解了DNN 模型的直觀原理,嘗試給出一些簡單的生物學解釋,完成簡單的圖片識別任務(第5 章)。後續章節在此基礎上,完成更為複雜的圖片識別CNN 模型(第6 章)。接著,本書展示了使用Caffe 完成一個完整的圖片識別項目,從準備數據集,到完成識別任務(第7 章)。後面簡單描述了RNN 模型(第8 章),接著展示了一個將深度學習技術落地到圖片處理領域的項目(第9 章)。
《機器學習篇》適合能看懂Python 代碼,對機器學習感興趣,期望入門的讀者。
目錄
第一篇 機器學習篇
第1 章 初識機器學習 2
1.1 機器學習——賦予機器“學習”的靈魂 2
1.1.1 小紅帽識別毒蘑菇 2
1.1.2 三種機器學習問題 6
1.1.3 常用符號 6
1.1.4 回顧 7
1.2 KNN——相似的鄰居請投票 7
1.2.1 模型原理 7
1.2.2 鳶尾花卉數據集(IRIS) 9
1.2.3 訓練模型 9
1.2.4 評估模型 12
1.2.5 關於KNN 14
1.2.6 運用KNN 模型 15
1.2.7 回顧 16
1.3 邏輯分類I:線性分類模型 16
1.3.1 參數化的模型 16
1.3.2 邏輯分類:預測 18
1.3.3 邏輯分類:評估 22
1.3.4 邏輯分類:訓練 23
1.3.5 回顧 24
1.4 邏輯分類II:線性分類模型 24
1.4.1 尋找模型的權重 24
1.4.2 去均值和歸一化 31
1.4.3 實現 33
1.4.4 回顧 34
第2 章 機器學習進階 35
2.1 特徵工程 35
2.1.1 鐵達尼號生存預測 35
2.1.2 兩類特徵 38
2.1.3 構造非線性特徵 41
2.1.4 回顧 45
2.2 調試模型 46
2.2.1 模型調試的目標 46
2.2.2 調試模型 49
2.2.3 回顧 52
2.3 分類模型評估指標 53
2.3.1 混淆矩陣系指標 53
2.3.2 評估曲線 58
2.3.3 回顧 61
2.4 回歸模型 61
2.4.1 回歸與分類 61
2.4.2 線性回歸 62
2.4.3 波士頓房價預測 66
2.4.4 鐵達尼號生存預測:回歸預測特徵年齡Age 69
2.4.5 線性模型與非線性模型 72
2.4.6 回顧 73
2.5 決策樹模型 73
2.5.1 信息與編碼 74
2.5.2 決策樹 76
2.5.3 對比線性模型和決策樹模型的表現 77
2.5.4 回顧 79
2.6 模型融合 80
2.6.1 融合成群體(Ensamble) 80
2.6.2 Bagging:隨機森林(Random Forest) 82
2.6.3 Boosting:GBDT 83
2.6.4 Stacking 86
2.6.5 鐵達尼號生存預測:小結 93
2.6.6 回顧 94
第3 章 實戰:股票量化 95
3.1 第一步:構造童話世界 95
3.1.1 股票是什麼 95
3.1.2 當機器學習與量化交易走在一起 96
3.1.3 構造一個童話世界 96
3.1.4 回顧 100
3.2 第二步:套用機器學習 100
3.2.1 構建特徵數據 100
3.2.2 回歸預測股票價格 103
3.2.3 分類預測股票漲跌 108
3.2.4 通過決策樹分類,繪製決策圖 112
3.2.5 回顧 114
3.3 第三步:在真實世界套用機器學習 114
3.3.1 回測 115
3.3.2 基於特徵的交易預測 119
3.3.3 破滅的童話——真實世界的機器學習 122
第二篇 深度學習篇
第4 章 深度學習:背景和工具 126
4.1 背景 126
4.1.1 人工智慧——為機器賦予人的智慧型 126
4.1.2 圖靈測試 126
4.1.3 強人工智慧 vs 弱人工智慧 127
4.1.4 機器學習和深度學習 128
4.1.5 過度的幻想 128
4.1.6 回顧 129
4.2 深度學習框架簡介 129
4.2.1 評測方式 130
4.2.2 評測對象 131
4.2.3 深度學習框架評測 131
4.2.4 小結 135
4.3 深度學習框架快速上手 135
4.3.1 符號主義 135
4.3.2 MNIST 136
4.3.3 Keras 完成邏輯分類 138
4.3.4 回顧 141
4.4 Caffe 實現邏輯分類模型 141
4.4.1 Caffe 訓練MNIST 概覽 142
4.4.2 Caffe 簡介 144
4.4.3 準備數據集 145
4.4.4 準備模型 146
4.4.5 模型訓練流程 149
4.4.6 使用模型 149
4.4.7 Caffe 的Python 接口 150
4.4.8 回顧 151
第5 章 深層學習模型 152
5.1 解密生物智慧型 154
5.1.1 實驗一:大腦的材料 154
5.1.2 實驗二:探索腦皮層的功能區域 156
5.1.3 實驗三:不同的皮層組織——區別在於函式算法 158
5.1.4 實驗四:可替換的皮層模組——神經元組成的學習模型 161
5.1.5 模擬神經元 162
5.1.6 生物結構帶來的啟發 163
5.1.7 回顧 164
5.2 DNN 神經網路模型 164
5.2.1 線性核心和非線性激活 164
5.2.2 DNN、CNN、RNN 165
5.2.3 邏輯分類:一層神經網路 166
5.2.4 更多的神經元 167
5.2.5 增加Hidden Layer(隱層) 168
5.2.6 ReLu 激活函式 170
5.2.7 理解隱層 171
5.2.8 回顧 172
5.3 神經元的深層網路結構 172
5.3.1 問題:更寬 or 更深 172
5.3.2 鏈式法則:深層模型訓練更快 173
5.3.3 生物:深層模型匹配生物的層級識別模式 175
5.3.4 深層網路結構 177
5.3.5 回顧 178
5.4 典型的DNN 深層網路模型:MLP 178
5.4.1 最佳化梯度下降 179
5.4.2 處理過擬合:Dropout 181
5.4.3 MLP 模型 182
5.4.4 回顧 185
5.5 Caffe 實現MLP 185
5.5.1 搭建MLP 185
5.5.2 訓練模型 189
5.5.3 回顧 190
第6 章 學習空間特徵 191
6.1 預處理空間數據 192
6.1.1 像素排列展開的特徵向量帶來的問題 192
6.1.2 過濾冗餘 194
6.1.3 生成數據 195
6.1.4 回顧 198
6.2 描述圖片的空間特徵:特徵圖 199
6.2.1 圖片的卷積運算. 199
6.2.2 卷積指令和特徵圖 201
6.2.3 回顧 206
6.3 CNN 模型I:卷積神經網路原理 206
6.3.1 卷積神經元 207
6.3.2 卷積層 208
6.3.3 多層卷積 211
6.3.4 回顧 216
6.4 CNN 模型II:圖片識別 216
6.4.1 連線分類模型 216
6.4.2 貓狗分類 217
6.4.3 反思CNN 與DNN 的結合:融合訓練 221
6.4.4 深度學習與生物視覺 222
6.4.5 回顧 224
6.5 CNN 的實現模型 224
6.5.1 ImageNet 簡介 224
6.5.2 Googlenet 模型和Inception 結構 226
6.5.3 VGG 模型 228
6.5.4 其他模型 231
6.5.5 回顧 232
6.6 微訓練模型(fine-tuning) 232
6.6.1 二次訓練一個成熟的模型 232
6.6.2 微訓練在ImageNet 訓練好的模型 233
6.6.3 回顧 239
第7 章 Caffe 實例:狗狗品種辨別 240
7.1 準備圖片數據 240
7.1.1 蒐集狗狗圖片 240
7.1.2 清洗數據 241
7.1.3 標準化數據 242
7.1.4 回顧 243
7.2 訓練模型 243
7.2.1 生成樣本集 244
7.2.2 生成訓練、測試數據集 245
7.2.3 生成lmdb 246
7.2.4 生成去均值檔案. 247
7.2.5 更改prototxt 檔案 247
7.2.6 訓練模型 249
7.2.7 回顧 249
7.3 使用生成的模型進行分類 249
7.3.1 更改deploy.prototxt 249
7.3.2 載入模型 250
7.3.3 回顧 257
第8 章 漫談時間序列模型 258
8.1 Embedding 259
8.1.1 簡單的文本識別. 260
8.1.2 深度學習從讀懂詞義開始 261
8.1.3 遊戲:詞義運算. 264
8.1.4 回顧 264
8.2 輸出序列的模型 265
8.2.1 RNN 265
8.2.2 LSTM 266
8.2.3 並用人工特徵和深度學習特徵——一個NLP 模型的最佳化歷程 268
8.2.4 反思:讓模型擁有不同的能力 270
8.2.5 回顧 273
8.3 深度學習:原理篇總結 273
8.3.1 原理小結 273
8.3.2 使用建議 275
第9 章 用深度學習做個藝術畫家——模仿實現PRISMA 277
9.1 機器學習初探藝術作畫 278
9.1.1 藝術作畫概念基礎 278
9.1.2 直觀感受一下機器藝術家 279
9.1.3 一個有意思的實驗 280
9.1.4 機器藝術作畫的願景 281
9.1.5 回顧 282
9.2 實現秒級藝術作畫 282
9.2.1 主要實現思路分解講解 283
9.2.2 使用統計參數期望與標準差尋找mask 290
9.2.3 工程代碼封裝結構及使用示例 299
9.2.4 回顧和後記 302
附錄A 機器學習環境部署 303
附錄B 深度學習環境部署 307
附錄C 隨書代碼運行環境部署 312