点击上方“AI有道”,选择“星标”公众号
重磅干货,第一时间送达
《深度学习》,又名“花书”。该书由三位大佬 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
附加资源
之前,红色石头在网上发现了这份由 Cugtyt 整理的“花书”经验法则的中文版,经过翻译作者的允许,特此将这份经验法则在公众号分享出来,方便大家尝鲜!
英文地址:
https://jeffmacaluso.github.io/post/DeepLearningRulesOfThumb/
最后,希望这份资源对你有用!也感谢原作者的辛勤整理!