📖 深度学习¶
Abstract
- 书名:深度学习/Deep Learning
- 年份:2017
- 书籍网站:deeplearningbook.org
Abstract
书本三个部分:
- 数学工具和机器学习概念
- 深度学习算法
- 前沿话题
第一章 引论¶
在具体地进入人工智能的学习前,我们先来看看人工智能的发展历程,这对了解人工智能的发展脉络和其中的一些重要概念有很大帮助。
人工智能早期解决对人类智力来说非常困难,但对计算机来说相对简单的问题,比如抽象和形式化的任务,例如 IBM 的深蓝国际象棋系统。后来发现,人工智能的真正挑战在于:人类容易解决,但却难以形式化描述的问题,例如语音和图像识别。
历史上的一些人工智能方法:
知识库方法(Knowledge Base)
- 定义:将关于世界的知识用形式化的语言进行硬编码。计算机使用逻辑推理规则来自动理解这些形式化语言中的声明。
- 困难:难以设计出足够复杂的形式化规则来精确地描述世界。
- 启示:AI 应当具备自主学习知识的能力。
机器学习(Machine Learning)
- 定义:系统具备自己获取知识的能力,能够从原始数据中提取模式。
- 由人从数据中提取特征(feature),将数据处理成结构化的形式,然后让机器学习算法从中提取模式(pattern)。
- 主要使用数理统计方法。
- 示例:
- 逻辑回归问题
- 朴素贝叶斯分类器
- 困难:机器学习的效果取决于表示(representation)的形式,但有很多任务我们很难知道如何提取特征。
表示学习 Representation Learning
- 定义:用机器学习来发掘表示本身,学习到的表示往往比手动设计的好。
- 示例:
- 自编码器(Autoencoder)
- 困难:有些问题难以发掘表示
深度学习 Deep Learning
- 定义:使用神经网络来学习数据的表示形式,用简单的概念构建复杂的概念。
- 示例:
- 前馈深度网络/多层感知机(Multilayer Perceptron)
历史¶
-
第一波浪潮(1940-1960):Cybernetics
线性模型 \(f(\mathbf{x}, \mathbf{w}) = \mathbf{w}^T\mathbf{x} + b\)
- (1943)McCulloch-Pitts 网络:A Logical Calculus of the Ideas Immanent in Nervous Activity:执行二分类任务,需要手动设置权重。
- (1958)感知器:The Perceptron: A Probabilistic Model For Information Storage and Organization in the Brain:能够学习权重。
- (1960)ADALINE:An Adaptive "ADALINE" Neuron using Chemical "Memistors":使用随机梯度下降(stochastic gradient descent)学习权重。
困难:学习有限,比如无法学习 XOR。
-
第二波浪潮(1980):Parallel Distributed Processing
思想:大量简单的处理单元可以通过互联达到智能的效果
- (1986)分布式表示 Learning Distributed Representation of Concepts:系统的输入由多个特征表示,每个特征可能参与到多个不同的输入中。
- (1986)通过反向传播学习表示 Learning representations by back-propagating errors
1990 年代在序列建模方面取得重要进展:
- (1997):长短期记忆 Long Short-Term Memory
其他方面:
- (COLT '92)核机器 A training algorithm for optimal margin classifiers:为 SVM 算法提供基础。
困难:网络被认为难以训练,因为计算量太高。
-
第三波浪潮(2006):神经网络可以高效训练
- (2006)深度置信网络 A Fast Learning Algorithm for Deep Belief Nets
持续至今。
其他趋势:
- 增大数据集:今天使用的深度学习算法与 1980 年代没有什么本质不同。随着 21 世纪社会信息化程度增加,数据集规模越来越大,使得这些算法能够成功。
- 增大模型大小:更快的处理器和更大的内存。
与生物学的联系
从人工智能的视角看待生物学:
- 启发了神经网络的多种结构,但对训练算法没有什么指导。
- 神经元的计算比激活函数复杂得多,但神经网络中采用更复杂的函数仿真没有看到提升。
- 不应该将深度学习简单地看作对大脑的模拟,因为还有统计学、概率论、信息论、数值分析等其他学科的知识参与到深度学习的发展中。
生物学带来的启发:
- 雪貂实验:向听觉神经发送视觉信号可以看见东西,表明大脑可能使用相同的算法解决不同的问题,启发了使用神经网络实现多模态学习。
第三章 概率论与信息论¶
最初概率论用于表示事件发生的频率(frequentist probability)。而在人工智能方面,概率论用于研究结果的置信度(degree of belief),称为贝叶斯概率(Bayesian probability)。
- 随机变量:必须与概率分布相关联,表明处于各状态的概率。
- 概率分布:\(P(x)\)
- 离散型随机变量:概率质量函数(probability mass function)
- 联合概率分布(joint probability distribution)\(P(x, y)\)
- 连续型随机变量:概率密度函数(probability density function)
- 边缘概率(marginal probability):知道多个变量的联合概率分布,求子集的概率分布。
- 条件概率(conditional probability):已知某些变量的值,求其他变量的概率分布。
- 变量间的独立性(independence)
- 期望
- 方差
- 协方差
- 常见概率分布:
第五章:深度学习基础¶
第二部分 深度网络:现代实践
- 用前馈深度网络表示复杂函数
- 正则化和优化模型的技术
- 放大模型:
- 卷积神经网络:大型图像
- 循环神经网络:长序列
- 设计、构建和配置模型的最佳实践
第六章 深度前馈网络¶
又称为多层感知机(Multilayer Perceptron,MLP),目标是近似某些函数。
从线性模型开始,我们加入非线性函数 \(\phi(x)\) 扩展模型的表达能力。接下来选择优化器、损失函数、输出单元的形式,回顾以梯度为基础的学习算法。
前馈网络提出了一些新的问题:
- 为隐藏层选择合适的激活函数(activation function)
- 设计网络的结构,应该包含多少层,层间如何连接,层内多少单元
- 反向传播算法及其推广
例子:学习 XOR¶
目标:拟合训练集上的四个点
分析:
- 回归问题,使用均方误差(Mean Squared Error)作为损失函数
- 使用线性模型计算,全部输出 0.5,无法学习
- 添加隐藏层
模型¶
一个抽象的神经元具有:输入 \(x\)、权重 \(w\)、输出 \(y\)。我们用数学把它表达为:
其中 \(g\) 称为激励函数(一般是点乘),\(f\) 是输出或激活函数。
人工神经网络就是抽象神经元按某种拓扑排列的集合,从数学上看作从 \(R^n\) 到 \(R^m\) 的映射 \(F\)。
接下来我们思考:为了让网络对某个输入产生特定的输出,如何让其调整权重?
McCulloch-Pitts 网络¶
在该种网络中,神经元的输入、输出都是二进制的。输入通道称为边(edge),它可以是兴奋或抑制的。它的表现如下:
- 如果有抑制输入,那么输出为 0。
- 否则,当总激励大于阈值时,输出为 1。
可以看出,该神经元中激活函数 f
是一个阶跃函数。
书中展示了 McCulloch-Pitts 神经元实现的双输入门,如 AND、OR、NOR 和最小项的解码器,尝试回忆一下?
很显然,该网络因为没有权重而不能自适应。
感知器学习规则¶
一个神经网络,给出一个输入向量 \(x\),存在一个期望的输出向量 \(t\)。网络按照学习规则调整权重,以最小化 \(t\) 和 \(y\) 之间的差异。
人工神经网络的学习规则主要有三种:感知器学习规则、增量规则和反向传播规则,其中反向传播能够用于多层网络。
TLU(Threshold Logic Unit)叫做阈值逻辑单元,它的输入输出同样是二进制的,具有以下参数:
- 输入向量
- 权重向量
- 阈值函数
神经网络的输入称为模式(pattern),表示所有输入的 \(n\) 维空间称为模式空间。以双输入 TLU 为例,它的模式空间是平面上的四个点。我们也可以在模式空间中画出 TLU 在激励等于阈值时的直线。
相同输出的模式称为一个模式类,上面画出的直线就将两个模式类分开了。当模式空间维度为 \(n\) 时,判别式的维数将会是 \(n-1\),神经网络通过生成判别式,将 \(n\) 维模式空间分割成以判别式超平面为边界的凸子空间,执行模式识别。
感知器学习规则通过迭代矫正来生成判别式。
将所有模式输入来训练神经网络,这一过程称为一个 epoch。如果处理完整个 epoch 而权重没有发生变化,则学习规则可以停止。
反向传播¶
感知器学习规则和增量规则要求:所实现的函数必须是线性可分离的。对于复杂的模式空间,应当使用反向传播规则,它可以工作在多层网络上。
神经网络的层数:输入层、输出层、隐藏层。一般来说,输入层仅作为输入点(没有权重),因此神经网络层数是隐藏层的层数加一,即权重的层数。
前馈(feed forward)网络:层 i 的神经元只与层 i+1 的神经元连接,无层内连接。
在完全连接的前馈网络中,每一层的权重都是一个矩阵。
反向传播要求激活函数是连续可微的,Sigmoid 函数 \(S_c\) 常用于反向传播网络:
如果 \(c\) 较大,这个函数类似于阶跃函数。
Sigmoidal 单元的输入是
反向传播的训练过程¶
- 将模式输入到网络中,计算输出,计算输出误差 \(e\)。
- 重复 \(N\) 次(\(N\) 是模式的数目),得到平均误差 \(E\)。
- 计算 \(E\) 对于每一个权重的偏导数。
- 给网络的每一个权重分配责任