機器學習編程:從編碼到深度學習 Programming Machine Learning: From Zero to Deep Learning

Paolo Perrotta 譯 汪雄飛,汪榮貴譯

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

商品描述

使用監督學習從頭構建一個圖像識別應用程序。
用線性回歸預測未來。
深入研究梯度下降,這是一種驅動大部分機器學習的基本算法。
創建感知器來分類數據。
建立神經網絡來處理更複雜和復雜的數據集。
通過反向傳播和批處理來訓練和細化這些網絡。
分層神經網絡,消除過度擬合,
並添加卷積將您的神經網絡轉換為一個真正的深度學習系統。
 

目錄大綱

目錄
譯者序
前言
致謝
第一部分從零開始的
圖像識別
第1章機器學習的原理2
1.1編程與機器學習2
1.2監督學習4
1.3魔法背後的數學原理6
1.4設置系統8

第2章首個機器學習程序12
2.1了解問題12
2.1.1監督比薩13
2.1.2理解數據13
2.2編寫線性回歸代碼15
2.2.1定義模型16
2.2.2進行預測18
2.2.3進行訓練18
2.2.4計算誤差19
2.2.5越來越接近20
2.2.6運行代碼21
2.3添加偏置23
2.4小結25
2.5動手研究:設置超參數26

第3章梯度28
3.1算法的缺陷28
3.2梯度下降法30
3.2.1少量數學知識32
3.2 .2陡坡速降33
3.2.3脫離平面34
3.2.4偏導數35
3.2.5測試梯度下降法37
3.2.6何時梯度下降法不適用38
3.3小結40
3.4動手研究:露營地問題40

第4章超空間41
4.1添加更多維度42
4.2矩陣代數44
4.2.1矩陣乘法45
4.2.2矩陣轉置47
4.3升級學習程序47
4.3.1數據準備48
4.3. 2升級預測函數50
4.3.3升級損失函數51
4.3.4升級梯度公式52
4.3.5整合函數53
4.4告別偏置54
4.5最後一次試運行55
4.6小結56
4.7動手研究:統計學家56

第5章能辨識的機器58
5.1線性回歸的不足58
5.2 S型函數61
5.2.1信心與疑慮62
5.2.2平滑過程63
5.2.3升級梯度65
5.2.4模型函數受到的影響66
5.3操作中的分類函數67
5.4小結69
5.5動手研究:權重的影響70

第6章計算機視覺初探71
6.1處理數據72
6.1.1 MNIST入門72
6.1.2訓練與測試73
6.2我們自己的MNIST庫74
6.2.1準備輸入矩陣74
6.2.2處理數據76
6.3實際運行79
6.4小結80
6.5動手研究:難以識別的數字80

第7章最後的挑戰81
7.1多元分類81
7.1.1獨熱編碼83
7.1.2獨熱編碼實踐84
7.1. 3解碼分類器的答案85
7.1.4需要更多的權重85
7.1.5回顧矩陣維數86
7.2驗證與結果87
7.3小結89
7.4動手研究:掃雷艦89

第8章感知機91
8.1認識感知機91
8.2組裝感知機92
8.3感知機的不足93
8.3.1線性可分數據94
8.3.2線性不可分數據95
8.4感知機史話97
8.4.1終極之戰98
8.4.2論戰餘波98

第二部分神經網絡
第9章設計神經網絡100
9.1用感知機組裝神經網絡101
9.1.1鍊式感知機102
9.1.2節點數量103
9.2加入softmax函數105
9.3構建方案106
9.4小結106
9.5動手研究:網絡冒險107

第10章構建神經網絡108
10.1編寫正向傳播代碼108
10.1.1編寫softmax函數110
10.1.2編寫分類函數112
10.2交叉熵112
10.3小結114
10.4動手研究:時間旅行的測試115

第11章訓練神經網絡116
11.1反向傳播的使用場合116
11.2從鍊式法則到反向傳播118
11.2.1簡單網絡結構的鍊式法則118
11.2.2複雜網絡的鍊式法則119
11.3使用反向傳播算法121
11.3.1開始之前123
11.3.2計算w2的梯度123
11.3.3計算w1的梯度124
11.3.4提煉反向函數125
11.4初始化權重126
11.4.1可怕的對稱性126
11.4.2死亡神經元127
11.4.3正確的權重初始化129
11.5完成網絡模型130
11.6小結132
11.7動手研究:錯誤的開始133

第12章分類器的工作原理134
12.1尋找邊界134
12.1.1感知機的主場135
12.1.2理解分類136
12.1.3線性不可分138
12.2彎曲的邊界139
12.3小結141
12.4動手研究:高難數據141

第13章小批量處理142
13.1訓練過程的可視化143
13.2分批處理145
13.2.1小批量樣本集的構造145
13.2.2批量樣本的訓練147
13.3理解小批量148
13.3.1扭曲的路徑148
13.3.2大型和小型批處理150
13.3.3批處理的優缺點151
13.4小結152
13.5動手研究:最小的批量153

第14章測試的禪意154
14.1過度擬合的威脅154
14.2測試的難題156
14.3小結158
14.4動手研究:思考測試159

第15章來做開發吧160
15.1準備樣本數據161
15.1.1檢查輸入變量的範圍161
15.1.2標準化輸入變量162
15.1.3標準化的實踐163
15.2調優超參數164
15.2.1選擇曆元的數量164
15.2.2調優隱藏節點數量165
15.2.3調優學習率168
15.2.4調優批量大小170
15.3最終測試171
15.4動手研究:實現99% 173
15.5小結與展望174

第三部分深度學習
第16章深度神經網絡178
16.1針鼴數據集179
16.2使用Keras構建神經網絡180
16.2.1計劃與代碼181
16.2 .2加載數據182
16.2.3創建模型183
16.2.4編譯模型184
16.2.5訓練網絡184
16.2.6描繪邊界185
16.2.7實踐中的Keras 185
16.3更深一層187
16.4小結188
16.5動手研究:Keras遊樂場188

第17章戰勝過度擬合190
17.1詳解過度擬合190
17.1.1過度擬合的成因191
17.1.2過度擬合與低度擬合194
17.2模型正則化195
17.2.1回顧深度網絡195
17.2.2 L1和L2正則化法198
17.3正則化工具箱202
17.4小結203
17.5動手研究:保持簡單204

第18章馴服深度網絡205
18.1理解激活函數205
18.1.1激活函數存在的意義206
18.1.2 S型函數及其運算結果207
18.2超越S型函數211
18.2.1初識ReLU 211
18.2.2選擇正確的函數213
18.3掌握更多的技巧215
18.3. 1更好的權重初始化215
18.3.2加速梯度下降216
18.3.3高級正則化217
18.3.4最後一招:批處理標準化219
18.4小結220
18.5動手研究:10曆元的挑戰220

第19章超越香草神經網絡222
19.1 CIFAR-10數據集223
19.1.1初識CIFAR-10 223
19.1.2難以分類的CIFAR數據224
19.2 CNN的基本結構225
19.2.1圖像就是圖像226
19.2.2卷積226
19.2.3卷積層229
19.3運行卷積230
19.4小結233
19.5動手研究:大量的超參數233

第20章深度學習235
20.1深度學習的崛起235
20.1.1一場完美的革新風暴236
20.1.2臨界點237
20.1 .3未完待續237
20.2離譜的效率238
20.3路在何方240
20.3.1視覺之路241
20.3.2語言之路241
20.3.3圖像生成之路242
20.3.4通天大道寬又闊245
20.3.5動手研究之路246
20.4你的旅程開始了246
附錄A Python語言入門247
A.1 Python是什麼樣的249
A.1.1 Python是動態類型250
A.1.2 Python中重要的縮進250
A.2 Python語言的基本組成251
A. 2.1數據類型和運算符251
A.2.2集合252
A.2.3字符串253
A.2.4循環254
A.3定義和調用函數255
A.3.1命名參數256
A.3.2默認參數257
A.4模塊與包257
A.4.1定義與導入模塊257
A.4.2主要習語259
A.4.3管理包260
A.5創建和使用對象262
A.6就這麼多了263
附錄B機器學習術語264