實(shí)戰(zhàn)深度學(xué)習(xí)——原理、框架及應(yīng)用前言: 奇點(diǎn)前夜前言
近十年來,伴隨著世界范圍內(nèi)大數(shù)據(jù)和人工智能的迅猛發(fā)展,機(jī)器學(xué)習(xí)中的深度學(xué)習(xí)一路凱歌高進(jìn),在社會(huì)生活中的各個(gè)領(lǐng)域大放異彩。在為新生應(yīng)用提供核心算法模型的同時(shí),又滲透到對傳統(tǒng)流程的再造之中,潛移默化地影響著人們身邊的多個(gè)方面。即將到來的智能化浪潮,其所依賴的大數(shù)據(jù)、深度學(xué)習(xí)算法和強(qiáng)算力,使得許多傳統(tǒng)問題有了新的解決方法和思路。
當(dāng)前,在信息技術(shù)、無人服務(wù)和互聯(lián)網(wǎng)等新興領(lǐng)域,越來越多的工程師運(yùn)用深度學(xué)習(xí)技術(shù)來強(qiáng)化產(chǎn)品功能、提升產(chǎn)品性能。在公共安全、金融保險(xiǎn)、衛(wèi)生醫(yī)療、文化教育等傳統(tǒng)領(lǐng)域,越來越多的從業(yè)者正積極地設(shè)法引入深度學(xué)習(xí)技術(shù),掀起新一輪的技術(shù)革命。在大量的應(yīng)用需求牽引下,日益增多的學(xué)習(xí)者正在加入到深度學(xué)習(xí)的熱潮中。他們可能來自于計(jì)算機(jī)、電子工程、數(shù)學(xué)、軟件工程等相關(guān)專業(yè),也可能從其他專業(yè)跨界而來。
對深度學(xué)習(xí)的研究,需要常懷敬畏之心。很多人把深度學(xué)習(xí)理解成一個(gè)“黑匣子”,知其然而不知其所以然。但是,深度學(xué)習(xí)提供了從感知到認(rèn)知的過渡,以及知識的表達(dá)和形成過程。從應(yīng)用角度來看,各個(gè)行業(yè)面臨的主要挑戰(zhàn)其實(shí)是如何通過深度學(xué)習(xí)來真正理解現(xiàn)實(shí)世界。雖然很多問題已經(jīng)可以在一定程度上運(yùn)用深度學(xué)習(xí)技術(shù)來解決,例如圖像識別和語音合成,但是現(xiàn)在迫切需要可解釋的人工智能技術(shù),尤其是金融和醫(yī)療等傳統(tǒng)領(lǐng)域,更需要關(guān)心其工作原理而非僅僅是其輸出。
作為前沿交叉學(xué)科的研究人員,我們認(rèn)為,如果要將深度學(xué)習(xí)技術(shù)應(yīng)用到傳統(tǒng)領(lǐng)域并真正發(fā)揮作用,仍然需要剖析深度學(xué)習(xí)背后的理論、原則和數(shù)學(xué)依據(jù)。為此,基于多年積累的豐富的領(lǐng)域知識和經(jīng)驗(yàn),以及數(shù)據(jù)和場景,團(tuán)隊(duì)正在研究深度學(xué)習(xí)的理論問題,例如可解釋性、泛化能力和知識表達(dá)。
本書最初起源于團(tuán)隊(duì)自身建設(shè)的能力提升所需。我們整理了深度學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)、主流工具和框架,對常用的深度學(xué)習(xí)模型進(jìn)行了演練,并收集了一批當(dāng)前熱門的應(yīng)用案例作為實(shí)戰(zhàn)化操作練習(xí)。這本材料隨著團(tuán)隊(duì)新生力量的增加而不斷更新,多次被作為培訓(xùn)教材使用且反響良好,才促使萌生推向市場的念頭。
本書系統(tǒng)、全面地覆蓋了深度學(xué)習(xí)的主要原理、方法和應(yīng)用實(shí)踐。主要分為3部分: 第一部分(第1~3章)是基礎(chǔ)知識和算法實(shí)戰(zhàn),包括深度學(xué)習(xí)概念、主流工具及框架,展開分析了神經(jīng)網(wǎng)絡(luò)的原理及實(shí)現(xiàn)。第二部分(第4~6章)是常用的深度學(xué)習(xí)模型,對卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)、生成對抗網(wǎng)絡(luò)進(jìn)行了演練。第三部分(第7~11章)通過具體應(yīng)用場景,詳細(xì)分析了基于深度學(xué)習(xí)的目標(biāo)檢測、圖像分割、人臉識別和文本自動(dòng)生成等當(dāng)前熱點(diǎn)綜合案例,展示如何在實(shí)際中解決問題。
本書構(gòu)建了一套明晰的深度學(xué)習(xí)體系,同時(shí)各章內(nèi)容相對獨(dú)立,并提供全套課件、源代碼、數(shù)據(jù)集和使用說明等學(xué)習(xí)資源。讀者不要求有深度學(xué)習(xí)或者機(jī)器學(xué)習(xí)的背景知識,只需具備基本的數(shù)學(xué)和編程知識,如基礎(chǔ)的線性代數(shù)、微分、概率及Python編程知識。
本書是跨域大數(shù)據(jù)智能分析與應(yīng)用省級重點(diǎn)實(shí)驗(yàn)室團(tuán)隊(duì)協(xié)同努力的成果,由鄧勁生和莊春華負(fù)責(zé)搭建整體框架確定實(shí)戰(zhàn)內(nèi)容、組織驗(yàn)證應(yīng)用和調(diào)度實(shí)施,前6章初稿主要由熊煒林執(zhí)筆,后5章初稿主要由王良執(zhí)筆,喬鳳才、尹曉晴、宋省身、趙濤、李勐等參與了文稿修改和部分章節(jié)的編寫,田野制作了課程課件,黎珍、劉娟、張智超、陶應(yīng)娟等進(jìn)行實(shí)例驗(yàn)證,伏西平、李勐等參與試點(diǎn)應(yīng)用。部分內(nèi)容來自于參考文獻(xiàn)和網(wǎng)絡(luò)資源轉(zhuǎn)載,未能逐一溯源和說明引用,特在此表示感謝。
由于深度學(xué)習(xí)正處于蓬勃發(fā)展之中,而作者的自身水平、理解能力、項(xiàng)目經(jīng)驗(yàn)和表達(dá)能力有限,書中難免存在一些錯(cuò)誤和不足之處,還望各位讀者不吝賜教。除了配套源代碼和數(shù)據(jù)集之外,本書還備有全套教學(xué)課件可供參考,歡迎將本書選作教材的老師垂詢和交流。
作者2020年6月于硯瓦池
目錄
第1章深度學(xué)習(xí)初識1
1.1什么是深度學(xué)習(xí)1
1.1.1深度學(xué)習(xí)與機(jī)器學(xué)習(xí)的關(guān)系1
1.1.2深度學(xué)習(xí)與人工智能的關(guān)系2
1.1.3深度學(xué)習(xí)的應(yīng)用案例2
1.2機(jī)器學(xué)習(xí)初識4
1.2.1機(jī)器學(xué)習(xí)概述4
1.2.2機(jī)器學(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ò)的原理及實(shí)現(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感知機(jī)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隨機(jī)梯度下降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卷積運(yùn)算52
4.2.1卷積函數(shù)53
4.2.2卷積實(shí)例54
4.3池化運(yùn)算59
4.3.1池化函數(shù)60
4.3.2池化實(shí)例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í)的目標(biāo)檢測99
7.1目標(biāo)檢測基礎(chǔ)99
7.1.1數(shù)據(jù)集99
7.1.2性能指標(biāo)100
7.1.3錨點(diǎn)101
7.1.4錨框101
7.1.5非極大值抑制101
7.2傳統(tǒng)的目標(biāo)檢測101
7.2.1ViolaJones102
7.2.2方向梯度直方圖103
7.2.3DPM105
7.2.4綜合案例: DPM行人檢測106
7.3結(jié)合候選區(qū)域和CNN分類的目標(biāo)檢測框架110
7.3.1RCNN110
7.3.2SPPNET111
7.3.3Fast RCNN113
7.3.4Faster RCNN114
7.4回歸問題的端到端的目標(biāo)檢測框架117
7.4.1YOLO117
7.4.2SSD118
7.4.3綜合案例: YOLO目標(biāo)檢測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綜合案例: 細(xì)胞壁檢測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è)計(jì)146
9.2.1CNN人臉識別設(shè)計(jì)方案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口罩佩戴識別增強(qiáng)157
9.5本章小結(jié)158
思考題158
第10章基于深度學(xué)習(xí)的文本自動(dòng)生成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五言律詩自動(dòng)生成設(shè)計(jì)160
10.2.1文本預(yù)處理161
10.2.2文本數(shù)據(jù)標(biāo)準(zhǔn)化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è)計(jì)更好的深度學(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
參考文獻(xiàn)170