本書是一本介紹深度學習理論和實戰(zhàn)應(yīng)用的教程,先從數(shù)學基礎(chǔ)和機器學習基礎(chǔ)出發(fā),按照神經(jīng)網(wǎng)絡(luò)的技術(shù)發(fā)展框架由易到難逐步講解深度學習的理論,然后再通過實踐部分,詳細解釋深度學習的應(yīng)用案例,讓讀者既能了解深度學習理論,又能學會使用深度學習框架,實現(xiàn)自己的深度學習模型。主要內(nèi)容包括深度學習的發(fā)展歷史、單層感知器、線性神經(jīng)網(wǎng)絡(luò)、BP神經(jīng)網(wǎng)絡(luò)、深度學習算法卷積神經(jīng)網(wǎng)絡(luò)CNN和長短時記憶網(wǎng)絡(luò)LSTM,以及深度學習算法在圖像、自然語言處理和音頻信號三個方面的實際應(yīng)用。其中,案例實戰(zhàn)部分使用的深度學習框架為Tensorflow 2/Keras。
覃秉豐,AI創(chuàng)業(yè)公司創(chuàng)始人,6年人工智能從業(yè)經(jīng)驗。曾完成過多項圖像,語音,nlp,搜索相關(guān)的人工智能企業(yè)項目,研發(fā)經(jīng)驗豐富。曾給中國移動,中國電信,中國銀行,華夏銀行,太平洋保險,國家電網(wǎng),中海油,格力電器等企業(yè)做過人工智能相關(guān)的企業(yè)內(nèi)訓。從事人工智能教育4年,網(wǎng)絡(luò)課程學員近10萬人。講課通熟易懂,深入淺出,廣受好評。
目 錄
第1章 深度學習背景介紹 1
1.1 人工智能 1
1.2 機器學習 3
1.2.1 訓練數(shù)據(jù)、驗證數(shù)據(jù)和測試數(shù)據(jù) 4
1.2.2 學習方式 4
1.2.3 機器學習常用算法 5
1.3 人工智能、機器學習、神經(jīng)網(wǎng)絡(luò)及深度學習之間的關(guān)系 10
1.4 深度學習的應(yīng)用 11
1.5 神經(jīng)網(wǎng)絡(luò)和深度學習的發(fā)展史 16
1.5.1 神經(jīng)網(wǎng)絡(luò)的誕生:20世紀40年代到20世紀60年代 16
1.5.2 神經(jīng)網(wǎng)絡(luò)的復興:20世紀80年代到20世紀90年代 17
1.5.3 深度學習:2006年至今 17
1.6 深度學習領(lǐng)域中的重要人物 18
1.7 新一輪人工智能爆發(fā)的三要素 19
1.8 參考文獻 19
第2章 搭建Python編程環(huán)境 21
2.1 Python介紹 21
2.2 Anaconda安裝 21
2.3 Jupyter Notebook的簡單使用 25
2.3.1 啟動Jupyter Notebook 26
2.3.2 修改Jupyter Notebook默認啟動路徑 26
2.3.3 Jupyter Notebook瀏覽器無法打開 28
2.3.4 Jupyter Notebook基本操作 28
第3章 單層感知器與線性神經(jīng)網(wǎng)絡(luò) 31
3.1 生物神經(jīng)網(wǎng)絡(luò) 31
3.2 單層感知器 32
3.2.1 單層感知器介紹 32
3.2.2 單層感知器計算舉例 32
3.2.3 單層感知器的另一種表達形式 33
3.3 單層感知器的學習規(guī)則 33
3.3.1 單層感知器的學習規(guī)則介紹 33
3.3.2 單層感知器的學習規(guī)則計算舉例 34
3.4 學習率 37
3.5 模型的收斂條件 38
3.6 模型的超參數(shù)和參數(shù)的區(qū)別 38
3.7 單層感知器分類案例 39
3.8 線性神經(jīng)網(wǎng)絡(luò) 42
3.8.1 線性神經(jīng)網(wǎng)絡(luò)介紹 42
3.8.2 線性神經(jīng)網(wǎng)絡(luò)分類案例 42
3.9 線性神經(jīng)網(wǎng)絡(luò)處理異或問題 45
第4章 BP神經(jīng)網(wǎng)絡(luò) 50
4.1 BP神經(jīng)網(wǎng)絡(luò)介紹及發(fā)展背景 50
4.2 代價函數(shù) 51
4.3 梯度下降法 51
4.3.1 梯度下降法介紹 51
4.3.2 梯度下降法二維例子 53
4.3.3 梯度下降法三維例子 55
4.4 Delta學習規(guī)則 56
4.5 常用激活函數(shù)講解 56
4.5.1 sigmoid函數(shù) 57
4.5.2 tanh函數(shù) 57
4.5.3 softsign函數(shù) 58
4.5.4 ReLU函數(shù) 59
4.6 BP神經(jīng)網(wǎng)絡(luò)模型和公式推導 61
4.6.1 BP網(wǎng)絡(luò)模型 62
4.6.2 BP算法推導 63
4.6.3 BP算法推導的補充說明 65
4.7 BP算法推導結(jié)論總結(jié) 67
4.8 梯度消失與梯度爆炸 67
4.8.1 梯度消失 67
4.8.2 梯度爆炸 69
4.8.3 使用ReLU函數(shù)解決梯度消失和梯度爆炸的問題 69
4.9 使用BP神經(jīng)網(wǎng)絡(luò)解決異或問題 70
4.10 分類模型評估方法 74
4.10.1 準確率/精確率/召回率/F1值 74
4.10.2 混淆矩陣 77
4.11 獨熱編碼 77
4.12 BP神經(jīng)網(wǎng)絡(luò)完成手寫數(shù)字識別 78
4.13 Sklearn手寫數(shù)字識別 83
4.14 參考文獻 84
第5章 深度學習框架Tensorflow基礎(chǔ)使用 85
5.1 Tensorflow介紹 86
5.1.1 Tensorflow簡介 86
5.1.2 靜態(tài)圖和動態(tài)圖機制Eager Execution 86
5.1.3 tf.keras 87
5.2 Tensorflow-cpu安裝 88
5.2.1 Tensorflow-cpu在線安裝 88
5.2.2 安裝過程中可能遇到的問題 89
5.2.3 Tensorflow-cpu卸載 91
5.2.4 Tensorflow-cpu更新 91
5.2.5 Tensorflow-cpu指定版本的安裝 91
5.3 Tensorflow-gpu安裝 91
5.3.1 Tensorflow-gpu了解最新版本情況 91
5.3.2 Tensorflow-gpu安裝CUDA 92
5.3.3 Tensorflow-gpu安裝cuDNN庫 94
5.3.4 Tensorflow-gpu在線安裝 95
5.3.5 Tensorflow-gpu卸載 95
5.3.6 Tensorflow-gpu更新 95
5.4 Tensorflow基本概念 95
5.5 Tensorflow基礎(chǔ)使用 96
5.6 手寫數(shù)字圖片分類任務(wù) 100
5.6.1 MNIST數(shù)據(jù)集介紹 100
5.6.2 softmax函數(shù)介紹 101
5.6.3 簡單MNIST數(shù)據(jù)集分類模型―沒有高級封裝 101
5.6.4 簡單MNIST數(shù)據(jù)集分類模型―keras高級封裝 104
第6章 網(wǎng)絡(luò)優(yōu)化方法 106
6.1 交叉熵代價函數(shù) 106
6.1.1 均方差代價函數(shù)的缺點 106
6.1.2 引入交叉熵代價函數(shù) 109
6.1.3 交叉熵代價函數(shù)推導過程 109
6.1.4 softmax與對數(shù)似然代價函數(shù) 110
6.1.5 交叉熵程序 112
6.2 過擬合 114
6.2.1 什么是過擬合 114
6.2.2 抵抗過擬合的方法 117
6.3 數(shù)據(jù)增強 117
6.4 提前停止訓練 119
6.5 Dropout 121
6.5.1 Dropout介紹 121
6.5.2 Dropout程序 123
6.6 正則化 125
6.6.1 正則化介紹 125
6.6.2 正則化程序 126
6.7 標簽平滑 129
6.7.1 標簽平滑介紹 129
6.7.2 標簽平滑程序 130
6.8 優(yōu)化器 132
6.8.1 梯度下降法 132
6.8.2 Momentum 133
6.8.3 NAG 133
6.8.4 Adagrad 133
6.8.5 Adadelta 134
6.8.6 RMRprop 134
6.8.7 Adam 134
6.8.8 優(yōu)化器程序 135
6.9 參考文獻 137
第7章 Tensorflow模型的保存和載入 138
7.1 Keras模型保存和載入 138
7.1.1 Keras模型保存 138
7.1.2 Keras模型載入 139
7.2 SavedModel模型保存和載入 140
7.2.1 SavedModel模型保存 140
7.2.2 SavedModel模型載入 141
7.3 單獨保存模型的結(jié)構(gòu) 142
7.3.1 保存模型的結(jié)構(gòu) 142
7.3.2 載入模型結(jié)構(gòu) 143
7.4 單獨保存模型參數(shù) 144
7.4.1 保存模型參數(shù) 144
7.4.2 載入模型參數(shù) 145
7.5 ModelCheckpoint自動保存模型 146
7.6 Checkpoint模型保存和載入 149
7.6.1 Checkpoint模型保存 149
7.6.2 Checkpoint模型載入 151
第8章 卷積神經(jīng)網(wǎng)絡(luò)(CNN) 154
8.1 計算機視覺介紹 154
8.1.1 計算機視覺應(yīng)用介紹 154
8.1.2 計算機視覺技術(shù)介紹 155
8.2 卷積神經(jīng)網(wǎng)簡介 158
8.2.1 BP神經(jīng)網(wǎng)絡(luò)存在的問題 158
8.2.2 局部感受野和權(quán)值共享 158
8.3 卷積的具體計算 159
8.4 卷積的步長 161
8.5 不同的卷積核 162
8.6 池化 163
8.7 Padding 164
8.8 常見的卷積計算總結(jié) 166
8.8.1 對1張圖像進行卷積生成1張?zhí)卣鲌D 166
8.8.2 對1張圖像進行卷積生成多張?zhí)卣鲌D 166
8.8.3 對多張圖像進行卷積生成1張?zhí)卣鲌D 167
8.8.4 對多張圖像進行卷積生成多張?zhí)卣鲌D 168
8.9 經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò) 168
8.10 卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于MNIST數(shù)據(jù)集分類 170
8.11 識別自己寫的數(shù)字圖片 172
8.12 CIFAR-10數(shù)據(jù)集分類 175
8.13 參考文獻 177
第9章 序列模型 178
9.1 序列模型應(yīng)用 178
9.2 循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN) 179
9.2.1 RNN介紹 179
9.2.2 Elman network和Jordan network 180
9.3 RNN的不同架構(gòu) 180
9.3.1 一對一架構(gòu) 180
9.3.2 多對一架構(gòu) 181
9.3.3 多對多架構(gòu) 181
9.3.4 一對多架構(gòu) 181
9.3.5 Seq2Seq架構(gòu) 182
9.4 傳統(tǒng)RNN的缺點 182
9.5 長短時記憶網(wǎng)絡(luò)(LSTM) 183
9.6 Peephole LSTM和FC-LSTM 186
9.6.1 Peephole LSTM介紹 186
9.6.2 FC-LSTM介紹 187
9.7 其他RNN模型 188
9.7.1 門控循環(huán)單元(GRU) 188
9.7.2 雙向RNN 189
9.7.3 堆疊的雙向RNN 190
9.8 LSTM網(wǎng)絡(luò)應(yīng)用于MNIST數(shù)據(jù)集分類 190
9.9 參考文獻 192
第10章 經(jīng)典圖像識別模型介紹(上) 193
10.1 圖像數(shù)據(jù)集 193
10.1.1 圖像數(shù)據(jù)集介紹 193
10.1.2 ImageNet的深遠影響 194
10.1.3 ImageNet Challenge歷年優(yōu)秀作品 195
10.2 AlexNet 196
10.3 VGGNet 199
10.4 GoogleNet 201
10.4.1 1×1卷積介紹 202
10.4.2 Inception結(jié)構(gòu) 203
10.4.3 GoogleNet網(wǎng)絡(luò)結(jié)構(gòu) 205
10.5 Batch Normalization 208
10.5.1 Batch Normalization提出背景 208
10.5.2 數(shù)據(jù)標準化(Normalization) 209
10.5.3 Batch Normalization模型訓練階段 209
10.5.4 Batch Normalization模型預測階段 210
10.5.5 Batch Normalization作用分析 211
10.6 ResNet 212
10.6.1 ResNet背景介紹 212
10.6.2 殘差塊介紹 213
10.6.3 ResNet網(wǎng)絡(luò)結(jié)構(gòu) 214
10.6.4 ResNet-V2 219
10.7 參考文獻 221
第11章 經(jīng)典圖像識別模型介紹(下) 222
11.1 Inception模型系列 222
11.1.1 Inception-v2/v3優(yōu)化策略 222
11.1.2 Inception-v2/v3模型結(jié)構(gòu) 224
11.1.3 Inception-v4和Inception-ResNet介紹 229
11.2 ResNeXt 233
11.2.1 分組卷積介紹 233
11.2.2 ResNeXt中的分組卷積 235
11.2.3 ResNeXt的網(wǎng)絡(luò)結(jié)構(gòu) 236
11.3 SENet 238
11.3.1 SENet介紹 239
11.3.2 SENet結(jié)果分析 242
11.4 參考文獻 244
第12章 圖像識別項目實戰(zhàn) 245
12.1 圖像數(shù)據(jù)準備 245
12.1.1 數(shù)據(jù)集介紹 245
12.1.2 數(shù)據(jù)集準備 246
12.1.3 切分數(shù)據(jù)集程序 247
12.2 AlexNet圖像識別 249
12.3 VGGNet圖像識別 253
12.4 函數(shù)式模型 255
12.4.1 函數(shù)式模型介紹 255
12.4.2 使用函數(shù)式模型進行MNIST圖像識別 256
12.5 模型可視化 257
12.5.1 使用plot_model進行模型可視化 257
12.5.2 plot_model升級版 260
12.6 GoogleNet圖像識別 261
12.7 Batch Normalization使用 263
12.8 ResNet圖像識別 265
12.9 ResNeXt圖像識別 267
12.10 SENet圖像識別 270
12.11 使用預訓練模型進行遷移學習 274
12.11.1 使用訓練好的模型進行圖像識別 274
12.11.2 使用訓練好的模型進行遷移學習 276
12.11.3 載入訓練好的模型進行預測 279
第13章 驗證碼識別項目實戰(zhàn) 282
13.1 多任務(wù)學習介紹 282
13.2 驗證碼數(shù)據(jù)集生成 283
13.3 tf.data介紹 285
13.3.1 tf.data概述 285
13.3.2 使用tf.data完成多任務(wù)學習:驗證碼識別 286
13.4 使用自定義數(shù)據(jù)生成器完成驗證碼識別 294
13.4.1 使用自定義數(shù)據(jù)生成器完成模型訓練 294
13.4.2 使用自定義數(shù)據(jù)生成器完成模型預測 298
13.5 挑戰(zhàn)變長驗證碼識別 302
13.5.1 挑戰(zhàn)變長驗證碼識別模型訓練 302
13.5.2 挑戰(zhàn)變長驗證碼識別模型預測 308
13.6 CTC算法 313
13.6.1 CTC算法介紹 313
13.6.2 貪心算法(Greedy Search)和集束搜索算法(Beam Search) 314
13.6.3 CTC存在的問題 316
13.6.4 CTC算法:驗證碼識別 316
第14章 自然語言處理(NLP)發(fā)展歷程(上) 329
14.1 NLP應(yīng)用介紹 329
14.2 從傳統(tǒng)語言模型到神經(jīng)語言模型 332
14.2.1 規(guī)則模型 332
14.2.2 統(tǒng)計語言模型 333
14.2.3 詞向量 334
14.2.4 神經(jīng)語言模型 336
14.3 word2vec 338
14.3.1 word2vec介紹 338
14.3.2 word2vec模型訓練 338
14.3.3 word2vec訓練技巧和可視化效果 339
14.4 CNN在NLP領(lǐng)域中的應(yīng)用 340
14.5 RNN在NLP領(lǐng)域中的應(yīng)用 342
14.6 Seq2Seq模型在NLP領(lǐng)域中的應(yīng)用 343
14.7 Attention機制 344
14.7.1 Attention介紹 344
14.7.2 Bahdanau Attention介紹 346
14.7.3 Luong Attention介紹 348
14.7.4 谷歌機器翻譯系統(tǒng)介紹 351
14.7.5 Attention機制在視覺和語音領(lǐng)域的應(yīng)用 352
14.8 參考文獻 354
第15章 自然語言處理(NLP)發(fā)展歷程(下) 355
15.1 NLP新的開始:Transformer模型 355
15.1.1 Transformer模型結(jié)構(gòu)和輸入數(shù)據(jù)介紹 355
15.1.2 Self-Attention介紹 357
15.1.3 Multi-Head Attention介紹 360
15.1.4 Layer Normalization介紹 363
15.1.5 Decoder結(jié)構(gòu)介紹 364
15.1.6 Decoder中的Multi-Head Attention和模型訓練 365
15.2 BERT模型 367
15.2.1 BERT模型介紹 368
15.2.2 BERT模型訓練 369
15.2.3 BERT模型應(yīng)用 370
15.3 參考文獻 373
第16章 NLP任務(wù)項目實戰(zhàn) 374
16.1 一維卷積英語電影評論情感分類項目 374
16.1.1 項目數(shù)據(jù)和模型說明 374
16.1.2 一維卷積英語電影評論情感分類程序 375
16.2 二維卷積中文微博情感分類項目 378
16.3 雙向LSTM中文微博情感分類項目 384
16.4 堆疊雙向LSTM中文分詞標注項目 387
16.4.1 中文分詞標注模型訓練 387
16.4.2 維特比算法 391
16.4.3 中文分詞標注模型預測 393
16.5 最新的一些激活函數(shù)介紹 397
16.5.1 Leaky ReLU 397
16.5.2 ELU 399
16.5.3 SELU 400
16.5.4 GELU 401
16.5.5 Swish 402
16.6 BERT模型的簡單使用 403
16.6.1 安裝tf2-bert模塊并準備預訓練模型 403
16.6.2 使用BERT模型進行文本特征提取 404
16.6.3 使用BERT模型進行完形填空 406
16.7 BERT電商用戶多情緒判斷項目 407
16.7.1 項目背景介紹 407
16.7.2 模型訓練 408
16.7.3 模型預測 412
16.8 參考文獻 415
第17章 音頻信號處理 416
17.1 深度學習在聲音領(lǐng)域的應(yīng)用 416
17.2 MFCC和Mel Filter Banks 417
17.2.1 音頻數(shù)據(jù)采集 417
17.2.2 分幀加窗 418
17.2.3 傅里葉變換 419
17.2.4 梅爾濾波器組 421
17.2.5 梅爾頻率倒譜系數(shù)(MFCC) 423
17.3 語音分類項目 425
17.3.1 librosa介紹 425
17.3.2 音頻分類項目―模型訓練 427
17.3.3 音頻分類項目―模型預測 430
第18章 圖像風格轉(zhuǎn)換 433
18.1 圖像風格轉(zhuǎn)換實現(xiàn)原理 433
18.1.1 代價函數(shù)的定義 434
18.1.2 格拉姆矩陣介紹 435
18.2 圖像風格轉(zhuǎn)換項目實戰(zhàn) 436
18.3 遮擋圖像風格轉(zhuǎn)換項目實戰(zhàn) 441
18.4 參考文獻 443
第19章 生成對抗網(wǎng)絡(luò) 444
19.1 生成對抗網(wǎng)絡(luò)的應(yīng)用 444
19.2 DCGAN介紹 447
19.3 手寫數(shù)字圖像生成 449
19.4 參考文獻 454
第20章 模型部署 455
20.1 Tensorflow Serving環(huán)境部署 455
20.2 運行客戶端和服務(wù)器程序 456
20.2.1 準備SavedModel模型 456
20.2.2 啟動Tensorflow Serving服務(wù)器程序 457
20.2.3 Tensorflow Serving客戶端gRPC程序 459
20.2.4 Tensorflow Serving客戶端REST API程序 461
專業(yè)術(shù)語匯總 463
結(jié)束語 471