Skip to content

📖 深度学习

Abstract

Abstract

书本三个部分:

  1. 数学工具和机器学习概念
  2. 深度学习算法
  3. 前沿话题

第一章 引论

在具体地进入人工智能的学习前,我们先来看看人工智能的发展历程,这对了解人工智能的发展脉络和其中的一些重要概念有很大帮助。

人工智能早期解决对人类智力来说非常困难,但对计算机来说相对简单的问题,比如抽象和形式化的任务,例如 IBM 的深蓝国际象棋系统。后来发现,人工智能的真正挑战在于:人类容易解决,但却难以形式化描述的问题,例如语音和图像识别。

历史上的一些人工智能方法:

知识库方法(Knowledge Base)

  • 定义:将关于世界的知识用形式化的语言进行硬编码。计算机使用逻辑推理规则来自动理解这些形式化语言中的声明。
  • 困难:难以设计出足够复杂的形式化规则来精确地描述世界。
  • 启示:AI 应当具备自主学习知识的能力。

机器学习(Machine Learning)

  • 定义:系统具备自己获取知识的能力,能够从原始数据中提取模式。
    • 人从数据中提取特征(feature),将数据处理成结构化的形式,然后让机器学习算法从中提取模式(pattern)
    • 主要使用数理统计方法。
  • 示例:
    • 逻辑回归问题
    • 朴素贝叶斯分类器
  • 困难:机器学习的效果取决于表示(representation)的形式,但有很多任务我们很难知道如何提取特征

表示学习 Representation Learning

  • 定义:用机器学习来发掘表示本身,学习到的表示往往比手动设计的好。
  • 示例:
    • 自编码器(Autoencoder)
  • 困难:有些问题难以发掘表示

深度学习 Deep Learning

  • 定义:使用神经网络来学习数据的表示形式,用简单的概念构建复杂的概念。
  • 示例:
    • 前馈深度网络/多层感知机(Multilayer Perceptron)

历史

其他趋势:

  • 增大数据集:今天使用的深度学习算法与 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\)。我们用数学把它表达为:

\[ y=f(g(\overline{x}, \overline{w})) \]

其中 \(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\) 常用于反向传播网络:

\[ f(x)=\frac{1}{1+e^{-cx}} \]

如果 \(c\) 较大,这个函数类似于阶跃函数。

Sigmoidal 单元的输入是

反向传播的训练过程

  1. 将模式输入到网络中,计算输出,计算输出误差 \(e\)
  2. 重复 \(N\) 次(\(N\) 是模式的数目),得到平均误差 \(E\)
  3. 计算 \(E\) 对于每一个权重的偏导数。
  4. 给网络的每一个权重分配责任