统计机器学习 08:深度学习、卷积神经网络和自动编码器

墨尔本大学 COMP90051 课程笔记

Posted by YEY on November 13, 2019

Lecture 08 深度学习、卷积神经网络和自动编码器

主要内容

  • 深度学习
    • 表示能力
    • 深度模型与表示学习
  • 卷积神经网络
    • 卷积操作
    • 基于卷积的网络的元素
  • 自动编码器
    • 学习有效的编码

1. 深度学习与表示学习

隐藏层被视为特征空间的转换

1.1 表示能力

  • 具有单个隐藏层的 ANN 是一个通用近似器
  • 例如,这样的 ANN 可以表示任何布尔函数:

    $OR(x_1,x_2)\qquad \qquad u=g(x_1+x_2-0.5)$
    $AND(x_1,x_2)\qquad \quad \; u=g(x_1+x_2-1.5)$
    $NOT(x_1)\qquad \qquad\;\; u=g(-x_1)$
    如果 $r\ge 0$,那么$g(r)=1$;否则,$g(r)=0$

  • 任何具有 $m$ 个变量的布尔函数都可以由一个最多包含 $2^m$ 个元素的隐藏层实现
  • 更有效的做法是将几个隐藏层堆叠起来

1.2 深度网络

所谓 “深度” 是指隐藏层的数量。

$\boldsymbol s=\text{tanh}(\boldsymbol A’\boldsymbol x)\quad\boldsymbol t=\text{tanh}(\boldsymbol B’\boldsymbol s)\quad\boldsymbol u=\text{tanh}(\boldsymbol C’\boldsymbol t)\quad\boldsymbol z=\text{tanh}(\boldsymbol D’\boldsymbol u)$

1.3 深度 ANN 作为表示学习

  • 连续层构成了越来越复杂的输入的表示
  • ANN 可以具有简单的线性输出层,但可以使用复杂的非线性来表示

    $\boldsymbol z=\text{tanh}\left(\boldsymbol D’\left(\text{tanh}\left(\boldsymbol C’\left(\text{tanh}\left(\boldsymbol B’\left(\text{tanh}(\boldsymbol A’\boldsymbol x)\right)\right)\right)\right)\right)\right)$

  • 等效地,一个隐藏层可以被视为转换后的特征空间,例如:$\boldsymbol u=\varphi(\boldsymbol x)$
  • 这种转换的参数是从数据中学习到的

1.4 ANN 的层作为数据转换




1.5 深度 vs. 宽度

  • 理论上,一个宽度无限的单层给出了一个通用近似器
  • 然而,(从经验上看)深度可以产生更精确的模型
    从眼睛上获得的生物学灵感:
    • 首先检测小边缘和色块
    • 将它们组合成更小的形状
    • 建立更复杂的检测器,例如 纹理,面孔等
  • 试图模仿网络中的分层复杂性
  • 但是 梯度消失问题 会影响非常深层模型的学习

2. 卷积神经网络(CNN)

基于将小型滤波器重复应用于 2D 图像的小块或者 1D 输入的范围

2.1 卷积


2.2 在 2D 图像上的卷积

2.3 滤波器作为特征检测器


2.4 堆叠卷积

  • 开发不同规模和复杂度的复杂表示
  • 滤波器是从训练数据中学习的

2.5 CNN 用于计算机视觉

Implemented by Jizhizi Li based on LeNet5: http://deeplearning.net/tutorial/lenet.html

2.6 CNN 的组成部分

  • 卷积层
    • 基于卷积运算的复杂输入表示
    • 滤波器权重是从训练数据中学到的
  • 下采样,通常通过最大池化
    • 重新缩放至较小的分辨率,限制了参数爆炸
  • 全连接部件和输出层
    • 合并表示

2.7 通过最大池化进行下采样

  • 特殊类型的处理层。对于一个 $m\times m$ 的块:
    $v=\max(u_{11},u_{12},…,u_{mm})$
  • 严格来说,并非处处可微的。相反,梯度是根据 “子梯度” 定义的。
    • 非最大的 $u_{ij}$ 值的微小变化不会改变 $v$
    • 如果 $u_{ij}$ 是最大值,其值的微小变化将线性地改变 $v$
    • 如果 $u_{ij}=v$,那么 $\frac{\partial v}{\partial u_{ij}}=1$,否则,$\frac{\partial v}{\partial u_{ij}}=0$
  • 正向传播记录最大化元素,然后在反向传播期间将其用于反向传递

2.8 卷积作为正则项

3. 自动编码器

一个 ANN 训练设置,可用于无监督学习、初始化,或者仅用于高效编码

3.1 自动编码的思想

  • 监督学习:
    • 单变量回归:根据 $\boldsymbol x$,预测 $y$
    • 多变量回归:根据 $\boldsymbol x$,预测 $\boldsymbol y$
  • 无监督学习:
    • 探索数据 $\boldsymbol x_1,…,\boldsymbol x_n$
    • 没有响应变量
  • 对于每个 $\boldsymbol x_i$,设置 $\boldsymbol y_i\equiv\boldsymbol x_i$
  • 训练一个 ANN,根据 $\boldsymbol x_i$ 预测 $\boldsymbol y_i$
  • 没有意义吗?

3.2 自动编码器的拓扑结构

  • 给定一些无标签数据 $\boldsymbol x_1,…,\boldsymbol x_n$,设置 $\boldsymbol y_i\equiv\boldsymbol x_i$,并且训练一个 ANN 来预测 $\boldsymbol z(\boldsymbol x_i)\approx\boldsymbol x_i$
  • 设置 瓶颈层 $\boldsymbol u$,使得中间比输入层 “窄”

3.3 瓶颈层介绍

  • 假设你试图训练一个可以很好地恢复原始信号的网络 $\boldsymbol z(\boldsymbol x_i)\approx\boldsymbol x_i$
  • 这意味着数据结构可以用一个较低维度的表示来有效地描述(编码)

3.4 降维

  • 自动编码器可通过一个非线性变换来达到 压缩降维 的目的
  • 如果你使用线性激活函数,并且仅使用一个隐藏层,则设置几乎变成了 主成分分析 的设置(敬请期待!)
    • ANN 可能会找到一个其他的解,不(直接)使用特征值

4. 工具

  • Tensorflow, Theano, Torch
  • 其他
    • Caffe
    • CNTK
    • deeplearning4j…
  • Keras:高级 Python API,可以运行在 Tensorflow、CNTK 或者 Theano 上

总结

  • 深度学习
    • 表示能力
    • 深度模型与表示学习
  • 卷积神经网络
    • 卷积运算
    • 一个基于卷积的网络的要素
  • 自动编码器
    • 学习高效编码

下节内容:支持向量机(SVM)

知识共享许可协议本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 欢迎转载,并请注明来自:YEY 的博客 同时保持文章内容的完整和以上声明信息!