本書是深度學習真正意義上的入門書,深刻淺出地剖析了深度學習的原理和相關技術。書中使用Python3,儘可能不依賴外部庫或工具,從基本的數學知識出發,帶領讀者從零建立一個經典的深度學習網絡,使讀者在此過程當中逐步理解深度學習。書中不只介紹了深度學習和神經網絡的概念、特徵等基礎知識,對偏差反向傳播法、卷積神經網絡等也有深刻講解,此外還介紹了深度學習相關的實用技巧,自動駕駛、圖像生成、強化學習等方面的應用,以及爲何加深層能夠提升識別精度等「爲何」的問題。python
目錄
譯者序 xiii
前言 xv
第1章 Python入門 1
1.1 Python是什麼 1
1.2 Python的安裝 2
1.2.1 Python版本 2
1.2.2 使用的外部庫 2
1.2.3 Anaconda發行版 3
1.3 Python解釋器 4
1.3.1 算術計算 4
1.3.2 數據類型 5
1.3.3 變量 5
1.3.4 列表 6
1.3.5 字典 7
1.3.6 布爾型 7
1.3.7 if 語句 8
1.3.8 for 語句 8
1.3.9 函數 9
1.4 Python腳本文件 9
1.4.1 保存爲文件 9
1.4.2 類 10
1.5 NumPy 11
1.5.1 導入NumPy 11
1.5.2 生成NumPy數組 12
1.5.3 NumPy 的算術運算 12
1.5.4 NumPy的N維數組 13
1.5.5 廣播 14
1.5.6 訪問元素 15
1.6 Matplotlib 16
1.6.1 繪製簡單圖形 16
1.6.2 pyplot 的功能 17
1.6.3 顯示圖像 18
1.7 小結 19
第2章 感知機 21
2.1 感知機是什麼 21
2.2 簡單邏輯電路 23
2.2.1 與門 23
2.2.2 與非門和或門 23
2.3 感知機的實現 25
2.3.1 簡單的實現 25
2.3.2 導入權重和偏置 26
2.3.3 使用權重和偏置的實現 26
2.4 感知機的侷限性 28
2.4.1 異或門 28
2.4.2 線性和非線性 30
2.5 多層感知機 31
2.5.1 已有門電路的組合 31
2.5.2 異或門的實現 33
2.6 從與非門到計算機 35
2.7 小結 36
第3章 神經網絡 37
3.1 從感知機到神經網絡 37
3.1.1 神經網絡的例子 37
3.1.2 複習感知機 38
3.1.3 激活函數登場 40
3.2 激活函數 42
3.2.1 sigmoid 函數 42
3.2.2 階躍函數的實現 43
3.2.3 階躍函數的圖形 44
3.2.4 sigmoid 函數的實現 45
3.2.5 sigmoid 函數和階躍函數的比較 46
3.2.6 非線性函數 48
3.2.7 ReLU函數 49
3.3 多維數組的運算 50
3.3.1 多維數組 50
3.3.2 矩陣乘法 51
3.3.3 神經網絡的內積 55
3.4 3 層神經網絡的實現 56
3.4.1 符號確認 57
3.4.2 各層間信號傳遞的實現 58
3.4.3 代碼實現小結 62
3.5 輸出層的設計 63
3.5.1 恆等函數和softmax 函數 64
3.5.2 實現softmax 函數時的注意事項 66
3.5.3 softmax 函數的特徵 67
3.5.4 輸出層的神經元數量 68
3.6 手寫數字識別 69
3.6.1 MNIST數據集 70
3.6.2 神經網絡的推理處理 73
3.6.3 批處理 75
3.7 小結 79
第4章 神經網絡的學習 81
4.1 從數據中學習 81
4.1.1 數據驅動 82
4.1.2 訓練數據和測試數據 84
4.2 損失函數 85
4.2.1 均方偏差 85
4.2.2 交叉熵偏差 87
4.2.3 mini-batch 學習 88
4.2.4 mini-batch 版交叉熵偏差的實現 91
4.2.5 爲什麼要設定損失函數 92
4.3 數值微分 94
4.3.1 導數 94
4.3.2 數值微分的例子 96
4.3.3 偏導數 98
4.4 梯度 100
4.4.1 梯度法 102
4.4.2 神經網絡的梯度 106
4.5 學習算法的實現 109
4.5.1 2 層神經網絡的類 110
4.5.2 mini-batch 的實現 114
4.5.3 基於測試數據的評價 116
4.6 小結 118
第5章 偏差反向傳播法 121
5.1 計算圖 121
5.1.1 用計算圖求解 122
5.1.2 局部計算 124
5.1.3 爲什麼用計算圖解題 125
5.2 鏈式法則 126
5.2.1 計算圖的反向傳播 127
5.2.2 什麼是鏈式法則 127
5.2.3 鏈式法則和計算圖 129
5.3 反向傳播 130
5.3.1 加法節點的反向傳播 130
5.3.2 乘法節點的反向傳播 132
5.3.3 蘋果的例子 133
5.4 簡單層的實現 135
5.4.1 乘法層的實現 135
5.4.2 加法層的實現 137
5.5 激活函數層的實現 139
5.5.1 ReLU層 139
5.5.2 Sigmoid 層 141
5.6 AffineSoftmax層的實現 144
5.6.1 Affine層 144
5.6.2 批版本的Affine層 148
5.6.3 Softmax-with-Loss 層 150
5.7 偏差反向傳播法的實現 154
5.7.1 神經網絡學習的全貌圖 154
5.7.2 對應偏差反向傳播法的神經網絡的實現 155
5.7.3 偏差反向傳播法的梯度確認 158
5.7.4 使用偏差反向傳播法的學習 159
5.8 小結 161
第6章 與學習相關的技巧 163
6.1 參數的更新 163
6.1.1 探險家的故事 164
6.1.2 SGD 164
6.1.3 SGD的缺點 166
6.1.4 Momentum 168
6.1.5 AdaGrad 170
6.1.6 Adam 172
6.1.7 使用哪一種更新方法呢 174
6.1.8 基於MNIST數據集的更新方法的比較 175
6.2 權重的初始值 176
6.2.1 能夠將權重初始值設爲0 嗎 176
6.2.2 隱藏層的激活值的分佈 177
6.2.3 ReLU的權重初始值 181
6.2.4 基於MNIST數據集的權重初始值的比較 183
6.3 Batch Normalization 184
6.3.1 Batch Normalization 的算法 184
6.3.2 Batch Normalization 的評估 186
6.4 正則化 188
6.4.1 過擬合 189
6.4.2 權值衰減 191
6.4.3 Dropout 192
6.5 超參數的驗證 195
6.5.1 驗證數據 195
6.5.2 超參數的最優化 196
6.5.3 超參數最優化的實現 198
6.6 小結 200
第7章 卷積神經網絡 201
7.1 總體結構 201
7.2 卷積層 202
7.2.1 全鏈接層存在的問題 203
7.2.2 卷積運算 203
7.2.3 填充 206
7.2.4 步幅 207
7.2.5 3 維數據的卷積運算 209
7.2.6 結合方塊思考 211
7.2.7 批處理 213
7.3 池化層 214
7.4 卷積層和池化層的實現 216
7.4.1 4 維數組 216
7.4.2 基於im2col 的展開 217
7.4.3 卷積層的實現 219
7.4.4 池化層的實現 222
7.5 CNN的實現 224
7.6 CNN的可視化 228
7.6.1 第1 層權重的可視化 228
7.6.2 基於分層結構的信息提取 230
7.7 具備表明性的CNN 231
7.7.1 LeNet 231
7.7.2 AlexNet 232
7.8 小結 233
第8章 深度學習 235
8.1 加深網絡 235
8.1.1 向更深的網絡出發 235
8.1.2 進一步提升識別精度 238
8.1.3 加深層的動機 240
8.2 深度學習的小歷史 242
8.2.1 ImageNet 243
8.2.2 VGG 244
8.2.3 GoogLeNet 245
8.2.4 ResNet 246
8.3 深度學習的高速化 248
8.3.1 須要努力解決的問題 248
8.3.2 基於GPU的高速化 249
8.3.3 分佈式學習 250
8.3.4 運算精度的位數縮減 252
8.4 深度學習的應用案例 253
8.4.1 物體檢測 253
8.4.2 圖像分割 255
8.4.3 圖像標題的生成 256
8.5 深度學習的將來 258
8.5.1 圖像風格變換 258
8.5.2 圖像的生成 259
8.5.3 自動駕駛 261
8.5.4 Deep Q-Network(強化學習) 262
8.6 小結 264
附錄A Softmax-with-Loss 層的計算圖 267
A.1 正向傳播 268
A.2 反向傳播 270
A.3 小結 277
參考文獻 279
下載連接算法