機器學習工程實戰 Machine Learning Engineering

[加] 安德烈·布可夫(Andriy Burkov)

  • 機器學習工程實戰-preview-1
  • 機器學習工程實戰-preview-2
機器學習工程實戰-preview-1

買這商品的人也買了...

商品描述

本書是人工智能和機器學習領域專業多年實踐的結晶,深入淺出講解機器學習應用和工程實踐,是對機器學習工程實踐和設計模式的系統回顧。全書分別從項目前的準備,數據收集和準備,特徵工程,監督模型訓練,模型評估,模型服務、監測和維護等方面講解,由淺入深剖析機器學習實踐過程中遇到的問題,幫助讀者快速掌握機器學習工程實踐和設計模式的基本原理與方法。

本書內容安排合理,架構清晰,理論與實踐相結合,適合想要從事機器學習項目的數據分析師、機器學習工程師以及機器學習相關專業的學生閱讀,也可供需要處理模型的軟件架構師參考。

作者簡介

安德烈·布可夫(Andriy Burkov),人工智能和機器學習領域專業人士,擁有人工智能博士學位,尤其擅長自然語言處理、機器學習、信息檢索等。目前,他是高德納(Gartner)諮詢公司機器學習開發團隊的主管。該團隊的主要工作是,使用淺層和深度學習技術,開發可用於生產環境的、先進的多語言文字抽取和標準化系統。著有本書的姊妹篇《機器學習精講》。

目錄大綱

第 1章 概述 1
1.1 符號和定義 1
1.1.1 數據結構 1
1.1.2 大寫西格瑪記法 3
1.2 什麼是機器學習 3
1.2.1 監督學習 4
1.2.2 無監督學習 5
1.2.3 半監督學習 6
1.2.4 強化學習 6
1.3 數據和機器學習術語 6
1.3.1 直接和間接使用的數據 7
1.3.2 原始數據和規整數據 7
1.3.3 訓練集和留出集 8
1.3.4 基線 9
1.3.5 機器學習流水線 9
1.3.6 參數與超參數 10
1.3.7 分類與回歸 10
1.3.8 基於模型學習與基於實例學習 11
1.3.9 淺層學習與深度學習的比較 11
1.3.10 訓練與評分 11
1.4 何時使用機器學習 11
1.4.1 如果問題太複雜,無法進行編程 12
1.4.2 如果問題不斷變化 12
1.4.3 如果它是一個感知問題 13
1.4.4 如果它是一種未曾研究過的現象 13
1.4.5 如果問題的目標簡單 14
1.4.6 如果它有成本效益 14
1.5 何時不使用機器學習 14
1.6 什麼是機器學習工程 15
1.7 機器學習項目生命週期 16
1.8 小結 17
第 2章 項目開始前 19
2.1 機器學習項目的優先級排序 19
2.1.1 機器學習的影響 19
2.1.2 機器學習的成本 20
2.2 估計機器學習項目的複雜度 21
2.2.1 未知因素 21
2.2.2 簡化問題 21
2.2.3 非線性進展 22
2.3 確定機器學習項目的目標 22
2.3.1 模型能做什麼 22
2.3.2 成功模型的屬性 23
2.4 構建機器學習團隊 24
2.4.1 兩種文化 24
2.4.2 機器學習團隊的成員 25
2.5 機器學習項目為何失敗 26
2.5.1 缺乏有經驗的人才 26
2.5.2 缺乏領導層的支持 26
2.5.3 數據基礎設施缺失 27
2.5.4 數據標籤的挑戰 27
2.5.5 穀倉式組織和缺乏協作 28
2.5.6 技術上不可行的項目 28
2.5.7 技術團隊和業務團隊之間缺乏協調 28
2.6 小結 29
第3章 數據收集和準備 31
3.1 關於數據的問題 31
3.1.1 數據是否可獲得 31
3.1.2 數據是否相當大 32
3.1.3 數據是否可用 34
3.1.4 數據是否可理解 35
3.1.5 數據是否可靠 36
3.2 數據的常見問題 37
3.2.1 高成本 37
3.2.2 質量差 39
3.2.3 噪聲 39
3.2.4 偏差 40
3.2.5 預測能力低 45
3.2.6 過時的樣本 45
3.2.7 離群值 46
3.2.8 數據洩露 47
3.3 什麼是好數據 48
3.3.1 好數據是有信息的 48
3.3.2 好數據有好的覆蓋面 48
3.3.3 好數據反映真實的輸入 48
3.3.4 好數據沒有偏差 49
3.3.5 好數據不是反饋環路的結果 49
3.3.6 好數據有一致的標籤 49
3.3.7 好數據足夠大 49
3.3.8 好數據總結 50
3.4 處理交互數據 50
3.5 數據洩露的原因 51
3.5.1 目標是一個特徵的函數 51
3.5.2 特徵隱藏目標 52
3.5.3 特徵來自未來 52
3.6 數據劃分 53
3.7 處理缺失的屬性 55
3.7.1 數據填補技術 55
3.7.2 填補過程中的洩露問題 57
3.8 數據增強 57
3.8.1 圖像的數據增強 57
3.8.2 文本的數據增強 59
3.9 處理不平衡的數據 60
3.9.1 過採樣 60
3.9.2 欠採樣 62
3.9.3 混合策略 62
3.10 數據採樣策略 63
3.10.1 簡單隨機採樣 63
3.10.2 系統採樣 64
3.10.3 分層採樣 64
3.11 存儲數據 64
3.11.1 數據格式 65
3.11.2 數據存儲級別 66
3.11.3 數據版本化 68
3.11.4 文檔和元數據 69
3.11.5 數據生命週期 70
3.12 數據處理最佳實踐 70
3.12.1 可重複性 70
3.12.2 數據第 一,算法第二 70
3.13 小結 71
第4章 特徵工程 73
4.1 為什麼要進行特徵工程 73
4.2 如何進行特徵工程 74
4.2.1 文本的特徵工程 74
4.2.2 為什麼詞袋有用 77
4.2.3 將分類特徵轉換為數字 78
4.2.4 特徵哈希 80
4.2.5 主題建模 81
4.2.6 時間序列的特徵 85
4.2.7 發揮你的創造力 88
4.3 疊加特徵 88
4.3.1 疊加特徵向量 88
4.3.2 疊加單個特徵 89
4.4 好特徵的屬性 90
4.4.1 高預測能力 90
4.4.2 快速計算能力 90
4.4.3 可靠性 91
4.4.4 不相關 91
4.4.5 其他屬性 91
4.5 特徵選擇 92
4.5.1 切除長尾 92
4.5.2 Boruta 93
4.5.3 L1正則化 95
4.5.4 特定任務的特徵選擇 95
4.6 合成特徵 96
4.6.1 特徵離散化 96
4.6.2 從關係數據中合成特徵 97
4.6.3 通過數據合成特徵 99
4.6.4 通過其他特徵合成特徵 99
4.7 從數據中學習特徵 100
4.7.1 單詞嵌入 100
4.7.2 文檔嵌入 102
4.7.3 任何東西的嵌入 103
4.7.4 選擇嵌入維度 104
4.8 降維 104
4.8.1 用PCA快速降維 104
4.8.2 用於可視化的降維 105
4.9 縮放特徵 105
4.9.1 歸一化 105
4.9.2 標準化 106
4.10 特徵工程中的數據洩露問題 107
4.10.1 可能出現的問題 107
4.10.2 解決方案 107
4.11 存儲特徵和編寫文檔 108
4.11.1 模式文件 108
4.11.2 特徵商店 109
4.12 特徵工程最佳實踐 112
4.12.1 生成許多簡單的特徵 112
4.12.2 復用遺留系統 112
4.12.3 在需要時使用ID作為特徵 112
4.12.4 但在可能時要減少基數 113
4.12.5 謹慎使用計數 113
4.12.6 必要時進行特徵選擇 114
4.12.7 認真測試代碼 114
4.12.8 保持代碼、模型和數據的同步性 115
4.12.9 隔離特徵提取代碼 115
4.12.10 將模型和特徵提取器序列化在一起 115
4.12.11 記錄特徵的值 115
4.13 小結 115
第5章 監督模型訓練(第 一部分) 117
5.1 開始模型工作之前 117
5.1.1 驗證模式一致性 117
5.1.2 定義可實現的表現水平 118
5.1.3 選擇表現指標 118
5.1.4 選擇正確的基線 118
5.1.5 將數據分成三個集 121
5.1.6 監督學習的前提條件 122
5.2 為機器學習表示標籤 122
5.2.1 多類分類 122
5.2.2 多標籤分類 123
5.3 選擇學習算法 124
5.3.1 學習算法的主要屬性 124
5.3.2 算法抽查 125
5.4 建立流水線 126
5.5 評估模型表現 127
5.5.1 回歸的表現指標 128
5.5.2 分類的表現指標 128
5.5.3 排名的表現指標 134
5.6 超參數調整 137
5.6.1 網格搜索 137
5.6.2 隨機搜索 138
5.6.3 由粗到精搜索 139
5.6.4 其他技術 140
5.6.5 交叉驗證 140
5.7 淺層模型訓練 141
5.7.1 淺層模型訓練策略 141
5.7.2 保存和恢復模型 142
5.8 偏差-方差折中 143
5.8.1 欠擬合 143
5.8.2 過擬合 143
5.8.3 折中 145
5.9 正則化 146
5.9.1 L1和L2正則化 147
5.9.2 其他形式的正則化 147
5.10 小結 148
第6章 監督模型訓練(第二部分) 150
6.1 深度模型訓練策略 150
6.1.1 神經網絡訓練策略 151
6.1.2 表現指標和成本函數 151
6.1.3 參數初始化策略 153
6.1.4 優化算法 154
6.1.5 學習率衰減安排表 158
6.1.6 正則化 159
6.1.7 網絡規模搜索和超參數調整 160
6.1.8 處理多個輸入 162
6.1.9 處理多個輸出 162
6.1.10 遷移學習 163
6.2 堆疊模型 165
6.2.1 集成學習的類型 165
6.2.2 模型堆疊的一種算法 166
6.2.3 模型堆疊中的數據洩露問題 167
6.3 應對分佈偏移 167
6.3.1 分佈偏移的類型 167
6.3.2 對抗驗證 168
6.4 處理不平衡數據集 168
6.4.1 類權重 169
6.4.2 重採樣數據集的集成 169
6.4.3 其他技術 170
6.5 模型校準 170
6.5.1 良好校準的模型 171
6.5.2 校準技術 172
6.6 故障排除與誤差分析 172
6.6.1 模範行為不良的原因 173
6.6.2 迭代模型的細化 173
6.6.3 誤差分析 174
6.6.4 複雜系統的誤差分析 175
6.6.5 使用切片指標 177
6.6.6 修復錯誤的標籤 177
6.6.7 尋找其他的樣本來標記 177
6.6.8 深度學習的故障排除 178
6.7 最佳實踐 179
6.7.1 提供一個好模型 180
6.7.2 信任流行的開源實現方式 180
6.7.3 優化業務特定的表現指標 180
6.7.4 從頭開始升級 180
6.7.5 避免修正級聯 181
6.7.6 謹慎使用模型級聯 181
6.7.7 編寫高效的代碼、編譯和並行化 182
6.7.8 對較新和較舊數據都進行測試 183
6.7.9 更多的數據勝過更聰明的算法 183
6.7.10 新數據勝過巧妙的特徵 184
6.7.11 擁抱微小進步 184
6.7.12 促進可重複性 184
6.8 小結 185
第7章 模型評估 187
7.1 離線和在線評估 188
7.2 A/B測試 190
7.2.1 G檢驗 190
7.2.2 Z檢驗 193
7.2.3 結語和警告 195
7.3 多臂老虎機 195
7.4 模型表現的統計界限 198
7.4.1 分類誤差的統計區間 199
7.4.2 自舉法統計區間 199
7.4.3 回歸的自舉法預測區間 201
7.5 評估測試集的充分性 201
7.5.1 神經元覆蓋率 201
7.5.2 突變測試 202
7.6 模型屬性的評估 202
7.6.1 健壯性 203
7.6.2 公平性 203
7.7 小結 204
第8章 模型部署 206
8.1 靜態部署 206
8.2 在用戶設備上動態部署 207
8.2.1 模型參數的部署 207
8.2.2 序列化對象的部署 208
8.2.3 部署到瀏覽器上 208
8.2.4 優點和缺點 208
8.3 在服務器上動態部署 209
8.3.1 在虛擬機上部署 209
8.3.2 在容器中部署 210
8.3.3 無服務器部署 211
8.3.4 模型流 212
8.4 部署策略 214
8.4.1 單一部署 214
8.4.2 靜默部署 215
8.4.3 金絲雀部署 215
8.4.4 多臂老虎機 216
8.5 自動部署、版本管理和元數據 216
8.5.1 模型附帶資產 216
8.5.2 版本同步 216
8.5.3 模型版本元數據 217
8.6 模型部署最佳實踐 217
8.6.1 算法效率 218
8.6.2 深度模型的部署 221
8.6.3 緩存 221
8.6.4 模型和代碼的交付格式 222
8.6.5 從一個簡單的模型開始 224
8.6.6 對外測試 225
8.7 小結 225
第9章 模型服務、監測和維護 227
9.1 模型服務運行時的屬性 227
9.1.1 安全性和正確性 227
9.1.2 部署的方便性 228
9.1.3 模型有效性的保證 228
9.1.4 易於恢復 229
9.1.5 避免訓練/服務偏離 229
9.1.6 避免隱藏反饋環路 229
9.2 模型服務模式 230
9.2.1 批量模式服務 230
9.2.2 對人按需服務 231
9.2.3 對機器按需服務 232
9.3 現實世界中的模型服務 233
9.3.1 為錯誤做好準備 233
9.3.2 處理錯誤 234
9.3.3 做好準備,應對變化 236
9.3.4 做好準備,應對人性 237
9.4 模型監測 238
9.4.1 什麼會出問題 238
9.4.2 監測的內容和方法 239
9.4.3 記錄什麼日誌 241
9.4.4 監測濫用情況 242
9.5 模型維護 243
9.5.1 何時更新 243
9.5.2 如何更新 244
9.6 小結 246
第 10章 結論 249
10.1 學習收穫 249
10.2 後續閱讀 253
10.3 致謝 253