本書分為三部分。第1部分將幫助你快速理解從數(shù)據(jù)中學習、深度學習基本架構(gòu)、如何準備數(shù)據(jù),以及深度學習中經(jīng)常使用的基本概念。第二部分將重點介紹無監(jiān)督學習算法。從自編碼器開始,然后轉(zhuǎn)向?qū)訑?shù)更深、規(guī)模更大的神經(jīng)網(wǎng)絡模型。第三部分介紹監(jiān)督學習算法,你將掌握基本和高級深度學習模型的實現(xiàn)方法,并能夠?qū)⑦@些模型用于分類、回歸以及從潛在空間生成數(shù)據(jù)等應用場合。
網(wǎng)絡上的信息呈指數(shù)級爆炸式增長,通過瀏覽網(wǎng)絡信息獲得有助于進行深度學習的可靠內(nèi)容變得比以往任何時候都要困難。如果你是一個初學者,希望從頭開始學習深度學習理論以及構(gòu)建深度學習模型,并且已經(jīng)具備了入門所需的基本數(shù)學知識和編程知識,那么這本書正是你所需要的。 本書從機器學習的基本概述開始,指導你建立流行的基于Python語言的深度學習程序框架。你還將了解如何實現(xiàn)對數(shù)據(jù)的清洗和預處理,以便使用數(shù)據(jù)樣本進行深度學習,并逐步探索神經(jīng)網(wǎng)絡的訓練方法和應用技術(shù)。本書還將幫助你親自動手訓練單層和多層神經(jīng)元,從而深入理解神經(jīng)網(wǎng)絡模型的工作原理。稍后,你將在一些簡單應用實例的幫助下掌握若干當前比較流行的神經(jīng)網(wǎng)絡架構(gòu),例如CNN、RNN、AE、VAE和GAN。你甚至將從頭開始構(gòu)建這些模型。在每一章的結(jié)尾處有一個問答環(huán)節(jié),可以幫助你測試對本書內(nèi)容的掌握情況。 當學完本書的時候,你將能夠精通深度學習的概念,并擁有使用特定算法與適當工具解決不同任務所需要的知識。 通過學習本書,你將能夠: · 實現(xiàn)用于完成圖像分類和自然語言處理任務的RNN模型和長短時記憶模型。 · 探索CNN模型在計算機視覺和信號處理中的作用。 · 理解深度學習建模的倫理。 · 理解與深度學習相關(guān)的數(shù)學術(shù)語。 · 構(gòu)建GAN和VAE模型,并且從已學習的潛在空間中生成虛擬圖像。 · 通過可視化技術(shù)實現(xiàn)AE和VAE模型的性能比較。
多年來,我們這些忠實地致力于研究機器學習的群體見證了這個領(lǐng)域的發(fā)展和繁榮,一些技術(shù)的產(chǎn)生令人驚嘆,甚至有望帶來徹底的社會變革。然而,對于那些想要加入我們來研究這一領(lǐng)域的人們而言,機器學習知識似乎有點令人望而生畏。當然,網(wǎng)絡上的相關(guān)信息太多了,我們很難瀏覽所有的論文和代碼,為那些想要加入深度學習領(lǐng)域的人找到可靠的介紹性內(nèi)容。雖然市面上有很多關(guān)于機器學習知識的介紹性書籍,但大部分都不滿足那些特別想從事深度學習工作的人們的需求,而且要求讀者具備必要的、限度的數(shù)學和算法知識,以及一些必要的編程技能。
本書的目標是幫助初學者建立強大的深度學習基礎(chǔ),掌握使用眾所周知的方法建立深度學習模型所需要的基本概念。如果這個目標聽上去符合你的需求,那么本書可能正是你所需要的。本書假定讀者先前沒有接觸過神經(jīng)網(wǎng)絡和深度學習,并從回顧深度學習所需要的機器學習基礎(chǔ)知識開始。然后,本書解釋了如何通過清洗和預處理數(shù)據(jù)為深度學習做準備,隨后逐步介紹神經(jīng)網(wǎng)絡和流行的監(jiān)督神經(jīng)網(wǎng)絡架構(gòu)(如卷積神經(jīng)網(wǎng)絡(CNN,Convolutional Neural Network)、循環(huán)神經(jīng)網(wǎng)絡(RNN,Recurrent Neural Network)和生成對抗網(wǎng)絡(GAN,Generative Adversarial Network))以及無監(jiān)督架構(gòu)(如自編碼器(AE)、變分自編碼器(VAE)和受限玻耳茲曼機(RBM))。在每一章的結(jié)尾,你將有機會測試你對概念的理解程度,并反思自己的成長過程。
在本書的后,你將理解深度學習的概念和秘訣,并將能夠分辨適用于特定任務的算法。
本書的目標讀者
本書是為想要從深度學習和神經(jīng)網(wǎng)絡的基礎(chǔ)知識開始學習的、心懷抱負的數(shù)據(jù)科學家和深度學習工程師準備的。本書不需要讀者事先接觸過深度學習或機器學習,當然如果接觸過會更好。讀者只需要熟悉線性代數(shù)和Python編程就可以了。
本書是為珍惜時間、想要學到編程所需的深度學習要點的讀者準備的。
如果不知道深度學習的基礎(chǔ)知識,那么它可能會讓你感到害怕。許多人因為不理解Web上的術(shù)語或示例程序,所以感到很沮喪。這就導致了人們在選擇深度學習算法時可能會做出糟糕的決定,而且他們無法預見進行這種選擇所產(chǎn)生的后果。因此,本書是為具有下列意圖的讀者準備的:
重視獲得深度學習概念的良好定義。
想要使用結(jié)構(gòu)化的方法從頭開始學習深度學習。
渴望了解并真正理解深度學習的基本概念。
想知道如何預處理數(shù)據(jù),以便在深度學習算法中使用。
對一些先進的深度學習算法感到好奇。
本書的主要內(nèi)容
第1章 給出了機器學習的概述,不僅介紹了機器學習背后的動機以及該領(lǐng)域常用的術(shù)語,還介紹了深度學習的基本概念以及它是如何適應人工智能發(fā)展的。
第2章 講解如何配置TensorFlow和Keras深度學習開發(fā)平臺,并介紹它們在深度學習中的用途和目的。本章還簡要介紹了其他深度學習程序框架和程序庫,讓你能夠以一種低成本的方式熟悉它們。
第3章 介紹數(shù)據(jù)處理背后的主要概念,數(shù)據(jù)經(jīng)過處理后才能夠用在深度學習中。本章將涵蓋格式化分類以及實值輸出和輸入的基本概念,還將探索關(guān)于數(shù)據(jù)增強和降低數(shù)據(jù)維度的技術(shù)。
第4章 介紹深度學習理論中的基本概念,包括回歸和分類的性能度量以及過擬合的識別,還提供了一些關(guān)于超參數(shù)調(diào)優(yōu)的警告。
第5章 介紹神經(jīng)元的概念,并將其連接到感知機模型,該模型以簡單的方式從數(shù)據(jù)中學習。感知機模型是理解從數(shù)據(jù)中學習的基本神經(jīng)模型的關(guān)鍵,也可以用來處理線性不可分數(shù)據(jù)。
第6章 通過使用多層感知機算法,讓你直面深度學習的個挑戰(zhàn),例如基于誤差小化的梯度下降技術(shù),以及實現(xiàn)模型泛化的超參數(shù)調(diào)優(yōu)。
第7章 通過解釋編碼層和解碼層的必要性來描述自編碼器模型,探索與自編碼器模型相關(guān)的損失函數(shù),并將其應用于降維問題和數(shù)據(jù)可視化。
第8章 介紹了深度信念網(wǎng)絡的概念和這種深度無監(jiān)督學習的含義,通過引入深層自編碼器并將它們與淺層自編碼器進行對比來解釋這些概念。
第9章 介紹生成模型在無監(jiān)督深度學習領(lǐng)域背后的哲學,以及它們在生成抗噪聲魯棒模型中的重要性。在處理擾動數(shù)據(jù)時,變分自編碼器是深度自編碼器的更好的替代方案。
第10章 通過介紹RBM來補充書中對深度信念模型知識的覆蓋。本章介紹了RBM的前后雙向傳播性質(zhì),并與AE單向的前向傳播性質(zhì)進行比較。本章分別使用RBM和AE模型實現(xiàn)對降維數(shù)據(jù)的可視化表示,并進行了比較。
第11章 解釋深度神經(jīng)網(wǎng)絡和廣度神經(jīng)網(wǎng)絡在性能和復雜性上的差異,并在神經(jīng)元之間的連接方面引入了密集網(wǎng)絡和稀疏網(wǎng)絡的概念。
第12章 介紹卷積神經(jīng)網(wǎng)絡,從卷積運算開始,然后講解集成卷積運算層,從而學習可以對數(shù)據(jù)進行操作的濾波器。本章后展示了如何可視化所學習的濾波器。
第13章 提出了基本的循環(huán)網(wǎng)絡的概念,揭示了它們的缺點,以說明長短時記憶模型的存在價值及其成功之處。本章還探討了序列模型在圖像處理和自然語言處理方面的應用。
第14章 介紹了基于GAN模型的半監(jiān)督學習方法,它屬于對抗學習家族。本章解釋了生成器和判別器的概念,并討論了為什么對訓練數(shù)據(jù)概率分布有良好的近似可以導致模型(例如,從隨機噪聲中產(chǎn)生數(shù)據(jù))的成功。
第15章 簡要地展示了深度學習領(lǐng)域嶄新的、令人興奮的主題和機會。如果你想繼續(xù)學習,可以在這里找到Packt的其他資源,你可以使用這些資源在此領(lǐng)域繼續(xù)前進。
如何充分利用本書
你需要確保自己的Web瀏覽器能夠連接到谷歌Colabs,網(wǎng)址是http://colab.research.google.com/。
雖然本書假設讀者沒有事先接觸過深度學習或機器學習,但是你必須熟悉一些線性代數(shù)知識和Python編程,以便充分利用本書。
為了確保與機器學習和深度學習Python庫的未來版本兼容,我們在本書的代碼包和GitHub庫中包含了一個使用!pip freeze指令生成的當前版本列表。然而,這些只是為了參考和未來的兼容性,記住谷歌Colabs已經(jīng)具備了所有必要的設置。
你還可以在https://github.com/PacktPublishing/上從豐富的書籍和視頻目錄中獲得其他代碼包。去看看吧!同樣,庫的列表僅供參考,但谷歌Colabs上有的設置。
一旦你使用本書完成了學習之旅,先慶祝一下,然后再密切關(guān)注本書的后一章,它會為你指明新的方向。記住,永遠堅持學習,這是成功的關(guān)鍵之一。
下載示例代碼及彩色圖像
本書的示例代碼文件及彩色插圖,可以從www.packtpub.com/通過個人賬號下載,也可以訪問華章圖書官網(wǎng)http://www.hzbook.com,通過注冊并登錄個人賬號下載。
在代碼文件下載完畢之后,請確保使用下列版本的解壓縮軟件解壓或提取文件:
Windows系統(tǒng):WinRAR/7-Zip
Mac系統(tǒng):Zipeg/iZip/UnRarX
Linux系統(tǒng):7-Zip/PeaZip
本書的代碼包也可以在GitHub上獲取,網(wǎng)址是https://github.com/PacktPublishing/Deep-Learning-for-Beginners。如果代碼有更新, GitHub存儲庫中的代碼也會更新。
本書的排版約定
代碼體:表示文本中的代碼、數(shù)據(jù)庫表名、文件夾名、文件名、文件擴展名、路徑名、虛擬URL、用戶輸入和Twitter賬戶名。下面有一個例子:“潛在編碼器模型latent_ncdr和autoencoder模型中的predict()方法在指定的層上產(chǎn)生輸出!
代碼的示例如下:
當我們需要讓你注意代碼塊的特定部分時,相關(guān)內(nèi)容會加粗:
命令行輸入與輸出的格式如下所示:
黑體:表示新的術(shù)語、重要的詞,或者屏幕上看到的詞(例如菜單或?qū)υ捒蛑械膯卧~)。這里有一個例子:“重要的是一個叫作雙曲正切的新激活函數(shù)!
表示警告或重要提示。
表示提示和技巧。
譯者序
序
前言
作者簡介
審校者簡介
部分 深度學習快速入門
第1章 機器學習概述 2
1.1 接觸ML生態(tài)系統(tǒng) 2
1.2 從數(shù)據(jù)中訓練ML算法 4
1.3 深度學習概述 5
1.3.1 神經(jīng)元模型 5
1.3.2 感知機學習算法 6
1.3.3 淺層網(wǎng)絡 8
1.3.4 深度網(wǎng)絡 11
1.4 深度學習在現(xiàn)代社會中的重要性 13
1.5 小結(jié) 14
1.6 習題與答案 15
1.7 參考文獻 15
第2章 深度學習框架的搭建與概述 16
2.1 Colaboratory簡介 16
2.2 TensorFlow的簡介與安裝 17
2.2.1 安裝 17
2.2.2 擁有GPU支持的TensorFlow 18
2.2.3 TensorFlow背后的原理 18
2.3 Keras的簡介與安裝 19
2.3.1 安裝 19
2.3.2 Keras背后的原理 19
2.4 PyTorch簡介 21
2.5 Dopamine簡介 21
2.6 其他深度學習程序庫 23
2.6.1 Caffe 23
2.6.2 Theano 23
2.6.3 其他程序庫 23
2.7 小結(jié) 24
2.8 習題與答案 24
2.9 參考文獻 24
第3章 數(shù)據(jù)準備 26
3.1 二元數(shù)據(jù)與二元分類 27
3.1.1 克利夫蘭心臟病數(shù)據(jù)集的二元目標 27
3.1.2 二值化MINST數(shù)據(jù)集 30
3.2 分類數(shù)據(jù)與多個類別 33
3.2.1 將字符串標簽轉(zhuǎn)換成數(shù)字 34
3.2.2 將分類轉(zhuǎn)換成獨熱編碼 36
3.3 實值數(shù)據(jù)與單變量回歸 38
3.3.1 縮放到特定范圍的數(shù)值 38
3.3.2 標準化到零均值和單位方差 41
3.4 改變數(shù)據(jù)的分布 42
3.5 數(shù)據(jù)增強 44
3.5.1 尺度縮放 44
3.5.2 添加噪聲 45
3.5.3 旋轉(zhuǎn) 45
3.5.4 其他增強手段 46
3.6 數(shù)據(jù)降維 46
3.6.1 監(jiān)督算法 47
3.6.2 無監(jiān)督技術(shù) 48
3.6.3 關(guān)于維度的數(shù)量 52
3.7 操縱數(shù)據(jù)的道德影響 53
3.8 小結(jié) 53
3.9 習題與答案 53
3.10 參考文獻 54
第4章 從數(shù)據(jù)中學習 55
4.1 學習的目的 55
4.1.1 分類問題 56
4.1.2 回歸問題 60
4.2 度量成功與錯誤 63
4.2.1 二元分類 64
4.2.2 多元分類 65
4.2.3 回歸分析矩陣 69
4.3 識別過擬合和泛化 70
4.3.1 擁有測試數(shù)據(jù)的情形 71
4.3.2 沒有測試數(shù)據(jù)的情形 72
4.4 機器學習背后的藝術(shù) 74
4.5 訓練深度學習算法的倫理意蘊 78
4.5.1 使用適當?shù)哪P托阅芏攘恐笜? 79
4.5.2 小心對待并驗證異常值 79
4.5.3 抽樣不足組的權(quán)重類 80
4.6 小結(jié) 80
4.7 習題與答案 81
4.8 參考文獻 81
第5章 訓練單個神經(jīng)元 83
5.1 感知機模型 83
5.1.1 概念的可視化 83
5.1.2 張量運算 84
5.2 感知機學習算法 86
5.3 處理線性不可分數(shù)據(jù)的感知機 88
5.3.1 線性可分數(shù)據(jù)的收斂 88
5.3.2 線性不可分數(shù)據(jù)的收斂 91
5.4 小結(jié) 92
5.5 習題與答案 93
5.6 參考文獻 93
第6章 訓練多層神經(jīng)元 94
6.1 MLP模型 94
6.2 小化誤差 96
6.2.1 步驟1:初始化 99
6.2.2 步驟2:前向傳播 99
6.2.3 步驟3:計算損失 101
6.2.4 步驟4:反向傳播 101
6.3 尋找超參數(shù) 106
6.4 小結(jié) 109
6.5 習題與答案 109
6.6 參考文獻 110
第二部分 無監(jiān)督深度學習
第7章 自編碼器 112
7.1 無監(jiān)督學習簡介 112
7.2 編碼層與解碼層 113
7.2.1 編碼層 115
7.2.2 解碼層 116
7.2.3 損失函數(shù) 116
7.2.4 學習與測試 117
7.3 數(shù)據(jù)降維與可視化應用 119
7.3.1 MNIST數(shù)據(jù)的準備 120
7.3.2 MNIST的自編碼器 120
7.3.3 模型訓練與可視化 122
7.4 無監(jiān)督學習的倫理意蘊 126
7.5 小結(jié) 127
7.6 習題與答案 127
7.7 參考文獻 128
第8章 深度自編碼器 129
8.1 深度信念網(wǎng)絡簡介 129
8.2 建立深度自編碼器 130
8.2.1 批歸一化 130
8.2.2 隨機失活 134
8.3 探索深度自編碼器的潛在空間 139
8.3.1 CIFAR-10 139
8.3.2 MNIST 146
8.4 小結(jié) 148
8.5 習題與答案 148
8.6 參考文獻 149
第9章 變分自編碼器 150
9.1 深度生成模型簡介 150
9.2 研究變分自編碼器模型 151
9.2.1 回顧心臟病數(shù)據(jù)集 153
9.2.2 重參數(shù)化技巧與采樣 154
9.2.3 學習編碼器中的后驗概率分布參數(shù) 154
9.2.4 解碼器建模 156
9.2.5 小化重構(gòu)損失 156
9.2.6 訓練VAE模型 157
9.2.7 使用VAE生成數(shù)據(jù) 159
9.3 深度和淺層VAE在MNIST上的性能比較 161
9.3.1 淺層VAE模型 162
9.3.2 深度VAE模型 164
9.3.3 VAE模型去噪 168
9.4 生成模型的倫理意蘊 168
9.5 小結(jié) 169
9.6 習題與答案 169
9.7 參考文獻 170
第10章 受限玻爾茲曼機 171
10.1 RBM模型