本教材從編程的角度“解剖”了深度學習的底層技術,通過介紹使用Python庫實現(xiàn)經(jīng)典的深度學習框架的過程,逐步向讀者呈現(xiàn)深度學習的本質;用典型示例深入剖析深度學習在計算機視覺和自然語言處理方面的應用,同時介紹這些示例的TensorFlow實現(xiàn),并在配套代碼中給出相應的飛槳實現(xiàn),以便讀者深刻理解深度學習框架的技術細節(jié);通過目標檢測、中文文本分類、超越文本分類和視頻動作識別等,為讀者呈現(xiàn)最前沿的深度學習技術。本教材可作為高職院校人工智能相關專業(yè)學生的教材,也可作為相關培訓機構的培訓資料。對于廣大的Python深度學習愛好者來說,本教材也是很好的參考用書。
程源,副教授,博士學歷,畢業(yè)于清華大學,廣東機電職業(yè)技術學院人工智能專業(yè)負責人。曾獲得多個獎項,主持多項國家級、省級、校級科研課題。
第一部分 入門篇
1 深度學習概述 2
1.1 讓機器學會學習 2
1.1.1 什么是人工智能 2
1.1.2 從數(shù)據(jù)中學習 3
1.1.3 數(shù)據(jù)表示 3
1.2 深度學習之“深度” 4
1.2.1 深度神經(jīng)網(wǎng)絡 5
1.2.2 神經(jīng)網(wǎng)絡的學習 7
1.3 深度學習的數(shù)據(jù)表示 9
1.3.1 標量、向量、矩陣與張量 9
1.3.2 現(xiàn)實世界中的張量數(shù)據(jù) 11
1.4 為什么要用深度學習 14
1.4.1 深度學習有何不同 14
1.4.2 深度學習的大眾化 15
本章小結 15
2 神經(jīng)網(wǎng)絡入門 16
2.1 神經(jīng)元 16
2.1.1 人工神經(jīng)元 16
2.1.2 激活函數(shù) 18
2.2 多層神經(jīng)網(wǎng)絡 19
2.2.1 分類問題與獨熱編碼 19
2.2.2 MNIST數(shù)據(jù)集 20
2.2.3 神經(jīng)網(wǎng)絡 22
2.2.4 神經(jīng)網(wǎng)絡的輸出 23
2.2.5 softmax函數(shù) 24
2.3 神經(jīng)網(wǎng)絡的前向傳播 26
2.3.1 各層間數(shù)據(jù)傳遞 27
2.3.2 多個樣本情況 28
2.3.3 識別精度 29
2.4 監(jiān)督學習與損失函數(shù) 30
2.4.1 監(jiān)督學習 31
2.4.2 損失函數(shù) 32
2.5 梯度下降法 36
2.5.1 梯度下降 36
2.5.2 梯度的實現(xiàn) 38
2.5.3 梯度下降法的實現(xiàn) 39
2.6 學習算法的實現(xiàn) 41
2.6.1 兩層神經(jīng)網(wǎng)絡模型 42
2.6.2 神經(jīng)網(wǎng)絡的訓練 44
2.6.3 基于測試數(shù)據(jù)的評價 45
2.7 練習題 47
本章小結 47
3 神經(jīng)網(wǎng)絡的反向傳播 48
3.1 反向傳播的基礎知識 48
3.2 反向傳播的實現(xiàn) 49
3.2.1 ReLU層 49
3.2.2 sigmoid層 51
3.2.3 Linear層 51
3.2.4 softmax-with-Loss層 53
3.3 學習算法的實現(xiàn) 55
3.3.1 構建多層神經(jīng)網(wǎng)絡模型 55
3.3.2 隨機梯度下降法 60
3.4 訓練與預測 61
3.4.1 構建訓練器 62
3.4.2 訓練與推理 66
3.5 練習題 71
本章小結 72
4 改善神經(jīng)網(wǎng)絡 73
4.1 優(yōu)化算法 73
4.1.1 動量法 75
4.1.2 AdaGrad 76
4.1.3 RMSprop 77
4.1.4 Adam 79
4.1.5 更新方法比較 80
4.1.6 改進訓練器 82
4.2 數(shù)值穩(wěn)定性和模型初始化 82
4.2.1 梯度消失和梯度爆炸 82
4.2.2 抑制梯度異常初始化 84
4.2.3 權重初始值的比較 85
4.3 正則化與規(guī)范化 87
4.3.1 過擬合與欠擬合 87
4.3.2 權值衰減 89
4.3.3 Dropout正則化 89
4.3.4 批量規(guī)范化 90
4.3.5 改進模型 93
4.4 練習題 95
本章小結 96
5 卷積神經(jīng)網(wǎng)絡 97
5.1 從全連接到卷積 97
5.1.1 卷積運算 97
5.1.2 填充 101
5.1.3 步幅 102
5.1.4 三維數(shù)據(jù)的卷積運算 103
5.2 卷積層 105
5.2.1 卷積計算 105
5.2.2 四維數(shù)組 107
5.2.3 基于im2col函數(shù)的展開 107
5.2.4 卷積層的實現(xiàn) 108
5.3 匯聚層 111
5.3.1 匯聚運算 112
5.3.2 匯聚層的實現(xiàn) 113
5.4 LeNet網(wǎng)絡 114
5.4.1 構建模型 115
5.4.2 模型訓練 120
5.4.3 預測 122
5.5 卷積神經(jīng)網(wǎng)絡的可視化 124
5.6 練習題 126
本章小結 127
6 深度學習實踐 128
6.1 深度學習的工作流程 128
6.1.1 定義任務 128
6.1.2 開發(fā)模型 130
6.1.3 部署模型 133
6.2 訓練一個圖像分類模型 133
6.2.1 創(chuàng)建圖像數(shù)據(jù)集 134
6.2.2 數(shù)據(jù)預處理 135
6.2.3 構建并訓練模型 139
6.3 文本分類 143
6.3.1 準備文本數(shù)據(jù) 143
6.3.2 構建網(wǎng)絡 149
6.4 練習題 151
本章小結 151
第二部分 實戰(zhàn)篇
7 卷積神經(jīng)網(wǎng)絡進階 154
7.1 深度學習框架 154
7.1.1 神經(jīng)網(wǎng)絡剖析 154
7.1.2 實現(xiàn)AlexNet網(wǎng)絡 156
7.1.3 數(shù)據(jù)預處理 158
7.1.4 網(wǎng)絡訓練 159
7.2 數(shù)據(jù)增強 160
7.2.1 使用數(shù)據(jù)增強 160
7.2.2 訓練網(wǎng)絡 162
7.3 使用塊的網(wǎng)絡(VGG) 163
7.3.1 VGG塊 163
7.3.2 VGG概述 164
7.3.3 訓練模型 166
7.4 殘差網(wǎng)絡 169
7.4.1 殘差塊 169
7.4.2 ResNet 171
7.4.3 訓練模型 173
7.5 微調模型 174
7.6 練習題 179
本章小結 180
8 目標檢測 181
8.1 目標檢測的基本概念 181
8.1.1 目標定位 181
8.1.2 正樣本制作 182
8.1.3 交并比 186
8.1.4 先驗框 187
8.1.5 非極大值抑制 189
8.2 YOLOv3 191
8.2.1 基本框架 191
8.2.2 產生候選區(qū)域 193
8.2.3 特征提取 194
8.2.4 解碼預測結果 199
8.2.5 損失函數(shù) 203
8.3 訓練自己的YOLOv3模型 208
8.3.1 數(shù)據(jù)集的準備 208
8.3.2 數(shù)據(jù)集的處理 208
8.3.3 開始網(wǎng)絡訓練 210
8.3.4 訓練結果預測 211
8.4 練習題 212
本章小結 212
9 中文文本分類 213
9.1 詞嵌入 213
9.1.1 什么是詞嵌入 214
9.1.2 利用詞嵌入 215
9.2 循環(huán)神經(jīng)網(wǎng)絡 217
9.2.1 循環(huán)神經(jīng)網(wǎng)絡概述 218
9.2.2 理解LSTM層 219
9.2.3 基于LSTM的中文文本分類 221
9.3 注意力機制 222
9.3.1 注意力提示 223
9.3.2 自注意力 224
9.3.3 多頭注意力 226
9.4 Transformer 228
9.5 位置編碼 230
9.6 練習題 232
本章小結 233
10 超越文本分類 234
10.1 序列到序列的學習 234
10.1.1 編碼器-解碼器架構 234
10.1.2 Transformer解碼器 236
10.2 機器翻譯 239
10.2.1 準備語料 239
10.2.2 端到端Transformer 243
10.3 文本生成 245
10.3.1 如何生成序列數(shù)據(jù) 245
10.3.2 采樣策略的重要性 246
10.3.3 用keras實現(xiàn)文本生成 247
10.3.4 可變溫度采樣的文本生成 249
10.4 練習題 251
本章小結 252
11 視頻動作識別 253
11.1 視頻動作識別與數(shù)據(jù)集 253
11.1.1 數(shù)據(jù)集簡介 253
11.1.2 數(shù)據(jù)集獲取及劃分 254
11.1.3 數(shù)據(jù)集預處理 255
11.2 基于CNN-RNN架構的視頻分類 258
11.2.1 數(shù)據(jù)準備 259
11.2.2 創(chuàng)建序列模型 264
11.2.3 推斷 265
11.3 基于Transformer的視頻分類 267
11.3.1 數(shù)據(jù)準備 268
11.3.2 構建Transformer模型 271
11.3.3 模型推斷 274
11.4 練習題 276
本章小結 276