內(nèi)容介紹
這是一本理論與實踐兼顧的深度學習著作,它通過精心的內(nèi)容組織和豐富的案例講解,能讓讀者零基礎入門,并迅速晉級為有一定理論基礎和項目實戰(zhàn)能力的高手。
基礎方面,不僅介紹了Keras等各種深度學習框架的使用和開發(fā)環(huán)境的搭建,還對深度學習的基礎知識做了全面講解;
理論方面,詳細講解了全連接神經(jīng)網(wǎng)絡、卷積神經(jīng)網(wǎng)絡、循環(huán)神經(jīng)網(wǎng)絡、自編碼器和生成式對抗網(wǎng)絡等核心神經(jīng)網(wǎng)絡的原理和應用;
應用層面,不僅講解了如何用Keras開發(fā)各種深度學習模型,而且還講解了深度學習在圖像處理和文本處理兩大核心場景的應用;
實戰(zhàn)方面,每個深度學習模型原理的背后都有精心設計的Keras實現(xiàn)代碼,每章都有多個綜合性案例,讀者可以在調(diào)試和執(zhí)行代碼的過程中掌握深度學習模型設計與開發(fā)的各種方法和技巧。
本書內(nèi)容結(jié)構合理,重點突出;寫作方式循序漸進,易于讀者理解;行文風格幽默風趣,讀起來不枯燥。
(1)作者經(jīng)驗豐富:資深AI技術專家和數(shù)據(jù)挖掘?qū)<,擁有超過14年技術研發(fā)和管理經(jīng)驗,連續(xù)6年被微軟評為數(shù)據(jù)科學和AI方向MVP。(2)零基礎快速入門:針對性內(nèi)容設計,結(jié)構合理,內(nèi)容突出,零基礎讀者也能快速入門深度學習。(3)理論知識扎實:深度學習工具使用、基礎知識、神經(jīng)網(wǎng)絡、模型構建等理論知識全部詳細講解。(4)實戰(zhàn)案例豐富:原理輔以Keras代碼,每章都有綜合案例及其代碼分析,結(jié)合生產(chǎn)環(huán)境展開。
為什么要寫這本書
人工智能引領了一個新的研究和發(fā)展方向,機器學習和深度學習均屬于人工智能范疇,F(xiàn)在各個領域都處于運用深度學習技術進行業(yè)務創(chuàng)新和技術創(chuàng)新的階段。Keras是一個對零基礎用戶非常友好且簡單的深度學習框架,它是TensorFlow高級集成API,特點是能夠快速實現(xiàn)模型的搭建。模型快速搭建是高效進行科學研究的關鍵。
本書涵蓋了全連接神經(jīng)網(wǎng)絡(MLP)、卷積神經(jīng)網(wǎng)絡(CNN)、循環(huán)神經(jīng)網(wǎng)絡(RNN)、自編碼器(AE)、生成式對抗網(wǎng)絡(GAN)等模型原理及Keras實踐,重點講解了如何對圖像數(shù)據(jù)和中文文本數(shù)據(jù)進行分析處理,以幫助讀者學會訓練這些模型并實現(xiàn)真實的圖像處理和語言處理任務。
本書由淺入深、循序漸進,盡可能用通俗易懂的語言講解深度學習各種模型的基本原理,在講解Keras實現(xiàn)深度學習的知識點時更注重方法和經(jīng)驗的傳遞,力求做到授之以漁,讓讀者能將本書所學應用到日常學習或工作中。
本書特色
本書采用大量的實例,覆蓋了使用Keras進行深度學習建模的常用知識,同時對所用實例中的Keras代碼和模型效果均進行了深入解讀,以幫助讀者更好地將所學知識移植到各自的實際工作中。
深度學習在實際工作中常用于圖像數(shù)據(jù)和文本數(shù)據(jù)的深度挖掘,本書也詳細闡述了如何對圖像數(shù)據(jù)和中文文本數(shù)據(jù)進行數(shù)據(jù)處理及轉(zhuǎn)換,以幫助初學者了解如何將原始數(shù)據(jù)處理成深度學習模型可以識別的數(shù)據(jù)。
本書適用對象
本書適合以下人員閱讀:
高等院校相關專業(yè)師生;
培訓機構的師生;
數(shù)據(jù)分析、數(shù)據(jù)挖掘人員;
人工智能、深度學習入門讀者;
數(shù)據(jù)科學家;
進行深度學習應用研究的科研人員。
如何閱讀本書
全書一共14章,涵蓋了主流深度學習框架介紹、TensorFlow和Keras深度學習環(huán)境搭建,以及如何利用Keras開發(fā)深度學習模型。本書的重點是深度學習在圖像和文本方面的數(shù)據(jù)處理及應用,各種深度學習網(wǎng)絡均有相應的實例,目的是讓讀者既能通過本書學到深度學習理論,又能通過實例學習提升動手能力,將所學知識遷移到實際工作中。
第1章首先介紹了機器學習與深度學習的區(qū)別及聯(lián)系,以及目前主流的深度學習框架。然后詳細介紹了如何安裝Python的科學計算環(huán)境Anaconda、R語言的IDE工具RStudio,以及如何在Anaconda和RStudio中安裝TensorFlow和Keras。后以深度學習中的入門數(shù)據(jù)集MNIST為例,介紹如何利用Keras構建深度學習模型。
第2章介紹了深度學習的基礎知識。首先介紹神經(jīng)網(wǎng)絡常用激活函數(shù)、網(wǎng)絡拓撲結(jié)構及損失函數(shù),然后介紹網(wǎng)絡優(yōu)化的方法及如何防止模型過擬合,后通過一個綜合實例介紹如何使用技巧優(yōu)化深度學習神經(jīng)網(wǎng)絡,提升模型的預測能力。
第3章詳細介紹了如何用Keras開發(fā)深度學習模型。內(nèi)容包括Keras模型的生命周期、Keras的兩種模型、模型可視化、Keras中的回調(diào)函數(shù)與模型的保存及序列化等。
第4章介紹了深度學習的圖像數(shù)據(jù)預處理技術。首先重點介紹了圖像處理EBImage包的使用,包含圖像的讀取和保存、圖像處理等技術,然后介紹了利用Keras如何進行圖像預處理,后通過一個綜合實例介紹了如何對小數(shù)據(jù)集的彩色花圖像進行批量讀取及處理,并建立多種深度學習模型來對比效果,及通過數(shù)據(jù)增強技術提升模型的預測能力。
第5章~第9章分別詳細介紹了深度學習常用的神經(jīng)網(wǎng)絡模型:全連接神經(jīng)網(wǎng)絡、卷積神經(jīng)網(wǎng)絡、循環(huán)神經(jīng)網(wǎng)絡、自編碼器和生成式對抗網(wǎng)絡。
第5章通過多個實例引導讀者如何用全連接神經(jīng)網(wǎng)絡解決各種經(jīng)典的預測問題,包含波士頓房價預測的回歸問題、鳶尾花分類和彩色手寫數(shù)字圖像識別的多分類問題、印第安人糖尿病診斷和泰坦尼克號旅客生存預測的二分類問題。
第6章首先介紹了卷積神經(jīng)網(wǎng)絡的基本原理及Keras實現(xiàn),并通過多個實例幫助讀者掌握卷積神經(jīng)網(wǎng)絡的使用,包含小數(shù)據(jù)集的圖像識別、彩色手寫數(shù)字圖像識別以及經(jīng)典的CIFAR-10圖像識別的多分類實例。
第7章首先介紹了簡單循環(huán)網(wǎng)絡(SimpleRNN)的基本原理及Keras實現(xiàn),并利用SimpleRNN實現(xiàn)手寫數(shù)字識別及預測紐約出生人口數(shù)量。然后介紹了長短期記憶網(wǎng)絡(LSTM)的基本原理及Keras實現(xiàn),并利用LSTM實現(xiàn)股價預測。后介紹了門控循環(huán)單元網(wǎng)絡(GRU)的基本原理及Keras實現(xiàn),并基于GRU網(wǎng)絡對溫度進行預測。
第8章介紹了自編碼器的基本結(jié)構以及常用自編碼器(稀疏自編碼器、降噪自編碼器以及棧式自編碼器)的基本原理及Keras實現(xiàn),并利用兩個實例引導讀者將自編碼器應用在不同的實際場景中。
第9章首先介紹了生成式對抗網(wǎng)絡(GAN)的基本原理,然后給出了兩個實例:使用GAN生成手寫數(shù)字,深度卷積生成式對抗網(wǎng)絡。
第10章~第13章詳細介紹了利用深度學習對文本數(shù)據(jù)進行預處理及建模的技術,并重點介紹了對中文文本的處理及建模。
第10章介紹了R語言用于文本挖掘的常用擴展包,包括tm包、tmcn包、Rwordseg包、jiebaR包以及tidytext包。
第11章介紹了如何使用Keras處理文本數(shù)據(jù),包括文本分詞、獨熱編碼、分詞器和填充文本序列,還介紹了詞嵌入。
第12章首先介紹IMDB影評數(shù)據(jù)集,接著利用機器學習進行情感
作者簡介(照片)
謝佳標
資深AI技術專家和數(shù)據(jù)挖掘?qū)<,擁有超過14年的技術研發(fā)和管理經(jīng)驗。精通Python和Keras等深度學習框架,在數(shù)據(jù)挖掘和人工智能技術領域有非常深厚的積累。連續(xù)6年(2017~2022年)被微軟評為數(shù)據(jù)科學和AI方向價值專家(微軟MVP)。
資深R語言技術專家,中國現(xiàn)場統(tǒng)計研究會大數(shù)據(jù)統(tǒng)計分會屆理事。歷屆中國R語言和數(shù)據(jù)科學大會特邀演講嘉賓,受邀在國內(nèi)多所高校舉行以數(shù)據(jù)主題的公益講座。
著有多本技術暢銷書,如《R語言游戲數(shù)據(jù)分析與挖掘》《R語言與數(shù)據(jù)挖掘》。
前言
第1章 準備深度學習的環(huán)境1
1.1 機器學習與深度學習1
1.2 主流深度學習框架介紹4
1.2.1 TensorFlow4
1.2.2 Keras5
1.2.3 Caffe5
1.2.4 PyTorch6
1.2.5 Theano6
1.2.6 CNTK6
1.2.7 MXNet7
1.2.8 ONNX7
1.3 配置深度學習的軟件環(huán)境8
1.3.1 安裝Anaconda8
1.3.2 在Anaconda中安裝TensorFlow8
1.3.3 在Anaconda中安裝Keras10
1.3.4 安裝R和RStudio10
1.3.5 在RStudio中安裝TensorFlow12
1.3.6 在RStudio中安裝Keras12
1.4 Keras構建深度學習模型13
1.4.1 MNIST數(shù)據(jù)集13
1.4.2 數(shù)據(jù)預處理14
1.4.3 模型建立及訓練16
1.4.4 模型評估及預測18
1.5 本章小結(jié)22
第2章 深度學習簡介23
2.1 神經(jīng)網(wǎng)絡基礎23
2.1.1 神經(jīng)元23
2.1.2 激活函數(shù)24
2.1.3 神經(jīng)網(wǎng)絡的拓撲結(jié)構30
2.1.4 神經(jīng)網(wǎng)絡的主要類型31
2.1.5 損失函數(shù)32
2.2 優(yōu)化網(wǎng)絡的方法33
2.2.1 梯度下降算法33
2.2.2 自適應學習率算法37
2.3 防止模型過擬合42
2.3.1 過擬合與欠擬合42
2.3.2 正則化的方法43
2.3.3 數(shù)據(jù)拆分44
2.3.4 Dropout45
2.4 綜合實例:電信流失用戶預測46
2.4.1 數(shù)據(jù)預處理46
2.4.2 選擇優(yōu)化器47
2.4.3 增加內(nèi)部隱藏層神經(jīng)元數(shù)量48
2.4.4 采用正則化避免過擬合49
2.5 本章小結(jié)52
第3章 如何用Keras開發(fā)深度學習模型53
3.1 Keras模型的生命周期53
3.1.1 數(shù)據(jù)預處理53
3.1.2 定義網(wǎng)絡56
3.1.3 編譯網(wǎng)絡58
3.1.4 訓練網(wǎng)絡58
3.1.5 評估網(wǎng)絡60
3.1.6 做出預測61
3.2 Keras模型61
3.2.1 序貫模型61
3.2.2 使用函數(shù)式API創(chuàng)建的模型63
3.3 模型可視化66
3.3.1 網(wǎng)絡拓撲可視化66
3.3.2 模型訓練可視化67
3.3.3 TensorBoard可視化70
3.4 Keras中的回調(diào)函數(shù)77
3.4.1 回調(diào)函數(shù)介紹77
3.3.2 使用回調(diào)函數(shù)尋找模型80
3.5 模型保存及序列化82
3.5.1 使用HDF5格式保存模型83
3.5.2 使用JSON格式保存模型87
3.5.3 使用YAML格式保存模型88
3.6 本章小結(jié)88
第4章 深度學習的圖像數(shù)據(jù)預處理89
4.1 圖像處理EBImage包89
4.1.1 圖像讀取與保存89
4.1.2 圖像對象和矩陣91
4.1.3 色彩管理94
4.1.4 圖像處理97
4.1.5 空間變換99
4.1.6 圖像濾波102
4.1.7 形態(tài)運算105
4.1.8 圖像分割106
4.2 利用Keras進行圖像預處理107
4.2.1 圖像讀取與保存107
4.2.2 圖像生成器image_data_generator110
4.2.3 image_data_generator實例115
4.3 綜合實例:對彩色花圖像進行分類118
4.3.1 圖像數(shù)據(jù)讀取及探索118
4.3.2 MLP模型建立及預測122
4.3.3 CNN模型建立與預測124
4.3.4 利用數(shù)據(jù)增強改善CNN模型126
4.4 本章小結(jié)128
第5章 全連接神經(jīng)網(wǎng)絡的經(jīng)典實例129
5.1 回歸問題實例:波士頓房價預測129
5.1.1 波士頓房價數(shù)據(jù)描述129
5.1.2 波士頓房價數(shù)據(jù)預處理131
5.1.3 波士頓房價預測131
5.2 多分類實例:鳶尾花分類134
5.2.1 鳶尾花數(shù)據(jù)描述134
5.2.2 鳶尾花數(shù)據(jù)預處理136
5.2.3 鳶尾花分類建模137
5.3 二分類實例:印第安人糖尿病診斷139
5.3.1 印第安人糖尿病數(shù)據(jù)描述139
5.3.2 印第安人糖尿病數(shù)據(jù)預處理141
5.3.3 印第安人糖尿病診斷建模142
5.4 二分類實例:泰坦尼克號上旅客生存預測144
5.4.1 泰坦尼克號的旅客數(shù)據(jù)描述145
5.4.2 泰坦尼克號的旅客數(shù)據(jù)預處理146
5.4.3 生存預測建模149
5.5 多分類實例:彩色手寫數(shù)字圖像識別151
5.5.1 彩色手寫數(shù)字圖像數(shù)據(jù)描述151
5.5.2 彩色手寫數(shù)字圖像數(shù)據(jù)預處理152
5.5.3 彩色手寫數(shù)字圖像數(shù)據(jù)建模155
5.6 本章小結(jié)158
第6章 卷積神經(jīng)網(wǎng)絡及圖像分類159
6.1 卷積神經(jīng)網(wǎng)絡原理159
6.1.1 卷積層161
6.1.2 卷積層的Keras實現(xiàn)163
6.1.3 池化層167
6.1.4 池化層的Keras實現(xiàn)168
6.1.5 全連接層171
6.2 多分類實例:小數(shù)據(jù)集的圖像識別171
6.2.1 導入本地圖像數(shù)據(jù)171
6.2.2 圖像數(shù)據(jù)預處理173
6.2.3 建立全連接神經(jīng)網(wǎng)絡模型識別小數(shù)據(jù)集圖像175
6.2.4 建立簡單卷積神經(jīng)網(wǎng)絡識別小數(shù)據(jù)集圖像177
6.2.5 建立復雜卷積神經(jīng)網(wǎng)絡識別小數(shù)據(jù)集圖像180
6.3 多分類實例:彩色手寫數(shù)字圖像識別183
6.3.1 導入及處理本地手寫數(shù)字圖像183
6.3.2 MNIST數(shù)據(jù)預處理185
6.3.3 構建簡單卷積神經(jīng)網(wǎng)絡識別彩色手寫數(shù)字186
6.3.4 構建復雜卷積神經(jīng)網(wǎng)絡識別彩色手寫數(shù)字189
6.4 多分類實例:CIFAR-10圖像識別192
6.4.1 CIFAR-10數(shù)據(jù)描述192
6.4.2 加載CIFAR-10數(shù)據(jù)192
6.4.3 CIFAR-10數(shù)據(jù)預處理194
6.4.4 構建簡單卷積神經(jīng)網(wǎng)絡識別CIFAR-10圖像195
6.4.5 構建復雜卷積神經(jīng)網(wǎng)絡識別CIFAR-10圖像199
6.5 本章小結(jié)204
第7章 循環(huán)神經(jīng)網(wǎng)絡205
7.1 簡單循環(huán)網(wǎng)絡205
7.1.1 簡單循環(huán)網(wǎng)絡基本原理206
7.1.2 簡單循環(huán)網(wǎng)絡的Keras實現(xiàn)207
7.1.3 多分類實例:SimpleRNN實現(xiàn)手寫數(shù)字識別208
7.1.4 回歸問題實例:SimpleRNN預測紐約出生人口數(shù)量211
7.2 長短期記憶網(wǎng)絡(LSTM)216
7.2.1 LSTM基本原理216
7.2.2 LSTM的Keras實現(xiàn)218
7.2.3 回歸問題實例:LSTM預測股價221
7.3 門控循環(huán)單元(GRU)228
7.3.1 GRU基本原理228
7.3.2 GRU的Keras實現(xiàn)229
7.3.3 回歸問題實例:基于GRU網(wǎng)絡的溫度預測230
7.4 本章小結(jié)235
第8章 自編碼器236
8.1 自編碼器介紹236
8.1.1 自編碼器的基本結(jié)構237
8.1.2 使用Keras建立簡單自編碼器238
8.1.3 稀疏自編碼器242
8.1.4 降噪自編碼器245
8.1.5 棧式自編碼器248
8.2 實例:使用自編碼器預測信用風險252
8.2.1 數(shù)據(jù)理解252
8.2.2 數(shù)據(jù)預處理254
8.2.3 構建自編碼器254
8.2.4 模型訓練255
8.2.5 模型預測255
8.3 實例:使用自編碼器建立推薦系統(tǒng)258
8.3.1 數(shù)據(jù)理解259
8.3.2 數(shù)據(jù)預處理260
8.3.3 構建自編碼器261
8.3.4 模型訓練263
8.3.5 模型預測263
8.4 本章小結(jié)264
第9章 生成式對抗網(wǎng)絡265
9.1 生成式對抗網(wǎng)絡簡介265
9.2 實例:使用GAN生成手寫數(shù)字268
9.2.1 數(shù)據(jù)準備268
9.2.2 構建生成器269
9.2.3 構建判別器271
9.2.4 生成GAN模型271
9.2.5 訓練GAN模型273
9.3 實例:深度卷積生成式對抗網(wǎng)絡277
9.3.1 構建生成器279
9.3.2 構建判別器280
9.3.3 編譯模型281
9.3.4 訓練DCGAN模型282
9.4 本章小結(jié)285
第10章 使用R語言進行文本挖掘286
10.1 文本挖掘流程286
10.2 相關R包簡介及安裝287
10.2.1 tm包簡介及安裝287
10.2.2 tmcn包簡介及安裝287
10.2.3 Rwordseg包簡介及安裝289
10.2.4 jiebaR包簡介及安裝290
10.2.5 tidytext包簡介及安裝290
10.3 tm包快速上手290
10.3.1 數(shù)據(jù)讀寫290
10.3.2 語料庫轉(zhuǎn)換292
10.3.3 語料庫過濾293
10.3.4 元數(shù)據(jù)管理294
10.3.5 詞條-文檔關系矩陣296
10.4 tmcn包快速上手298
10.4.1 中文語料資源298
10.4.2 中文編碼轉(zhuǎn)換300
10.4.3 字符操作301
10.5 Rwordseg包快速上手302
10.5.1 中文分詞302
10.5.2 添加和卸載自定義詞典303
10.6 jiebaR包快速上手305
10.6.1 分詞引擎305
10.6.2 自定義詞典308
10.6.3 停止詞過濾312
10.6.4 關鍵詞提取313
10.7 tidytext包快速上手315
10.7.1 整潔文本格式315
10.7.2 使用tidy處理中國四大名著320
10.7.3 對中國四大名著進行詞頻統(tǒng)計322
10.7.4 非整潔格式轉(zhuǎn)換325
10.8 本章小結(jié)327
第11章 如何使用Keras處理文本數(shù)據(jù)328
11.1 使用text_to_word_sequence分詞328
11.2 使用獨熱編碼329
11.3 分詞器Tokenizer331
11.4 使用pad_sequences填充文本序列335
11.5 詞嵌入337
11.5.1 學習詞嵌入337
11.5.2 實例:學習詞嵌入338
11.5.3 預訓練詞嵌入342
11.5.4 實例:預訓練GloVe嵌入343
11.6 本章小結(jié)348
第12章 情感分析實例:IMDB影評情感分析349
12.1 IMDB數(shù)據(jù)集349
12.1.1 加載IMDB數(shù)據(jù)集349
12.1.2 查看IMDB數(shù)據(jù)集350
12.2 利用機器學習進行情感分析352
12.2.1 數(shù)據(jù)預處理352
12.2.2 機器學習預測情感353
12.3 利用深度學習進行情感分析356
12.3.1 數(shù)據(jù)預處理356
12.3.2 多層感知器模型357
12.3.3 卷積神經(jīng)網(wǎng)絡模型359
12.3.4 RNN模型361
12.3.5 LSTM模型363
12.3.6 GRU模型365
12.4 本章小結(jié)367
第13章 中文文本分類實例:新浪新聞分類實例368
13.1 SPORT數(shù)據(jù)集368
13.2 利用機器學習進行文本分類374
13.2.1 數(shù)據(jù)預處理374
13.2.2 數(shù)據(jù)分區(qū)376
13.2.3 機器學習建模376
13.3 利用深度學習進行文本分類378
13.3.1 數(shù)據(jù)預處理378
13.3.2 多層感知器模型379
13.3.3 一維卷積神經(jīng)網(wǎng)絡模型381
13.3.4 RNN模型383
13.3.5 LSTM模型385
13.3.6 GRU模型386
13.3.7 雙向LSTM模型388
13.3.8 比較深度學習模型的預測效果389
13.4 本章小結(jié)390
第14章 通過預訓練模型實現(xiàn)遷移學習391
14.1 遷移學習概述391
14.2 Keras預訓練模型概述393
14.3 VGGNet卷積網(wǎng)絡模型393
14.3.1 VGGNet概述394
14.3.2 加載預訓練VGG16網(wǎng)絡395
14.3.3 預測單張圖像內(nèi)容397
14.3.4 預測多張圖像內(nèi)容400
14.3.5 提取預訓練網(wǎng)絡輸出特征實現(xiàn)花卉圖像分類器402
14.4 ResNet卷積網(wǎng)絡模型410
14.4.1 ResNet概述410
14.4.2 ResNet50的Keras實現(xiàn)411
14.5 本章小結(jié)413