重磅!花书《深度学习》,这份精炼笔记可能是最全面的
點擊上方“AI有道”,選擇“星標(biāo)”公眾號
重磅干貨,第一時間送達(dá)
《深度學(xué)習(xí)》,又名“花書”。該書由三位大佬 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 撰寫,是深度學(xué)習(xí)領(lǐng)域奠基性的經(jīng)典教材,被譽(yù)為深度學(xué)習(xí)“圣經(jīng)”。
花書怎么學(xué)?參考優(yōu)秀的筆記往往能幫助你事半功倍!今天給大家推薦一份不錯的花書學(xué)習(xí)筆記,挺詳細(xì)的。作者是來自于谷歌的軟件工程師—川陀學(xué)者。我們一起來看看!
為方便以后查閱,把深度學(xué)習(xí)花書 Deep Learning 每一章的讀書筆記做個索引,完整的筆記也是根據(jù)書籍目錄來的。
花書的目錄如下:
下面我們來詳細(xì)看一下完整筆記內(nèi)容!
第一部分 機(jī)器學(xué)習(xí)基礎(chǔ)
第一章 前言
1. 前言(上)
花書可以大致分為三大部分:?
機(jī)器學(xué)習(xí)基礎(chǔ)知識:涵蓋線性代數(shù),概率論,數(shù)值計算和傳統(tǒng)機(jī)器學(xué)習(xí)基礎(chǔ)等知識。如果之前學(xué)過Andrew Ng的CS229的話基本可以跳過。
深度神經(jīng)網(wǎng)絡(luò)核心知識:屬于本書必讀部分,涵蓋前饋神經(jīng)網(wǎng)絡(luò),卷積神經(jīng)網(wǎng)絡(luò)(CNN),遞歸神經(jīng)網(wǎng)絡(luò)(RNN) 等。
深度學(xué)習(xí)前沿:有一些前沿研究領(lǐng)域的介紹,如線性因子模型,表征學(xué)習(xí),生成模型等。 可以按照自己的需要選讀相關(guān)章節(jié)。
完整版:
https://zhuanlan.zhihu.com/p/37753117
2. 前言(下)
繼續(xù)總結(jié)深度學(xué)習(xí)花書第一章前言下半部分,主要內(nèi)容有:
深度學(xué)習(xí)歷史悠久,在不同時期名字不同,代表不同的側(cè)重點。
由于訓(xùn)練數(shù)據(jù)的增多和軟硬件性能的提高,深度學(xué)習(xí)的模型越來越準(zhǔn)確。
深度學(xué)習(xí)逐漸走向?qū)嵱没?/p>
完整版:
https://zhuanlan.zhihu.com/p/37800558
第二章 線性代數(shù)
線性代數(shù)是機(jī)器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)之一,這里總結(jié)一下深度學(xué)習(xí)花書線性代數(shù)一章中機(jī)器學(xué)習(xí)主要用到的知識,并不囊括所有線性代數(shù)知識。
完整版:
https://zhuanlan.zhihu.com/p/38197420
第三章 概率論
概率論是研究隨機(jī)性和不確定性的科學(xué),在人工智能領(lǐng)域主要有兩大應(yīng)用:1. 概率論可以指導(dǎo)人工智能模型所需模擬或近似的概率分布。2.概率與統(tǒng)計可以幫助我們分析模型的預(yù)測的準(zhǔn)確性。可以說,線性代數(shù)和概率論是人工智能系統(tǒng)的兩大數(shù)學(xué)基石,這一章對于理解很多機(jī)器學(xué)習(xí)模型的背后驅(qū)動力是關(guān)鍵的。
完整版:
https://zhuanlan.zhihu.com/p/38424019
第四章 數(shù)值計算
第四章主要研究的是優(yōu)化問題。我們機(jī)器學(xué)習(xí)的目標(biāo)常常是使某個目標(biāo)函數(shù)(objective function)或損失函數(shù)(cost function)盡量小,即找到一個 x* = argminf(x). 對于有的問題我們可能可以得到解析解,但對于大多數(shù)問題,我們可能無法得到解析解,這時候就需要一些數(shù)值計算的方法使我們逐漸逼近最優(yōu)解,這一章里就主要講了利用一階導(dǎo)數(shù)的梯度下降算法和利用二階導(dǎo)數(shù)的牛頓方法,另外還有研究在給定某些限制條件下的條件極值的解法,Ian在這一章有些解釋可能略過了,在這里我加入了自己的理解使其更易懂。
完整版:
https://zhuanlan.zhihu.com/p/38644738
第五章 機(jī)器學(xué)習(xí)基礎(chǔ)
1.?機(jī)器學(xué)習(xí)問題定義與線性回歸
之前已經(jīng)總結(jié)了第二到四章數(shù)學(xué)基礎(chǔ)部分,第五章講的是機(jī)器學(xué)習(xí)基礎(chǔ),內(nèi)容較多,包括機(jī)器學(xué)習(xí)問題的定義,機(jī)器學(xué)習(xí)算法過擬合和驗證集的概念,貝葉斯推斷,經(jīng)典的監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí)的算法等,而且Ian很多方面一筆帶過,其實每個經(jīng)典的算法都可以單獨出來寫一篇文章詳述,所以準(zhǔn)備將第五章分幾部分總結(jié),而且爭取把書中比較模糊的涉及到的概念也補(bǔ)充清楚。
這篇先總結(jié)一下對于機(jī)器學(xué)習(xí)問題如何定義并以線性回歸來舉例說明。
完整版:
https://zhuanlan.zhihu.com/p/38790135
2.?欠擬合、過擬合與正則化
繼續(xù)花書第五章總結(jié),主要內(nèi)容是模型的泛化誤差,過擬合與正則化方法。
完整版:
https://zhuanlan.zhihu.com/p/39035752
3.?最大似然法與最大后驗概率估計
繼續(xù)花書第五章總結(jié),主要內(nèi)容有最大似然法(Maximum likelihood estimation), 貝葉斯統(tǒng)計(Bayesian statistics)與最大后驗概率估計(Maximum A Posteriori estimation簡稱MAP estimation)。
完整版:
https://zhuanlan.zhihu.com/p/39063974
4.?邏輯回歸
繼續(xù)花書第五章機(jī)器學(xué)習(xí)基礎(chǔ)部分總結(jié),接下來是經(jīng)典監(jiān)督學(xué)習(xí)算法,不過Ian對于邏輯回歸和支持向量機(jī)一筆帶過,解釋的不是很詳細(xì),我準(zhǔn)備結(jié)合Andrew Ng的cs229內(nèi)容將邏輯回歸(logistic regression)與支持向量機(jī)(support vector machine)分兩篇詳細(xì)寫一下。
完整版:
https://zhuanlan.zhihu.com/p/39784376
5.?支持向量機(jī)
支持向量機(jī)(Support Vector Machine, 簡稱SVM)是傳統(tǒng)監(jiān)督學(xué)習(xí)中一個經(jīng)典的算法,Ian在花書中講的比較簡略,這里我結(jié)合CS229的內(nèi)容進(jìn)行補(bǔ)充。
完整版:
https://zhuanlan.zhihu.com/p/39815531
6.?主成分分析PCA
接下來總結(jié)經(jīng)典的無監(jiān)督學(xué)習(xí)模型主成分分析(Principal component analysis, 簡稱PCA)。Ian分別在第二章和第五章從不同角度討論了PCA算法,分別是在第二章線性代數(shù)中本征分解和奇異值分解SVD之后和第五章無監(jiān)督學(xué)習(xí)模型中,這里總結(jié)在一起。
完整版:
https://zhuanlan.zhihu.com/p/39847860
第二部分 深度神經(jīng)網(wǎng)絡(luò)核心知識
第六章 前饋神經(jīng)網(wǎng)絡(luò)
1.?前饋神經(jīng)網(wǎng)絡(luò)初探
前五章總結(jié)了深度學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)及經(jīng)典機(jī)器學(xué)習(xí)算法(深度學(xué)習(xí)花書讀書筆記目錄),第6到12章是花書的深度網(wǎng)絡(luò)核心部分,包括如下內(nèi)容:前饋神經(jīng)網(wǎng)絡(luò),深度學(xué)習(xí)的正則方法,訓(xùn)練深度學(xué)習(xí)模型的優(yōu)化方法,卷積神經(jīng)網(wǎng)絡(luò),循環(huán)及遞歸神經(jīng)網(wǎng)絡(luò),關(guān)于模型訓(xùn)練的建議與方法以及深度學(xué)習(xí)的應(yīng)用,這部分的技術(shù)已經(jīng)廣泛應(yīng)用到工業(yè)界,對于想要用深度學(xué)習(xí)來解決實際工作中的問題的從業(yè)人員很有必要。?
現(xiàn)在就開始第六章前饋神經(jīng)網(wǎng)絡(luò)的總結(jié),準(zhǔn)備分為三篇:1.初識前饋神經(jīng)網(wǎng)絡(luò) 2.前饋神經(jīng)網(wǎng)絡(luò)的基本組成與架構(gòu) 3.反向傳播算法。現(xiàn)在開始第一篇總結(jié)。
完整版:
https://zhuanlan.zhihu.com/p/40519236
2.?神經(jīng)網(wǎng)絡(luò)損失函數(shù)、輸出層、隱藏層詳解
神經(jīng)網(wǎng)絡(luò)的設(shè)計主要包含兩方面:1)損失函數(shù)的選擇 2)模型的具體架構(gòu)。
完整版:
https://zhuanlan.zhihu.com/p/41194849
3.?反向傳播算法
為了理解什么是反向傳播(backward propagation),先要知道什么是正向傳播(forward propagation)。顧名思義,正向傳播就是對于前饋神經(jīng)網(wǎng)絡(luò)來說,信息從輸入到隱藏層再到輸出的正向流動過程,最終會得到損失函數(shù)的值。而反向傳播就是從損失函數(shù)反向流入網(wǎng)絡(luò)以計算梯度(gradient)的過程。?
要注意,有個普遍的誤解是反向傳播就是神經(jīng)網(wǎng)絡(luò)的全部學(xué)習(xí)算法,實際上,反向傳播僅指計算梯度的過程,實際上的學(xué)習(xí)過程是諸如隨機(jī)梯度下降(stochastic gradient descent,SGD)更新網(wǎng)絡(luò)的算法。
完整版:
https://zhuanlan.zhihu.com/p/41379139
第七章 正則化方法
繼續(xù)總結(jié)深度學(xué)習(xí)花書,第七章主要講了深度學(xué)習(xí)中的各種正則化方法(regularization),即為了減小泛化誤差而對機(jī)器學(xué)習(xí)算法進(jìn)行的修改。關(guān)于泛化、欠擬合、過擬合的基礎(chǔ)概念,可參考之前的總結(jié)文章欠擬合、過擬合與正則化。
總體來說,一部分正則化方法使給模型施加額外的限制條件,例如限制參數(shù)值范圍,有些會在目標(biāo)函數(shù)中添加一些額外懲罰項,本質(zhì)上也是希望限制參數(shù)值。有的時候,這些限制條件或懲罰項代表了特定的先驗經(jīng)驗,有的時候是希望避免模型過于復(fù)雜。正則化常常會增加一些bias但同時會減少variance,好的正則化方法就是在能夠顯著減小variance的情況下又不顯著地增加bias。
完整版:
https://zhuanlan.zhihu.com/p/41462329
第八章 優(yōu)化方法
1.?深度學(xué)習(xí)優(yōu)化算法比較
繼續(xù)深度學(xué)習(xí)第八章總結(jié),這章主要講了深度學(xué)習(xí)的優(yōu)化方法,主要涉及的內(nèi)容有Stochastic Gradient Descent (SGD), Momentum, Adagrad, RMSProp, Adam,模型參數(shù)初始化和Batch Normalization,第一部分先總結(jié)SGD及其各種改進(jìn)算法,由于這一部分內(nèi)容在斯坦福CS231n中的解釋更清晰,會結(jié)合起來一起總結(jié)。
完整版:
https://zhuanlan.zhihu.com/p/42183379
2.?Batch Normalization
前面一篇(深度學(xué)習(xí)優(yōu)化算法比較——深度學(xué)習(xí)第八章(一))總結(jié)了常見的優(yōu)化算法SGD以及其改進(jìn)方法Momentum,Adagrad,Adam等,這篇繼續(xù)總結(jié)最近優(yōu)化深度神經(jīng)網(wǎng)絡(luò)的一種高效的方法——Batch Normalization,該方法有Ioffe和Szegedy在2015年提出(Accelerating Deep Network Training by Reducing Internal Covariate Shift)。
完整版:
https://zhuanlan.zhihu.com/p/42982530
第九章 卷積神經(jīng)網(wǎng)絡(luò)
繼續(xù)深度學(xué)習(xí)花書的讀書筆記總結(jié),這一章主要介紹了卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network, 簡稱CNN), 它通常適用于具有網(wǎng)格狀結(jié)構(gòu)的數(shù)據(jù),例如時序數(shù)據(jù)可看做是在特定時間間隔上的一維網(wǎng)格,圖像可以看做是像素構(gòu)成的二維網(wǎng)格,醫(yī)學(xué)成像如CT等為三維網(wǎng)格數(shù)據(jù)。?
卷積神經(jīng)網(wǎng)絡(luò),顧名思義,利用了數(shù)學(xué)上的卷積操作(convolution)。和前面第六章總結(jié)的基本的前饋神經(jīng)網(wǎng)絡(luò)相比,CNN只不過是將某層或某幾層中的矩陣乘法運算替換為卷積運算,其他的比如說最大似然法則,反向傳播算法等等都保持不變。
完整版:
https://zhuanlan.zhihu.com/p/43143470
第十章 循環(huán)神經(jīng)網(wǎng)絡(luò)
繼續(xù)深度學(xué)習(xí)花書的讀書筆記總結(jié)。這一章主要介紹了循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent neural network, 簡稱RNN),主要用來處理序列數(shù)據(jù),比如一些文字序列或時序數(shù)據(jù)。對于這類數(shù)據(jù),基本的前饋神經(jīng)網(wǎng)絡(luò)會對每一個輸入的特征都訓(xùn)練一個單獨的參數(shù),而不能很好的進(jìn)行參數(shù)的共享,而RNN就可以通過對不同時間點的特征共享參數(shù)而更容易的進(jìn)行訓(xùn)練,泛化效果也更好。上一章卷積神經(jīng)網(wǎng)絡(luò)——深度學(xué)習(xí)第九章總結(jié)過CNN也可以實現(xiàn)參數(shù)共享,RNN與其不同的地方在于其每一點的輸出還依賴于之前的結(jié)果。
完整版:
https://zhuanlan.zhihu.com/p/44145288
第十一章 實戰(zhàn)經(jīng)驗
前面幾章我們總結(jié)了機(jī)器學(xué)習(xí)以及深度學(xué)習(xí)中一些常用的模型以及訓(xùn)練方法,實際應(yīng)用中,我們還要知道對于一些特定的情景選擇哪種模型,以及如何通過收集模型的反饋結(jié)果來不斷改善模型。有時候不一定需要采用最新最復(fù)雜的模型,而是需要深入的理解一些通用的模型,并更好的應(yīng)用到我們所處理的具體問題中。這一章會總結(jié)一下我們面對一個機(jī)器學(xué)習(xí)問題時的實戰(zhàn)步驟:確立性能指標(biāo);快速建立端到端的流程;分析模型效果,并不斷的對模型進(jìn)行改進(jìn)。下面詳細(xì)解釋一下每個步驟。
完整版:
https://zhuanlan.zhihu.com/p/44643887
第十二章 深度學(xué)習(xí)應(yīng)用
繼續(xù)《深度學(xué)習(xí)》花書筆記總結(jié),這一章主要是結(jié)合前面幾章內(nèi)容簡要介紹了深度學(xué)習(xí)在圖像識別,自然語言處理及其他領(lǐng)域的應(yīng)用。
完整版:
https://zhuanlan.zhihu.com/p/45225601
第三部分 深度學(xué)習(xí)前沿研究
第十三章 線性因子模型
繼續(xù)深度學(xué)習(xí)花書總結(jié),從第十三章開始,主要是一些前沿研究領(lǐng)域。之前總結(jié)的方法大部分是在有大量數(shù)據(jù)情況下的監(jiān)督學(xué)習(xí)方法,而假如我們想減小數(shù)據(jù)量的要求,則需要一些無監(jiān)督學(xué)習(xí)及半監(jiān)督學(xué)習(xí)方法,雖然有很多無監(jiān)督學(xué)習(xí)方法,但是目前還無法達(dá)到深度學(xué)習(xí)在監(jiān)督學(xué)習(xí)問題中所達(dá)到的精度,這常常是由于我們需要解決的問題的維度過高或計算量過大造成的。
完整版:
https://zhuanlan.zhihu.com/p/45898775
第十四章 自編碼器
自編碼器(Autoencoder)是一種特定的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),其目的是為了將輸入信息映射到某個更低維度的空間,生成包含重要特征的編碼code,這部分稱為Encoder,可用函數(shù) h=f(x) 表示,然后再利用Decoder將code重構(gòu)成為盡量能還原原輸入的結(jié)果,用函數(shù) r=g(h) 。我們的目的就是盡量使 g(f(x))=x ,當(dāng)然如果只是簡單的將輸入復(fù)制到輸出是沒有任何意義的,我們需要加一定的限制條件,使我們的模型學(xué)習(xí)到數(shù)據(jù)中更重要的特征。
完整版:
https://zhuanlan.zhihu.com/p/46067799
第十五章 表示學(xué)習(xí)
這一章聚焦表示學(xué)習(xí)(Representation Learning)及其應(yīng)用,主要內(nèi)容有無監(jiān)督及有監(jiān)督預(yù)訓(xùn)練的作用,遷移學(xué)習(xí)及分布式表示。在前言部分(機(jī)器學(xué)習(xí)的《易筋經(jīng)》:深度學(xué)習(xí)花書前言(上))提到過,機(jī)器學(xué)習(xí)的主要問題就是如何更合理高效的將特征表示出來。那么,我們怎么判定某種表示更好呢,這需要具體問題具體分析,這通常依賴于后續(xù)的學(xué)習(xí)任務(wù)是否能夠得益于這種表示。通常,我們是進(jìn)行某些無監(jiān)督學(xué)習(xí)提取出特征,而這些特征可用來我們更好的進(jìn)行監(jiān)督學(xué)習(xí),或者將這些特征遷移到其他相關(guān)任務(wù)中。我們也可以將監(jiān)督學(xué)習(xí)訓(xùn)練的前饋神經(jīng)網(wǎng)絡(luò)看做是一種表示學(xué)習(xí),通常神經(jīng)網(wǎng)絡(luò)的最后一層是個分類器如softmax,它之前的隱藏層可以看做是給這個分類器提供一個高效的表征。
完整版:
https://zhuanlan.zhihu.com/p/46286036
第十六章 結(jié)構(gòu)化概率模型
繼續(xù)《深度學(xué)習(xí)》花書總結(jié),從第16章開始直到第20章都是在討論概率模型,其中第16到19章著重于概率模型基礎(chǔ)及一些近似方法,第20章討論應(yīng)用這些方法的生成模型。我們先來總結(jié)第16章概率圖的主要概念。
完整版:
https://zhuanlan.zhihu.com/p/47892761
第十七章 蒙特卡洛方法
繼續(xù)《深度學(xué)習(xí)》花書總結(jié),本章主要介紹采樣的蒙特卡洛方法,準(zhǔn)備結(jié)合斯坦福CS 228 - Probabilistic Graphical Models課程相關(guān)內(nèi)容一起總結(jié)。
完整版:https://zhuanlan.zhihu.com/p/48481980
第十八章 配分函數(shù)
繼續(xù)《深度學(xué)習(xí)》花書總結(jié),本章主要介紹了各種求配分函數(shù)的方法,準(zhǔn)備結(jié)合斯坦福cs228Learning in undirected models 這部分內(nèi)容一起總結(jié)。
完整版:
https://zhuanlan.zhihu.com/p/48552020
第十九章 近似推斷
繼續(xù)《深度學(xué)習(xí)》花書總結(jié),本章介紹了各種近似推斷的方法,有EM算法,變分推斷等,重點是變分推斷,這部分內(nèi)容個人感覺Variational Inference: A Review for Statisticians 這篇論文對變分推斷的解釋思路更清晰,所以會主要根據(jù)這篇論文來進(jìn)行總結(jié)。
完整版:
https://zhuanlan.zhihu.com/p/49401976
第二十章 生成模型
1.?生成模型綜述
這是《深度學(xué)習(xí)》花書最后一章,內(nèi)容也比較多,所以準(zhǔn)備分為四篇總結(jié):1. 生成模型綜述,比較一下常見的幾種生成模型。 2. 詳解玻爾茲曼機(jī),GSN以及Fully Visible Belief Network如PixelRNN/PixelCNN。3.詳解變分自編碼器Variational Autoencoder。4.詳解生成對抗網(wǎng)絡(luò)Generative Adversarial Network。另外,由于部分內(nèi)容其他資料會梳理的更清晰,所以會結(jié)合Ian在2016 NIPS的GAN tutorial NIPS 2016 tutorial: Generative Adversarial Networks和斯坦福Syllabus | CS 231N中與Generative Model相關(guān)的內(nèi)容一起總結(jié)。
這一篇先來綜述一下什么是生成模型,我們?yōu)槭裁匆芯可赡P鸵约俺R娚赡P妥V系及比較。
完整版:
https://zhuanlan.zhihu.com/p/50278440
2.?玻爾茲曼機(jī)、生成隨機(jī)網(wǎng)絡(luò)與自回歸網(wǎng)絡(luò)
繼續(xù)總結(jié)花書第20章,這一章花了很大的篇幅介紹玻爾茲曼機(jī)及其變種,但實際應(yīng)用中主要用到的三種方法還是1.自回歸網(wǎng)絡(luò)Auto-Regressive Networks,又叫做Fully-visible Bayes networks(FVBN)。2.變分自解碼器Variational Autoencoder (VAE)。3.生成對抗網(wǎng)路Generative Adversarial Networks(GAN)。所以這篇會簡要的總結(jié)一下玻爾茲曼機(jī)以及生成隨機(jī)網(wǎng)絡(luò),然后著重總結(jié)一下自回歸網(wǎng)絡(luò)。
完整版:
https://zhuanlan.zhihu.com/p/50745191
3.?變分自編碼器VAE
繼續(xù)總結(jié)花書第20章,這一篇我們來看另一種常用的生成模型——變分自編碼器Variational Autoencoder,簡稱VAE,主要會結(jié)合斯坦福Syllabus | CS 231N中與Generative Model相關(guān)的內(nèi)容來總結(jié)。
完整版:
https://zhuanlan.zhihu.com/p/51355416
4.?生成模型中的左右互搏術(shù)
繼續(xù)總結(jié)花書第20章最后一部分生成對抗網(wǎng)絡(luò)Generative Adversarial Network,簡稱GAN。主要結(jié)合斯坦福Syllabus | CS 231N中與Generative Model相關(guān)內(nèi)容以及NIPS 2016 tutorial: Generative Adversarial Networks來進(jìn)行總結(jié)。
完整版:
https://zhuanlan.zhihu.com/p/37846221
后記與延伸
深度學(xué)習(xí)花書讀書筆記后記與延伸:
https://zhuanlan.zhihu.com/p/51431332
花書完整筆記的目錄可以看這里:
https://zhuanlan.zhihu.com/p/38431213
附加資源
之前,紅色石頭在網(wǎng)上發(fā)現(xiàn)了這份由 Cugtyt 整理的“花書”經(jīng)驗法則的中文版,經(jīng)過翻譯作者的允許,特此將這份經(jīng)驗法則在公眾號分享出來,方便大家嘗鮮!
“花書” 《深度學(xué)習(xí)》經(jīng)驗法則剛剛發(fā)布了中文版!
英文地址:
https://jeffmacaluso.github.io/post/DeepLearningRulesOfThumb/
最后,希望這份資源對你有用!也感謝原作者的辛勤整理!
總結(jié)
以上是生活随笔為你收集整理的重磅!花书《深度学习》,这份精炼笔记可能是最全面的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编程实现启用禁用网卡
- 下一篇: C++的学习感想