深度學習是人工智能的前沿技術。本書深入淺出地介紹了深度學習的相關理論和TensorFlow實踐,全書共8章。第1章給出了深度學習的基本概況。第2章詳細介紹了神經(jīng)網(wǎng)絡相關知識,內(nèi)容包括M-P神經(jīng)元模型、感知機、多層神經(jīng)網(wǎng)絡。第3章介紹了被廣泛認可的深度學習框架TensorFlow 2的安裝流程與新特性。第4章詳細介紹了TensorFlow 2的相關語法。第5章介紹了BP算法和常見的優(yōu)化方法。第6章介紹了Keras模塊的使用。第7章和第8章詳細講解了卷積神經(jīng)網(wǎng)絡和循環(huán)神經(jīng)網(wǎng)絡,并給出了相關的實戰(zhàn)項目。 本書結構完整、行文流暢,是一本零基礎入門、通俗易懂、圖文并茂、理論結合實戰(zhàn)的深度學習書籍。對于計算機、人工智能及相關專業(yè)的本科生和研究生,這是一本適合入門與系統(tǒng)學習的教材;對于從事深度學習產(chǎn)品研發(fā)的工程技術人員,本書也有一定的參考價值。
張玉宏,2012年博士畢業(yè)于電子科技大學,大數(shù)據(jù)分析師(高級),2009年~2011年美國西北大學訪問學者,2019年~至今,美國IUPUI高級訪問學者,現(xiàn)執(zhí)教于河南工業(yè)大學,主要研究方向為大數(shù)據(jù)、機器學習等,發(fā)表學術論文30余篇,阿里云棲社區(qū)專欄科技作家,先后出版《深度學習之美》《品味大數(shù)據(jù)》等科技暢銷書6部,參編英文學術專著2部。
目 錄
第1章 深度學習導論 1
1.1 從人工智能到深度學習 2
1.1.1 從感知機到深度學習 2
1.1.2 深度學習的巨大影響 6
1.2 從學習到機器學習 7
1.2.1 什么是學習 7
1.2.2 什么是機器學習 8
1.2.3 機器學習的4個象限 9
1.3 深度學習的內(nèi)涵 10
1.3.1 什么是深度學習 10
1.3.2 生活中的深度學習 12
1.3.3 有沒有淺度學習 13
1.4 本章小結 14
1.5 思考與習題 14
參考資料 14
第2章 神經(jīng)網(wǎng)絡學習 16
2.1 人工神經(jīng)網(wǎng)絡的定義 17
2.2 神經(jīng)網(wǎng)絡的原子單元——感知機 18
2.2.1 感知機的形式化描述 18
2.2.2 感知機名稱的由來 19
2.2.3 感性認識感知機 20
2.2.4 感知機是如何學習的 22
2.2.5 感知機訓練法則 24
2.2.6 感知機中的激活函數(shù) 26
2.2.7 感知機的幾何意義 26
2.2.8 實戰(zhàn):基于Python的感知機實現(xiàn) 27
2.2.9 感知機的表征能力 31
2.3 多層前饋網(wǎng)絡 32
2.3.1 多層網(wǎng)絡解決“異或”問題 32
2.3.2 多層前饋神經(jīng)網(wǎng)絡 34
2.3.3 機器學習本質(zhì)與通用近似定理 35
2.3.4 神經(jīng)網(wǎng)絡結構的設計 37
2.4 神經(jīng)網(wǎng)絡中的損失函數(shù) 38
2.5 常用的激活函數(shù) 40
2.5.1 Sigmoid函數(shù) 40
2.5.2 Tanh函數(shù) 41
2.5.3 ReLU函數(shù) 42
2.6 實戰(zhàn):利用sklearn搭建多層神經(jīng)網(wǎng)絡 43
2.6.1 sklearn簡介 44
2.6.2 sklearn的安裝 44
2.6.3 sklearn搭建多層神經(jīng)網(wǎng)絡實現(xiàn)紅酒分類 45
2.7 本章小結 57
2.8 思考與習題 58
參考資料 58
第3章 初識TensorFlow 60
3.1 TensorFlow概述 61
3.2 TensorFlow特征 62
3.3 深度學習框架比較 63
3.3.1 Theano 63
3.3.2 Keras 64
3.3.3 Caffe 65
3.3.4 PyTorch 66
3.4 利用Anaconda安裝TensorFlow 67
3.4.1 Anaconda的下載與安裝 67
3.4.2 驗證Python是否安裝成功 70
3.4.3 利用conda安裝TensorFlow 71
3.5 運行“Hello World!”版的TensorFlow程序 72
3.5.1 利用TensorFlow 2 編寫的第二個程序 74
3.5.2 TensorFlow 2 的新特性 75
3.6 本章小結 79
3.7 思考與提高 79
參考資料 79
第4章 TensorFlow 基礎語法 80
4.1 TensorFlow的張量思維 81
4.1.1 張量的階 81
4.1.2 張量的尺寸 83
4.2 TensorFlow中的數(shù)據(jù)類型 86
4.2.1 Python基本數(shù)據(jù)類型與TensorFlow的關系 86
4.2.2 數(shù)值類型 87
4.2.3 字符串類型 89
4.2.4 布爾類型 91
4.2.5 張量類型轉(zhuǎn)換 92
4.2.6 TensorFlow中的張量與NumPy數(shù)組 93
4.3 TensorFlow中的常量與變量 97
4.3.1 constant常量 97
4.3.2 Variable變量 98
4.4 常用張量生成方法 100
4.4.1 生成全0的張量 100
4.4.2 生成全1的張量 102
4.4.3 生成全為給定值的張量 103
4.4.4 生成已知分布的隨機數(shù)張量 103
4.4.5 創(chuàng)建特定張量序列 104
4.5 張量的索引和切片 105
4.5.1 索引 105
4.5.2 通過切片訪問 107
4.6 張量的維度伸縮與交換 111
4.6.1 張量中的軸方向 111
4.6.2 張量維度的增加與刪除 111
4.7 張量的合并、分割與復制 112
4.7.1 張量合并 113
4.7.2 張量分割 115
4.8 TensorFlow中的計算 118
4.8.1 按元素計算 118
4.8.2 張量的按軸計算 119
4.9 張量的廣播機制 122
4.9.1 廣播的定義 122
4.9.2 廣播的操作與適用規(guī)則 122
4.10 張量在神經(jīng)網(wǎng)絡中的典型應用 124
4.10.1 標量 124
4.10.2 向量 126
4.10.3 矩陣 126
4.10.4 三維張量 129
4.10.5 四維張量 130
4.10.6 五維張量 130
4.11 本章小結 131
4.12 思考與練習 132
參考資料 132
第5章 BP算法與優(yōu)化方法 133
5.1 為何需要優(yōu)化函數(shù) 134
5.1.1 優(yōu)化的意義 134
5.1.2 優(yōu)化函數(shù)的流程 134
5.2 基于梯度的優(yōu)化算法 136
5.2.1 什么是梯度 136
5.2.2 梯度的代碼實現(xiàn) 138
5.2.3 梯度遞減 142
5.2.4 批量梯度遞減法 145
5.2.5 隨機梯度遞減法 146
5.2.6 小批量梯度遞減法 148
5.2.7 實戰(zhàn):基于梯度遞減的線性回歸算法 148
5.2.8 基于梯度遞減優(yōu)化算法的挑戰(zhàn) 151
5.3 BP算法 152
5.3.1 BP算法的發(fā)展歷程 152
5.3.2 正向傳播信息 153
5.3.3 求導中的鏈式法則 156
5.3.4 誤差反向傳播 158
5.3.5 實戰(zhàn):利用BP算法解決異或問題 160
5.4 TensorFlow中的其他優(yōu)化算法 163
5.5 本章小結 166
5.6 思考與習題 166
參考資料 167
第6章 Keras模塊的使用 168
6.1 Keras與tf.keras模塊 169
6.2 數(shù)據(jù)的加載 170
6.2.1 TensorFlow的經(jīng)典數(shù)據(jù)集 170
6.2.2 Dataset對象 171
6.3 Dataset的變換 173
6.3.1 隨機打散 173
6.3.2 設置批大小 174
6.3.3 數(shù)據(jù)映射 174
6.3.4 循環(huán)訓練 175
6.4 實戰(zhàn):基于梯度遞減的手寫數(shù)字識別MNIST 176
6.4.1 MNIST數(shù)據(jù)集簡介 176
6.4.2 MNIST數(shù)據(jù)的獲取 178
6.4.3 手寫識別任務的分類模型 180
6.4.4 Softmax回歸模型 182
6.4.5 手寫數(shù)字識別MNIST中的Softmax回歸模型 184
6.4.6 TensorFlow中搭建模型的三種方式 185
6.4.7 常用的序貫模型 186
6.4.8 利用tf.keras進行模型搭建 188
6.4.9 利用梯度遞減算法構建模型 191
6.4.10 損失函數(shù)的交叉熵模型 193
6.4.11 tf.keras中的模型編譯 196
6.4.12 模型的訓練與預測 198
6.4.13 訓練模型的保存與讀取 201
6.5 本章小結 205
6.6 思考與練習 206
參考資料 206
第7章 卷積神經(jīng)網(wǎng)絡 207
7.1 概述 208
7.1.1 前饋神經(jīng)網(wǎng)絡的問題所在 208
7.1.2 卷積神經(jīng)網(wǎng)絡的生物學啟示 209
7.1.3 卷積神經(jīng)網(wǎng)絡的發(fā)展歷程 210
7.1.4 深度學習的“端到端”范式 212
7.2 卷積神經(jīng)網(wǎng)絡的概念 213
7.2.1 卷積的數(shù)學定義 213
7.2.2 生活中的卷積 215
7.3 圖像處理中的卷積 215
7.3.1 計算機“視界”中的圖像 215
7.3.2 卷積運算 216
7.3.3 卷積在圖像處理中的應用 219
7.4 卷積神經(jīng)網(wǎng)絡的結構 221
7.5 卷積層要義 222
7.5.1 卷積層的局部連接 222
7.5.2 卷積核深度 223
7.5.3 步幅 223
7.5.4 填充 224
7.5.5 權值共享 226
7.6 激活層 227
7.7 池化層 228
7.8 全連接層 230
7.9 防止過擬合的Dropout機制 231
7.10 經(jīng)典的卷積神經(jīng)網(wǎng)絡結構 232
7.10.1 LeNet-5 233
7.10.2 AlexNet 233
7.10.3 VGGNet 235
7.11 實戰(zhàn):基于卷積神經(jīng)網(wǎng)絡的手寫數(shù)字識別 236
7.11.1 數(shù)據(jù)讀取 237
7.11.2 搭建模型 238
7.11.3 模型訓練 240
7.11.4 可視化展現(xiàn)TensorBoard 242
7.11.5 模型預測 246
7.12 本章小結 248
7.13 思考與練習 248
參考資料 249
第8章 循環(huán)神經(jīng)網(wǎng)絡與LSTM 250
8.1 標準神經(jīng)網(wǎng)絡的缺點 251
8.2 循序神經(jīng)網(wǎng)絡的發(fā)展歷程 252
8.2.1 Hopfield網(wǎng)絡 252
8.2.2 Jordan循環(huán)神經(jīng)網(wǎng)絡 252
8.2.3 Elman循環(huán)神經(jīng)網(wǎng)絡 253
8.2.4 RNN的應用領域 254
8.3 RNN的理論基礎 254
8.3.1 RNN的形式化定義 255
8.3.2 循環(huán)神經(jīng)網(wǎng)絡的生物學機理 256
8.4 常見的RNN拓撲結構 257
8.4.1 one-to-one 257
8.4.2 one-to-many 258
8.4.3 many-to-one 258
8.4.4 many-to-many 258
8.5 RNN的訓練 259
8.5.1 單向RNN建模 259
8.5.2 雙向RNN建模 261
8.5.3 確定優(yōu)化目標函數(shù) 262
8.5.4 參數(shù)求解與BPTT 262
8.6 LSTM的來歷 263
8.7 拆解LSTM 264
8.7.1 改造的神經(jīng)元 264
8.7.2 遺忘門 266
8.7.3 輸入門 267
8.7.4 調(diào)節(jié)門 267
8.7.5 輸出門 268
8.7.6 LSTM的部件功能 269
8.7.7 GRU優(yōu)化 270
8.8 LSTM的訓練流程 270
8.9 自然語言處理的假說 271
8.10 詞向量表示方法 273
8.10.1 獨熱編碼表示 273
8.10.2 分布式表示 275
8.10.3 詞嵌入表示 277
8.11 基于RNN的語言模型 279
8.12 實戰(zhàn):基于RNN 的文本情感分類問題 281
8.12.1 數(shù)據(jù)讀取 281
8.12.2 感性認知數(shù)據(jù) 282
8.12.3 數(shù)據(jù)預處理 284
8.12.4 搭建簡易RNN 286
8.12.5 基于LSTM的優(yōu)化 290
8.12.6 基于GRU的優(yōu)化 291
8.13 本章小結 293
8.14 思考與練習 294
參考資料 294