實戰(zhàn)深度學(xué)習(xí)——原理、框架及應(yīng)用前言: 奇點前夜前言
近十年來,伴隨著世界范圍內(nèi)大數(shù)據(jù)和人工智能的迅猛發(fā)展,機器學(xué)習(xí)中的深度學(xué)習(xí)一路凱歌高進,在社會生活中的各個領(lǐng)域大放異彩。在為新生應(yīng)用提供核心算法模型的同時,又滲透到對傳統(tǒng)流程的再造之中,潛移默化地影響著人們身邊的多個方面。即將到來的智能化浪潮,其所依賴的大數(shù)據(jù)、深度學(xué)習(xí)算法和強算力,使得許多傳統(tǒng)問題有了新的解決方法和思路。
當前,在信息技術(shù)、無人服務(wù)和互聯(lián)網(wǎng)等新興領(lǐng)域,越來越多的工程師運用深度學(xué)習(xí)技術(shù)來強化產(chǎn)品功能、提升產(chǎn)品性能。在公共安全、金融保險、衛(wèi)生醫(yī)療、文化教育等傳統(tǒng)領(lǐng)域,越來越多的從業(yè)者正積極地設(shè)法引入深度學(xué)習(xí)技術(shù),掀起新一輪的技術(shù)革命。在大量的應(yīng)用需求牽引下,日益增多的學(xué)習(xí)者正在加入到深度學(xué)習(xí)的熱潮中。他們可能來自于計算機、電子工程、數(shù)學(xué)、軟件工程等相關(guān)專業(yè),也可能從其他專業(yè)跨界而來。
對深度學(xué)習(xí)的研究,需要常懷敬畏之心。很多人把深度學(xué)習(xí)理解成一個“黑匣子”,知其然而不知其所以然。但是,深度學(xué)習(xí)提供了從感知到認知的過渡,以及知識的表達和形成過程。從應(yīng)用角度來看,各個行業(yè)面臨的主要挑戰(zhàn)其實是如何通過深度學(xué)習(xí)來真正理解現(xiàn)實世界。雖然很多問題已經(jīng)可以在一定程度上運用深度學(xué)習(xí)技術(shù)來解決,例如圖像識別和語音合成,但是現(xiàn)在迫切需要可解釋的人工智能技術(shù),尤其是金融和醫(yī)療等傳統(tǒng)領(lǐng)域,更需要關(guān)心其工作原理而非僅僅是其輸出。
作為前沿交叉學(xué)科的研究人員,我們認為,如果要將深度學(xué)習(xí)技術(shù)應(yīng)用到傳統(tǒng)領(lǐng)域并真正發(fā)揮作用,仍然需要剖析深度學(xué)習(xí)背后的理論、原則和數(shù)學(xué)依據(jù)。為此,基于多年積累的豐富的領(lǐng)域知識和經(jīng)驗,以及數(shù)據(jù)和場景,團隊正在研究深度學(xué)習(xí)的理論問題,例如可解釋性、泛化能力和知識表達。
本書最初起源于團隊自身建設(shè)的能力提升所需。我們整理了深度學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)、主流工具和框架,對常用的深度學(xué)習(xí)模型進行了演練,并收集了一批當前熱門的應(yīng)用案例作為實戰(zhàn)化操作練習(xí)。這本材料隨著團隊新生力量的增加而不斷更新,多次被作為培訓(xùn)教材使用且反響良好,才促使萌生推向市場的念頭。
本書系統(tǒng)、全面地覆蓋了深度學(xué)習(xí)的主要原理、方法和應(yīng)用實踐。主要分為3部分: 第一部分(第1~3章)是基礎(chǔ)知識和算法實戰(zhàn),包括深度學(xué)習(xí)概念、主流工具及框架,展開分析了神經(jīng)網(wǎng)絡(luò)的原理及實現(xiàn)。第二部分(第4~6章)是常用的深度學(xué)習(xí)模型,對卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)、生成對抗網(wǎng)絡(luò)進行了演練。第三部分(第7~11章)通過具體應(yīng)用場景,詳細分析了基于深度學(xué)習(xí)的目標檢測、圖像分割、人臉識別和文本自動生成等當前熱點綜合案例,展示如何在實際中解決問題。
本書構(gòu)建了一套明晰的深度學(xué)習(xí)體系,同時各章內(nèi)容相對獨立,并提供全套課件、源代碼、數(shù)據(jù)集和使用說明等學(xué)習(xí)資源。讀者不要求有深度學(xué)習(xí)或者機器學(xué)習(xí)的背景知識,只需具備基本的數(shù)學(xué)和編程知識,如基礎(chǔ)的線性代數(shù)、微分、概率及Python編程知識。
本書是跨域大數(shù)據(jù)智能分析與應(yīng)用省級重點實驗室團隊協(xié)同努力的成果,由鄧勁生和莊春華負責(zé)搭建整體框架確定實戰(zhàn)內(nèi)容、組織驗證應(yīng)用和調(diào)度實施,前6章初稿主要由熊煒林執(zhí)筆,后5章初稿主要由王良執(zhí)筆,喬鳳才、尹曉晴、宋省身、趙濤、李勐等參與了文稿修改和部分章節(jié)的編寫,田野制作了課程課件,黎珍、劉娟、張智超、陶應(yīng)娟等進行實例驗證,伏西平、李勐等參與試點應(yīng)用。部分內(nèi)容來自于參考文獻和網(wǎng)絡(luò)資源轉(zhuǎn)載,未能逐一溯源和說明引用,特在此表示感謝。
由于深度學(xué)習(xí)正處于蓬勃發(fā)展之中,而作者的自身水平、理解能力、項目經(jīng)驗和表達能力有限,書中難免存在一些錯誤和不足之處,還望各位讀者不吝賜教。除了配套源代碼和數(shù)據(jù)集之外,本書還備有全套教學(xué)課件可供參考,歡迎將本書選作教材的老師垂詢和交流。
作者2020年6月于硯瓦池
目錄
第1章深度學(xué)習(xí)初識1
1.1什么是深度學(xué)習(xí)1
1.1.1深度學(xué)習(xí)與機器學(xué)習(xí)的關(guān)系1
1.1.2深度學(xué)習(xí)與人工智能的關(guān)系2
1.1.3深度學(xué)習(xí)的應(yīng)用案例2
1.2機器學(xué)習(xí)初識4
1.2.1機器學(xué)習(xí)概述4
1.2.2機器學(xué)習(xí)的分支5
1.3神經(jīng)網(wǎng)絡(luò)初識8
1.3.1神經(jīng)網(wǎng)絡(luò)的來源8
1.3.2人工神經(jīng)網(wǎng)絡(luò)與神經(jīng)元模型8
1.4本章小結(jié)9
思考題10
第2章深度學(xué)習(xí)主流工具及框架11
2.1開發(fā)環(huán)境的搭建及使用11
2.1.1下載及安裝Anaconda開發(fā)工具11
2.1.2Python庫的導(dǎo)入與添加13
2.1.3Anaconda命令簡介14
2.2深度學(xué)習(xí)的主要框架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本章小結(jié)25
思考題26
第3章神經(jīng)網(wǎng)絡(luò)的原理及實現(xiàn)27
3.1數(shù)學(xué)基礎(chǔ)27
3.1.1張量27
3.1.2導(dǎo)數(shù)28
3.2神經(jīng)網(wǎng)絡(luò)模型及結(jié)構(gòu)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)絡(luò)43
3.6.1基本功能函數(shù)43
3.6.2簡單神經(jīng)網(wǎng)絡(luò)的搭建44
3.6.3擬合函數(shù)可視化46
3.7本章小結(jié)48
思考題48
第4章卷積神經(jīng)網(wǎng)絡(luò)49
4.1卷積神經(jīng)網(wǎng)絡(luò)入門49
4.1.1卷積神經(jīng)網(wǎng)絡(luò)概述49
4.1.2卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)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ù)字識別模型構(gòu)建和訓(xùn)練67
4.5本章小結(jié)71
思考題72
第5章循環(huán)神經(jīng)網(wǎng)絡(luò)73
5.1循環(huán)神經(jīng)網(wǎng)絡(luò)入門73
5.1.1循環(huán)神經(jīng)網(wǎng)絡(luò)概述73
5.1.2序列數(shù)據(jù)74
5.1.3循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)75
5.1.4梯度消失和梯度爆炸76
5.2長短期記憶網(wǎng)絡(luò)——LSTM78
5.2.1長期依賴問題78
5.2.2長短期記憶網(wǎng)絡(luò)結(jié)構(gòu)79
5.3綜合案例: 語義情感分析83
5.4本章小結(jié)88
思考題88
第6章生成對抗網(wǎng)絡(luò)89
6.1生成對抗網(wǎng)絡(luò)初識89
6.1.1生成對抗網(wǎng)絡(luò)概述89
6.1.2生成對抗網(wǎng)絡(luò)基本模型89
6.2生成對抗網(wǎng)絡(luò)的基本原理90
6.3綜合案例: 仿照手寫字體91
6.4本章小結(jié)98
思考題98
第7章基于深度學(xué)習(xí)的目標檢測99
7.1目標檢測基礎(chǔ)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結(jié)合候選區(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本章小結(jié)122
思考題122
第8章基于深度學(xué)習(xí)的圖像分割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聚類應(yīng)用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本章小結(jié)142
思考題142
第9章基于深度學(xué)習(xí)的人臉識別143
9.1訓(xùn)練圖像數(shù)據(jù)采集143
9.1.1訓(xùn)練圖像數(shù)據(jù)源143
9.1.2爬取圖像數(shù)據(jù)集144
9.2CNN人臉識別設(shè)計146
9.2.1CNN人臉識別設(shè)計方案146
9.2.2CNN圖像處理146
9.2.3圖像預(yù)處理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è)置參數(shù)調(diào)整學(xué)習(xí)效率152
9.3.7訓(xùn)練CNN模型154
9.3.8模型保存加載與評估155
9.3.9模型測試156
9.4口罩佩戴識別增強157
9.5本章小結(jié)158
思考題158
第10章基于深度學(xué)習(xí)的文本自動生成159
10.1訓(xùn)練文本數(shù)據(jù)采集159
10.1.1訓(xùn)練文本數(shù)據(jù)源159
10.1.2訓(xùn)練文本數(shù)據(jù)整理160
10.2LSTM五言律詩自動生成設(shè)計160
10.2.1文本預(yù)處理161
10.2.2文本數(shù)據(jù)標準化161
10.2.3LSTM模型搭建162
10.2.4訓(xùn)練LSTM模型162
10.3測試LSTM模型163
10.3.1生成序列數(shù)據(jù)163
10.3.2定義采樣方法163
10.4本章小結(jié)166
思考題166
第11章深度學(xué)習(xí)展望167
11.1深度學(xué)習(xí)的探索方向167
11.1.1設(shè)計更好的深度學(xué)習(xí)框架167
11.1.2發(fā)現(xiàn)更好的網(wǎng)絡(luò)模型167
11.2深度學(xué)習(xí)的應(yīng)用場景展望168
11.2.1教育領(lǐng)域168
11.2.2金融領(lǐng)域168
11.2.3醫(yī)療領(lǐng)域168
11.2.4文藝領(lǐng)域169
11.2.5無人服務(wù)169
11.3本章小結(jié)169
參考文獻170