實戰(zhàn)深度學習——原理、框架及應用前言: 奇點前夜前言
近十年來,伴隨著世界范圍內(nèi)大數(shù)據(jù)和人工智能的迅猛發(fā)展,機器學習中的深度學習一路凱歌高進,在社會生活中的各個領域大放異彩。在為新生應用提供核心算法模型的同時,又滲透到對傳統(tǒng)流程的再造之中,潛移默化地影響著人們身邊的多個方面。即將到來的智能化浪潮,其所依賴的大數(shù)據(jù)、深度學習算法和強算力,使得許多傳統(tǒng)問題有了新的解決方法和思路。
當前,在信息技術、無人服務和互聯(lián)網(wǎng)等新興領域,越來越多的工程師運用深度學習技術來強化產(chǎn)品功能、提升產(chǎn)品性能。在公共安全、金融保險、衛(wèi)生醫(yī)療、文化教育等傳統(tǒng)領域,越來越多的從業(yè)者正積極地設法引入深度學習技術,掀起新一輪的技術革命。在大量的應用需求牽引下,日益增多的學習者正在加入到深度學習的熱潮中。他們可能來自于計算機、電子工程、數(shù)學、軟件工程等相關專業(yè),也可能從其他專業(yè)跨界而來。
對深度學習的研究,需要常懷敬畏之心。很多人把深度學習理解成一個“黑匣子”,知其然而不知其所以然。但是,深度學習提供了從感知到認知的過渡,以及知識的表達和形成過程。從應用角度來看,各個行業(yè)面臨的主要挑戰(zhàn)其實是如何通過深度學習來真正理解現(xiàn)實世界。雖然很多問題已經(jīng)可以在一定程度上運用深度學習技術來解決,例如圖像識別和語音合成,但是現(xiàn)在迫切需要可解釋的人工智能技術,尤其是金融和醫(yī)療等傳統(tǒng)領域,更需要關心其工作原理而非僅僅是其輸出。
作為前沿交叉學科的研究人員,我們認為,如果要將深度學習技術應用到傳統(tǒng)領域并真正發(fā)揮作用,仍然需要剖析深度學習背后的理論、原則和數(shù)學依據(jù)。為此,基于多年積累的豐富的領域知識和經(jīng)驗,以及數(shù)據(jù)和場景,團隊正在研究深度學習的理論問題,例如可解釋性、泛化能力和知識表達。
本書最初起源于團隊自身建設的能力提升所需。我們整理了深度學習的數(shù)學基礎、主流工具和框架,對常用的深度學習模型進行了演練,并收集了一批當前熱門的應用案例作為實戰(zhàn)化操作練習。這本材料隨著團隊新生力量的增加而不斷更新,多次被作為培訓教材使用且反響良好,才促使萌生推向市場的念頭。
本書系統(tǒng)、全面地覆蓋了深度學習的主要原理、方法和應用實踐。主要分為3部分: 第一部分(第1~3章)是基礎知識和算法實戰(zhàn),包括深度學習概念、主流工具及框架,展開分析了神經(jīng)網(wǎng)絡的原理及實現(xiàn)。第二部分(第4~6章)是常用的深度學習模型,對卷積神經(jīng)網(wǎng)絡、循環(huán)神經(jīng)網(wǎng)絡、生成對抗網(wǎng)絡進行了演練。第三部分(第7~11章)通過具體應用場景,詳細分析了基于深度學習的目標檢測、圖像分割、人臉識別和文本自動生成等當前熱點綜合案例,展示如何在實際中解決問題。
本書構建了一套明晰的深度學習體系,同時各章內(nèi)容相對獨立,并提供全套課件、源代碼、數(shù)據(jù)集和使用說明等學習資源。讀者不要求有深度學習或者機器學習的背景知識,只需具備基本的數(shù)學和編程知識,如基礎的線性代數(shù)、微分、概率及Python編程知識。
本書是跨域大數(shù)據(jù)智能分析與應用省級重點實驗室團隊協(xié)同努力的成果,由鄧勁生和莊春華負責搭建整體框架確定實戰(zhàn)內(nèi)容、組織驗證應用和調(diào)度實施,前6章初稿主要由熊煒林執(zhí)筆,后5章初稿主要由王良執(zhí)筆,喬鳳才、尹曉晴、宋省身、趙濤、李勐等參與了文稿修改和部分章節(jié)的編寫,田野制作了課程課件,黎珍、劉娟、張智超、陶應娟等進行實例驗證,伏西平、李勐等參與試點應用。部分內(nèi)容來自于參考文獻和網(wǎng)絡資源轉載,未能逐一溯源和說明引用,特在此表示感謝。
由于深度學習正處于蓬勃發(fā)展之中,而作者的自身水平、理解能力、項目經(jīng)驗和表達能力有限,書中難免存在一些錯誤和不足之處,還望各位讀者不吝賜教。除了配套源代碼和數(shù)據(jù)集之外,本書還備有全套教學課件可供參考,歡迎將本書選作教材的老師垂詢和交流。
作者2020年6月于硯瓦池
目錄
第1章深度學習初識1
1.1什么是深度學習1
1.1.1深度學習與機器學習的關系1
1.1.2深度學習與人工智能的關系2
1.1.3深度學習的應用案例2
1.2機器學習初識4
1.2.1機器學習概述4
1.2.2機器學習的分支5
1.3神經(jīng)網(wǎng)絡初識8
1.3.1神經(jīng)網(wǎng)絡的來源8
1.3.2人工神經(jīng)網(wǎng)絡與神經(jīng)元模型8
1.4本章小結9
思考題10
第2章深度學習主流工具及框架11
2.1開發(fā)環(huán)境的搭建及使用11
2.1.1下載及安裝Anaconda開發(fā)工具11
2.1.2Python庫的導入與添加13
2.1.3Anaconda命令簡介14
2.2深度學習的主要框架15
2.2.1TensorFlow概況16
2.2.2CPU版環(huán)境搭建與調(diào)用17
2.2.3GPU版環(huán)境搭建與調(diào)用19
2.2.4Keras的調(diào)用24
2.3本章小結25
思考題26
第3章神經(jīng)網(wǎng)絡的原理及實現(xiàn)27
3.1數(shù)學基礎27
3.1.1張量27
3.1.2導數(shù)28
3.2神經(jīng)網(wǎng)絡模型及結構29
3.2.1MP神經(jīng)元模型30
3.2.2感知機31
3.2.3前向傳播32
3.2.4反向傳播34
3.3激活函數(shù)35
3.3.1Sigmoid函數(shù)35
3.3.2Tanh函數(shù)36
3.3.3ReLU函數(shù)38
3.3.4Swish函數(shù)39
3.4損失函數(shù)40
3.4.1均值平方差40
3.4.2交叉熵41
3.5優(yōu)化方法: 梯度下降41
3.5.1批量梯度下降42
3.5.2隨機梯度下降42
3.5.3小批量梯度下降42
3.6綜合案例: 搭建簡單的神經(jīng)網(wǎng)絡43
3.6.1基本功能函數(shù)43
3.6.2簡單神經(jīng)網(wǎng)絡的搭建44
3.6.3擬合函數(shù)可視化46
3.7本章小結48
思考題48
第4章卷積神經(jīng)網(wǎng)絡49
4.1卷積神經(jīng)網(wǎng)絡入門49
4.1.1卷積神經(jīng)網(wǎng)絡概述49
4.1.2卷積神經(jīng)網(wǎng)絡的結構50
4.2卷積運算52
4.2.1卷積函數(shù)53
4.2.2卷積實例54
4.3池化運算59
4.3.1池化函數(shù)60
4.3.2池化實例61
4.4綜合案例: 手寫數(shù)字識別65
4.4.1MNIST數(shù)據(jù)集初識65
4.4.2手寫數(shù)字識別模型構建和訓練67
4.5本章小結71
思考題72
第5章循環(huán)神經(jīng)網(wǎng)絡73
5.1循環(huán)神經(jīng)網(wǎng)絡入門73
5.1.1循環(huán)神經(jīng)網(wǎng)絡概述73
5.1.2序列數(shù)據(jù)74
5.1.3循環(huán)神經(jīng)網(wǎng)絡結構75
5.1.4梯度消失和梯度爆炸76
5.2長短期記憶網(wǎng)絡——LSTM78
5.2.1長期依賴問題78
5.2.2長短期記憶網(wǎng)絡結構79
5.3綜合案例: 語義情感分析83
5.4本章小結88
思考題88
第6章生成對抗網(wǎng)絡89
6.1生成對抗網(wǎng)絡初識89
6.1.1生成對抗網(wǎng)絡概述89
6.1.2生成對抗網(wǎng)絡基本模型89
6.2生成對抗網(wǎng)絡的基本原理90
6.3綜合案例: 仿照手寫字體91
6.4本章小結98
思考題98
第7章基于深度學習的目標檢測99
7.1目標檢測基礎99
7.1.1數(shù)據(jù)集99
7.1.2性能指標100
7.1.3錨點101
7.1.4錨框101
7.1.5非極大值抑制101
7.2傳統(tǒng)的目標檢測101
7.2.1ViolaJones102
7.2.2方向梯度直方圖103
7.2.3DPM105
7.2.4綜合案例: DPM行人檢測106
7.3結合候選區(qū)域和CNN分類的目標檢測框架110
7.3.1RCNN110
7.3.2SPPNET111
7.3.3Fast RCNN113
7.3.4Faster RCNN114
7.4回歸問題的端到端的目標檢測框架117
7.4.1YOLO117
7.4.2SSD118
7.4.3綜合案例: YOLO目標檢測118
7.5本章小結122
思考題122
第8章基于深度學習的圖像分割123
8.1基于圖論的方法123
8.1.1NormalizedCut124
8.1.2GraphCut124
8.1.3GrabCut125
8.1.4綜合案例: GrabCut前景提取126
8.2基于聚類的方法127
8.2.1K均值聚類128
8.2.2譜聚類128
8.2.3Meanshift129
8.2.4SLIC129
8.2.5聚類應用130
8.2.6綜合案例: SLIC分割超像素131
8.3基于深度語義的方法132
8.3.1FCN132
8.3.2DeepLab系列133
8.3.3PSPNet133
8.3.4UNet135
8.3.5SegNet135
8.3.6綜合案例: 細胞壁檢測136
8.4本章小結142
思考題142
第9章基于深度學習的人臉識別143
9.1訓練圖像數(shù)據(jù)采集143
9.1.1訓練圖像數(shù)據(jù)源143
9.1.2爬取圖像數(shù)據(jù)集144
9.2CNN人臉識別設計146
9.2.1CNN人臉識別設計方案146
9.2.2CNN圖像處理146
9.2.3圖像預處理148
9.3CNN模型搭建149
9.3.1搭建卷積層150
9.3.2搭建池化層150
9.3.3選取激活函數(shù)151
9.3.4選取優(yōu)化器151
9.3.5自定義損失函數(shù)152
9.3.6設置參數(shù)調(diào)整學習效率152
9.3.7訓練CNN模型154
9.3.8模型保存加載與評估155
9.3.9模型測試156
9.4口罩佩戴識別增強157
9.5本章小結158
思考題158
第10章基于深度學習的文本自動生成159
10.1訓練文本數(shù)據(jù)采集159
10.1.1訓練文本數(shù)據(jù)源159
10.1.2訓練文本數(shù)據(jù)整理160
10.2LSTM五言律詩自動生成設計160
10.2.1文本預處理161
10.2.2文本數(shù)據(jù)標準化161
10.2.3LSTM模型搭建162
10.2.4訓練LSTM模型162
10.3測試LSTM模型163
10.3.1生成序列數(shù)據(jù)163
10.3.2定義采樣方法163
10.4本章小結166
思考題166
第11章深度學習展望167
11.1深度學習的探索方向167
11.1.1設計更好的深度學習框架167
11.1.2發(fā)現(xiàn)更好的網(wǎng)絡模型167
11.2深度學習的應用場景展望168
11.2.1教育領域168
11.2.2金融領域168
11.2.3醫(yī)療領域168
11.2.4文藝領域169
11.2.5無人服務169
11.3本章小結169
參考文獻170