本書通過扎實、詳細的內容和清晰的結構,從算法理論、算法源碼、實驗結果等方面對深度學習算法進行分析和介紹。本書共三篇,第一篇主要介紹深度學習在計算機視覺方向的一些卷積神經網絡,從基礎骨干網絡、輕量級 CNN、模型架構搜索 3 個方向展開,介紹計算機視覺方向的里程碑算法;第二篇主要介紹深度學習在自然語言處理方向的重要突破,包括基礎序列模型和模型預訓練;第三篇主要介紹深度學習在模型優化上的進展,包括模型優化方法。
通過閱讀本書,讀者可以深入理解主流的深度學習基礎算法,搭建起自己的知識體系,領會算法的本質,學習模型優化方法。無論是從事深度學習科研的教師及學生,還是從事算法落地實踐的工作人員,都能從本書中獲益。
有別于以卷積神經網絡、循環神經網絡等基礎概念為核心的同類書籍,本書梳理了近10年來深度學習方向誕生的算法,從算法理論、算法源碼、實驗結果等方面對算法進行分析和介紹,重點討論深度學習在卷積神經網絡、自然語言處理、模型優化等方向的發展歷程以及各個算法的優缺點,分析各個算法是如何針對先前算法的若干問題提出解決方案的。
本書共三篇,第一篇卷積神經網絡,從基礎骨干網絡、輕量級CNN、模型架構搜索3個方向展開,介紹計算機視覺方向的里程碑算法;第二篇自然語言處理,介紹基礎序列模型和模型預訓練;第三篇模型優化,介紹模型優化方法。
劉巖, 澳門大學計算機科學專業碩士, 目前就職于京東零售-技術與數據中心。在學生期間從事人工智能相關研究,發表多篇計算機視覺、自然語言處理等方向的專利和學術論文。畢業后從事深度學習相關工作,擅長前沿人工智能算法的原理分析和應用落地,擅長計算機視覺、自然語言處理等方向的技術, 先后參與并負責了多個深度學習算法在不同場景的業務落地,如光學字符識別、公式識別、人臉識別、手勢識別、視頻摳像、文本分類/命名實體識別、預訓練語言模型、語音識別、圖神經網絡等。目前主要負責電商場景下預訓練語言模型的研發以及輿情風險的智能識別與治理。他的知乎賬號: 大師兄。
第 一篇 卷積神經網絡
第 1章 基礎骨干網絡 3
1.1 起源:LeNet-5和AlexNet 4
1.1.1 從LeNet-5開始4
1.1.2 覺醒:AlexNet 6
1.2 更深:VGG 11
1.2.1 VGG介紹11
1.2.2 VGG的訓練和測試 13
1.3 更寬:GoogLeNet14
1.3.1 背景知識14
1.3.2 Inception v117
1.3.3 GoogLeNet 19
1.3.4 Inception v219
1.3.5 Inception v320
1.3.6 Inception v421
1.3.7 Inception-ResNet23
1.4 跳躍連接:ResNet 26
1.4.1 殘差網絡 26
1.4.2 殘差網絡背后的原理 28
1.4.3 殘差網絡與模型集成 33
1.5 注意力:SENet 33
1.5.1 SE塊 33
1.5.2 SE-Inception 和 SE-ResNet34
1.5.3 SENet 的復雜性分析 35
1.5.4 小結 35
1.6 更密:DenseNet 36
1.6.1 DenseNet 算法解析及源碼實現37
1.6.2 壓縮層 38
1.6.3 小結 38
1.7 模型集成:DPN 39
1.7.1 高階 RNN、DenseNet 和殘差網絡39
1.7.2 DPN 詳解41
1.7.3 小結.42
1.8 像素向量:iGPT 43
1.8.1 iGPT 詳解44
1.8.2 實驗結果分析48
1.8.3 小結 49
1.9 Visual Transformer 之 Swin Transformer 49
1.9.1 網絡結構詳解50
1.9.2 Swin Transformer 家族59
1.9.3 小結.60
1.10 Vision Transformer 之 CSWin Transformer60
1.10.1 CSWin Transformer 概述61
1.10.2 十字形窗口自注意力機制61
1.10.3 局部加強位置編碼 62
1.10.4 CSWin Transformer 塊63
1.10.5 CSWin Transformer 的復雜度 63
1.10.6 小結 64
1.11 MLP :MLP-Mixer 64
1.11.1 網絡結構 64
1.11.2 討論 67
第 2 章 輕量級 CNN68
2.1 SqueezeNet 68
2.1.1 SqueezeNet 的壓縮策略 69
2.1.2 點火模塊 69
2.1.3 SqueezeNet 的網絡結構 70
2.1.4 SqueezeNet 的性能 72
2.1.5 小結 72
2.2 MobileNet v1 和 MobileNet v2 73
2.2.1 MobileNet v1 73
2.2.2 MobileNet v2 77
2.2.3 小結 79
2.3 Xception 80
2.3.1 Inception 回顧 80
2.3.2 Xception 詳解 81
2.3.3 小結 82
2.4 ResNeXt 82
2.4.1 從全連接講起83
2.4.2 簡化 Inception 83
2.4.3 ResNeXt 詳解84
2.4.4 分組卷積 84
2.4.5 小結 85
2.5 ShuffleNet v1 和 ShuffleNet v2 85
2.5.1 ShuffleNet v185
2.5.2 ShuffleNet v288
2.5.3 小結 92
2.6 CondenseNet 92
2.6.1 分組卷積的問題 93
2.6.2 可學習分組卷積 93
2.6.3 架構設計 96
2.6.4 小結 96
第 3 章 模型架構搜索 97
3.1 PolyNet 97
3.1.1 結構多樣性98
3.1.2 多項式模型98
3.1.3 對照實驗 100
3.1.4 Very Deep PolyNet 101
3.1.5 小結102
3.2 NAS 103
3.2.1 NAS-CNN103
3.2.2 NAS-RNN106
3.2.3 小結 108
3.3 NASNet 108
3.3.1 NASNet 控制器 109
3.3.2 NASNet 的強化學習110
3.3.3 計劃 DropPath110
3.3.4 其他超參數111
3.3.5 小結 111
3.4 PNASNet 112
3.4.1 更小的搜索空間 112
3.4.2 SMBO 113
3.4.3 代理函數 114
3.4.4 PNASNet 的實驗結果115
3.4.5 小結 116
3.5 AmoebaNet 116
3.5.1 搜索空間 117
3.5.2 年齡進化 118
3.5.3 AmoebaNet 的網絡結構120
3.5.4 小結 121
3.6 MnasNet 121
3.6.1 優化目標 122
3.6.2 搜索空間 124
3.6.3 優化策略 125
3.6.4 小結 126
3.7 MobileNet v3 126
3.7.1 參考結構 127
3.7.2 網絡搜索 127
3.7.3 人工設計 129
3.7.4 修改 SE 塊 131
3.7.5 Lite R-ASPP 132
3.7.6 小結 133
3.8 EfficientNet v1 133
3.8.1 背景知識 133
3.8.2 EfficientNet v1 詳解135
3.8.3 小結 137
3.9 EfficientNet v2 137
3.9.1 算法動機 137
3.9.2 EfficientNet v2 詳解139
3.10 RegNet 141
3.10.1 設計空間 141
3.10.2 RegNet 詳解 145
3.10.3 小結 151
第二篇 自然語言處理
第 4 章 基礎序列模型 155
4.1 LSTM 和 GRU 155
4.1.1 序列模型的背景 155
4.1.2 LSTM 157
4.1.3 GRU 159
4.1.4 其他 LSTM 159
4.2 注意力機制 160
4.2.1 機器翻譯的注意力機制160
4.2.2 圖解注意力機制 161
4.2.3 經典注意力模型 166
4.2.4 小結 170
4.3 Transformer 170
4.3.1 Transformer 詳解171
4.3.2 位置嵌入 177
4.3.3 小結 178
4.4 Transformer-XL 179
4.4.1 Transformer 的缺點 179
4.4.2 相對位置編碼181
4.4.3 Transformer-XL 詳解 183
4.4.4 小結 185
第 5 章 模型預訓練 186
5.1 RNN 語言模型 187
5.1.1 語言模型中的 RNN187
5.1.2 訓練數據 188
5.1.3 訓練細節 188
5.2 ELMo 189
5.2.1 雙向語言模型189
5.2.2 ELMo 詳解191
5.2.3 應用 ELMo 到下游任務192
5.2.4 小結.192
5.3 GPT-1、GPT-2 和 GPT-3 192
5.3.1 GPT-1:無監督學習193
5.3.2 GPT-2:多任務學習196
5.3.3 GPT-3:海量參數197
5.3.4 小結 200
5.4 BERT 200
5.4.1 BERT 詳解 201
5.4.2 小結 205
5.5 BERT“魔改”之 RoBERTa、ALBERT、MT-DNN 和 XLM 205
5.5.1 成熟版 BERT :RoBERTa 206
5.5.2 更快的 BERT :ALBERT 207
5.5.3 多任務 BERT :MT-DNN 207
5.5.4 多語言 BERT :XLM 209
5.5.5 小結211
5.6 XLNet 211
5.6.1 背景知識.212
5.6.2 XLNet 詳解213
5.6.3 小結.216
5.7 ERNIE(清華大學) 216
5.7.1 加入知識圖譜的動機217
5.7.2 異構信息融合217
5.7.3 DAE.220
5.7.4 ERNIE-T 的微調220
5.7.5 小結221
5.8 ERNIE(百度)和 ERNIE 2.0 221
5.8.1 ERNIE-B222
5.8.2 ERNIE 2.0.223
5.8.3 小結226
第三篇 模型優化
第 6 章 模型優化方法229
6.1 Dropout 230
6.1.1 什么是 Dropout.230
6.1.2 Dropout 的數學原理231
6.1.3 Dropout 是一個正則網絡232
6.1.4 CNN 的 Dropout232
6.1.5 RNN 的 Dropout233
6.1.6 Dropout 的變體234
6.1.7 小結.236
6.2 BN 237
6.2.1 BN 詳解237
6.2.2 BN 的背后原理240
6.2.3 小結.243
6.3 LN .243
6.3.1 BN 的問題.244
6.3.2 LN 詳解.244
6.3.3 對照實驗245
6.3.4 小結247
6.4 WN 247
6.4.1 WN 的計算247
6.4.2 WN 的原理248
6.4.3 BN 和 WN 的關系249
6.4.4 WN 的參數初始化249
6.4.5 均值 BN.249
6.4.6 小結 249
6.5 IN 250
6.5.1 IST 中的 IN250
6.5.2 IN 與 BN 對比250
6.5.3 TensorFlow 中的 IN.251
6.5.4 小結.252
6.6 GN 252
6.6.1 GN 算法252
6.6.2 GN 的源碼253
6.6.3 GN 的原理253
6.6.4 小結 253
6.7 SN 254
6.7.1 SN 詳解.254
6.7.2 SN 的優點.256
6.7.3 小結 256