天天看點

重磅!花書《深度學習》,這份精煉筆記可能是最全面的

《深度學習》,又名“花書”。該書由三位大佬 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 撰寫,是深度學習領域奠基性的經典教材,被譽為深度學習“聖經”。

重磅!花書《深度學習》,這份精煉筆記可能是最全面的

花書怎麼學?參考優秀的筆記往往能幫助你事半功倍!今天給大家推薦一份不錯的花書學習筆記,挺詳細的。作者是來自于谷歌的軟體工程師—川陀學者。我們一起來看看!

為友善以後查閱,把深度學習花書 Deep Learning 每一章的讀書筆記做個索引,完整的筆記也是根據書籍目錄來的。

花書的目錄如下:

重磅!花書《深度學習》,這份精煉筆記可能是最全面的
重磅!花書《深度學習》,這份精煉筆記可能是最全面的
下面我們來詳細看一下完整筆記内容!

第一部分 機器學習基礎

第一章 前言

1. 前言(上)

花書可以大緻分為三大部分: 

  • 機器學習基礎知識:涵蓋線性代數,機率論,數值計算和傳統機器學習基礎等知識。如果之前學過Andrew Ng的CS229的話基本可以跳過。
  • 深度神經網絡核心知識:屬于本書必讀部分,涵蓋前饋神經網絡,卷積神經網絡(CNN),遞歸神經網絡(RNN) 等。
  • 深度學習前沿:有一些前沿研究領域的介紹,如線性因子模型,表征學習,生成模型等。 可以按照自己的需要選讀相關章節。

完整版:

https://zhuanlan.zhihu.com/p/37753117

2. 前言(下)

繼續總結深度學習花書第一章前言下半部分,主要内容有:

  • 深度學習曆史悠久,在不同時期名字不同,代表不同的側重點。
  • 由于訓練資料的增多和軟硬體性能的提高,深度學習的模型越來越準确。
  • 深度學習逐漸走向實用化。
https://zhuanlan.zhihu.com/p/37800558

第二章 線性代數

線性代數是機器學習的數學基礎之一,這裡總結一下深度學習花書線性代數一章中機器學習主要用到的知識,并不囊括所有線性代數知識。

https://zhuanlan.zhihu.com/p/38197420

第三章 機率論

機率論是研究随機性和不确定性的科學,在人工智能領域主要有兩大應用:1. 機率論可以指導人工智能模型所需模拟或近似的機率分布。2.機率與統計可以幫助我們分析模型的預測的準确性。可以說,線性代數和機率論是人工智能系統的兩大數學基石,這一章對于了解很多機器學習模型的背後驅動力是關鍵的。

https://zhuanlan.zhihu.com/p/38424019

第四章 數值計算

第四章主要研究的是優化問題。我們機器學習的目标常常是使某個目标函數(objective function)或損失函數(cost function)盡量小,即找到一個 x* = argminf(x). 對于有的問題我們可能可以得到解析解,但對于大多數問題,我們可能無法得到解析解,這時候就需要一些數值計算的方法使我們逐漸逼近最優解,這一章裡就主要講了利用一階導數的梯度下降算法和利用二階導數的牛頓方法,另外還有研究在給定某些限制條件下的條件極值的解法,Ian在這一章有些解釋可能略過了,在這裡我加入了自己的了解使其更易懂。

https://zhuanlan.zhihu.com/p/38644738

第五章 機器學習基礎

1. 機器學習問題定義與線性回歸

之前已經總結了第二到四章數學基礎部分,第五章講的是機器學習基礎,内容較多,包括機器學習問題的定義,機器學習算法過拟合和驗證集的概念,貝葉斯推斷,經典的監督學習和非監督學習的算法等,而且Ian很多方面一筆帶過,其實每個經典的算法都可以單獨出來寫一篇文章詳述,是以準備将第五章分幾部分總結,而且争取把書中比較模糊的涉及到的概念也補充清楚。

這篇先總結一下對于機器學習問題如何定義并以線性回歸來舉例說明。

https://zhuanlan.zhihu.com/p/38790135

2. 欠拟合、過拟合與正則化

繼續花書第五章總結,主要内容是模型的泛化誤差,過拟合與正則化方法。

https://zhuanlan.zhihu.com/p/39035752

3. 最大似然法與最大後驗機率估計

繼續花書第五章總結,主要内容有最大似然法(Maximum likelihood estimation), 貝葉斯統計(Bayesian statistics)與最大後驗機率估計(Maximum A Posteriori estimation簡稱MAP estimation)。

https://zhuanlan.zhihu.com/p/39063974

4. 邏輯回歸

繼續花書第五章機器學習基礎部分總結,接下來是經典監督學習算法,不過Ian對于邏輯回歸和支援向量機一筆帶過,解釋的不是很詳細,我準備結合Andrew Ng的cs229内容将邏輯回歸(logistic regression)與支援向量機(support vector machine)分兩篇詳細寫一下。

https://zhuanlan.zhihu.com/p/39784376

5. 支援向量機

支援向量機(Support Vector Machine, 簡稱SVM)是傳統監督學習中一個經典的算法,Ian在花書中講的比較簡略,這裡我結合CS229的内容進行補充。

https://zhuanlan.zhihu.com/p/39815531

6. 主成分分析PCA

接下來總結經典的無監督學習模型主成分分析(Principal component analysis, 簡稱PCA)。Ian分别在第二章和第五章從不同角度讨論了PCA算法,分别是在第二章線性代數中本征分解和奇異值分解SVD之後和第五章無監督學習模型中,這裡總結在一起。

https://zhuanlan.zhihu.com/p/39847860

第二部分 深度神經網絡核心知識

第六章 前饋神經網絡

1. 前饋神經網絡初探

前五章總結了深度學習的數學基礎及經典機器學習算法(深度學習花書讀書筆記目錄),第6到12章是花書的深度網絡核心部分,包括如下内容:前饋神經網絡,深度學習的正則方法,訓練深度學習模型的優化方法,卷積神經網絡,循環及遞歸神經網絡,關于模型訓練的建議與方法以及深度學習的應用,這部分的技術已經廣泛應用到工業界,對于想要用深度學習來解決實際工作中的問題的從業人員很有必要。 

現在就開始第六章前饋神經網絡的總結,準備分為三篇:1.初識前饋神經網絡 2.前饋神經網絡的基本組成與架構 3.反向傳播算法。現在開始第一篇總結。

https://zhuanlan.zhihu.com/p/40519236

2. 神經網絡損失函數、輸出層、隐藏層詳解

神經網絡的設計主要包含兩方面:1)損失函數的選擇 2)模型的具體架構。

https://zhuanlan.zhihu.com/p/41194849

3. 反向傳播算法

為了了解什麼是反向傳播(backward propagation),先要知道什麼是正向傳播(forward propagation)。顧名思義,正向傳播就是對于前饋神經網絡來說,資訊從輸入到隐藏層再到輸出的正向流動過程,最終會得到損失函數的值。而反向傳播就是從損失函數反向流入網絡以計算梯度(gradient)的過程。 

要注意,有個普遍的誤解是反向傳播就是神經網絡的全部學習算法,實際上,反向傳播僅指計算梯度的過程,實際上的學習過程是諸如随機梯度下降(stochastic gradient descent,SGD)更新網絡的算法。

https://zhuanlan.zhihu.com/p/41379139

第七章 正則化方法

繼續總結深度學習花書,第七章主要講了深度學習中的各種正則化方法(regularization),即為了減小泛化誤差而對機器學習算法進行的修改。關于泛化、欠拟合、過拟合的基礎概念,可參考之前的總結文章欠拟合、過拟合與正則化。

總體來說,一部分正則化方法使給模型施加額外的限制條件,例如限制參數值範圍,有些會在目标函數中添加一些額外懲罰項,本質上也是希望限制參數值。有的時候,這些限制條件或懲罰項代表了特定的先驗經驗,有的時候是希望避免模型過于複雜。正則化常常會增加一些bias但同時會減少variance,好的正則化方法就是在能夠顯著減小variance的情況下又不顯著地增加bias。

https://zhuanlan.zhihu.com/p/41462329

第八章 優化方法

1. 深度學習優化算法比較

繼續深度學習第八章總結,這章主要講了深度學習的優化方法,主要涉及的内容有Stochastic Gradient Descent (SGD), Momentum, Adagrad, RMSProp, Adam,模型參數初始化和Batch Normalization,第一部分先總結SGD及其各種改進算法,由于這一部分内容在斯坦福CS231n中的解釋更清晰,會結合起來一起總結。

https://zhuanlan.zhihu.com/p/42183379

2. Batch Normalization

前面一篇(深度學習優化算法比較——深度學習第八章(一))總結了常見的優化算法SGD以及其改進方法Momentum,Adagrad,Adam等,這篇繼續總結最近優化深度神經網絡的一種高效的方法——Batch Normalization,該方法有Ioffe和Szegedy在2015年提出(Accelerating Deep Network Training by Reducing Internal Covariate Shift)。

https://zhuanlan.zhihu.com/p/42982530

第九章 卷積神經網絡

繼續深度學習花書的讀書筆記總結,這一章主要介紹了卷積神經網絡(convolutional neural network, 簡稱CNN), 它通常适用于具有網格狀結構的資料,例如時序資料可看做是在特定時間間隔上的一維網格,圖像可以看做是像素構成的二維網格,醫學成像如CT等為三維網格資料。 

卷積神經網絡,顧名思義,利用了數學上的卷積操作(convolution)。和前面第六章總結的基本的前饋神經網絡相比,CNN隻不過是将某層或某幾層中的矩陣乘法運算替換為卷積運算,其他的比如說最大似然法則,反向傳播算法等等都保持不變。

https://zhuanlan.zhihu.com/p/43143470

第十章 循環神經網絡

繼續深度學習花書的讀書筆記總結。這一章主要介紹了循環神經網絡(Recurrent neural network, 簡稱RNN),主要用來處理序列資料,比如一些文字序列或時序資料。對于這類資料,基本的前饋神經網絡會對每一個輸入的特征都訓練一個單獨的參數,而不能很好的進行參數的共享,而RNN就可以通過對不同時間點的特征共享參數而更容易的進行訓練,泛化效果也更好。上一章卷積神經網絡——深度學習第九章總結過CNN也可以實作參數共享,RNN與其不同的地方在于其每一點的輸出還依賴于之前的結果。

https://zhuanlan.zhihu.com/p/44145288

第十一章 實戰經驗

前面幾章我們總結了機器學習以及深度學習中一些常用的模型以及訓練方法,實際應用中,我們還要知道對于一些特定的情景選擇哪種模型,以及如何通過收集模型的回報結果來不斷改善模型。有時候不一定需要采用最新最複雜的模型,而是需要深入的了解一些通用的模型,并更好的應用到我們所處理的具體問題中。這一章會總結一下我們面對一個機器學習問題時的實戰步驟:确立性能名額;快速建立端到端的流程;分析模型效果,并不斷的對模型進行改進。下面詳細解釋一下每個步驟。

https://zhuanlan.zhihu.com/p/44643887

第十二章 深度學習應用

繼續《深度學習》花書筆記總結,這一章主要是結合前面幾章内容簡要介紹了深度學習在圖像識别,自然語言處理及其他領域的應用。

https://zhuanlan.zhihu.com/p/45225601

第三部分 深度學習前沿研究

第十三章 線性因子模型

繼續深度學習花書總結,從第十三章開始,主要是一些前沿研究領域。之前總結的方法大部分是在有大量資料情況下的監督學習方法,而假如我們想減小資料量的要求,則需要一些無監督學習及半監督學習方法,雖然有很多無監督學習方法,但是目前還無法達到深度學習在監督學習問題中所達到的精度,這常常是由于我們需要解決的問題的次元過高或計算量過大造成的。

https://zhuanlan.zhihu.com/p/45898775

第十四章 自編碼器

自編碼器(Autoencoder)是一種特定的神經網絡結構,其目的是為了将輸入資訊映射到某個更低次元的空間,生成包含重要特征的編碼code,這部分稱為Encoder,可用函數 h=f(x) 表示,然後再利用Decoder将code重構成為盡量能還原原輸入的結果,用函數 r=g(h) 。我們的目的就是盡量使 g(f(x))=x ,當然如果隻是簡單的将輸入複制到輸出是沒有任何意義的,我們需要加一定的限制條件,使我們的模型學習到資料中更重要的特征。

https://zhuanlan.zhihu.com/p/46067799

第十五章 表示學習

這一章聚焦表示學習(Representation Learning)及其應用,主要内容有無監督及有監督預訓練的作用,遷移學習及分布式表示。在前言部分(機器學習的《易筋經》:深度學習花書前言(上))提到過,機器學習的主要問題就是如何更合理高效的将特征表示出來。那麼,我們怎麼判定某種表示更好呢,這需要具體問題具體分析,這通常依賴于後續的學習任務是否能夠得益于這種表示。通常,我們是進行某些無監督學習提取出特征,而這些特征可用來我們更好的進行監督學習,或者将這些特征遷移到其他相關任務中。我們也可以将監督學習訓練的前饋神經網絡看做是一種表示學習,通常神經網絡的最後一層是個分類器如softmax,它之前的隐藏層可以看做是給這個分類器提供一個高效的表征。

https://zhuanlan.zhihu.com/p/46286036

第十六章 結構化機率模型

繼續《深度學習》花書總結,從第16章開始直到第20章都是在讨論機率模型,其中第16到19章着重于機率模型基礎及一些近似方法,第20章讨論應用這些方法的生成模型。我們先來總結第16章機率圖的主要概念。

https://zhuanlan.zhihu.com/p/47892761

第十七章 蒙特卡洛方法

繼續《深度學習》花書總結,本章主要介紹采樣的蒙特卡洛方法,準備結合斯坦福CS 228 - Probabilistic Graphical Models課程相關内容一起總結。

https://zhuanlan.zhihu.com/p/48481980

第十八章 配分函數

繼續《深度學習》花書總結,本章主要介紹了各種求配分函數的方法,準備結合斯坦福cs228Learning in undirected models 這部分内容一起總結。

https://zhuanlan.zhihu.com/p/48552020

第十九章 近似推斷

繼續《深度學習》花書總結,本章介紹了各種近似推斷的方法,有EM算法,變分推斷等,重點是變分推斷,這部分内容個人感覺Variational Inference: A Review for Statisticians 這篇論文對變分推斷的解釋思路更清晰,是以會主要根據這篇論文來進行總結。

https://zhuanlan.zhihu.com/p/49401976

第二十章 生成模型

1. 生成模型綜述

這是《深度學習》花書最後一章,内容也比較多,是以準備分為四篇總結:1. 生成模型綜述,比較一下常見的幾種生成模型。 2. 詳解玻爾茲曼機,GSN以及Fully Visible Belief Network如PixelRNN/PixelCNN。3.詳解變分自編碼器Variational Autoencoder。4.詳解生成對抗網絡Generative Adversarial Network。另外,由于部分内容其他資料會梳理的更清晰,是以會結合Ian在2016 NIPS的GAN tutorial NIPS 2016 tutorial: Generative Adversarial Networks和斯坦福Syllabus | CS 231N中與Generative Model相關的内容一起總結。

這一篇先來綜述一下什麼是生成模型,我們為什麼要研究所學生成模型以及常見生成模型譜系及比較。

https://zhuanlan.zhihu.com/p/50278440

2. 玻爾茲曼機、生成随機網絡與自回歸網絡

繼續總結花書第20章,這一章花了很大的篇幅介紹玻爾茲曼機及其變種,但實際應用中主要用到的三種方法還是1.自回歸網絡Auto-Regressive Networks,又叫做Fully-visible Bayes networks(FVBN)。2.變分自解碼器Variational Autoencoder (VAE)。3.生成對抗網路Generative Adversarial Networks(GAN)。是以這篇會簡要的總結一下玻爾茲曼機以及生成随機網絡,然後着重總結一下自回歸網絡。

https://zhuanlan.zhihu.com/p/50745191

3. 變分自編碼器VAE

繼續總結花書第20章,這一篇我們來看另一種常用的生成模型——變分自編碼器Variational Autoencoder,簡稱VAE,主要會結合斯坦福Syllabus | CS 231N中與Generative Model相關的内容來總結。

https://zhuanlan.zhihu.com/p/51355416

4. 生成模型中的左右互搏術

繼續總結花書第20章最後一部分生成對抗網絡Generative Adversarial Network,簡稱GAN。主要結合斯坦福Syllabus | CS 231N中與Generative Model相關内容以及NIPS 2016 tutorial: Generative Adversarial Networks來進行總結。

https://zhuanlan.zhihu.com/p/37846221

後記與延伸

深度學習花書讀書筆記後記與延伸:

https://zhuanlan.zhihu.com/p/51431332

花書完整筆記的目錄可以看這裡:

https://zhuanlan.zhihu.com/p/38431213

繼續閱讀