maskros

深度学习

Deep Learning

0x01 绪论

人工智能

使一部机器像人一样进行感知、认知、决策、执行的人工程序或系统

  • 人工智能的三个层面:计算智能、感知智能、认知智能
  • 人工智能 > 机器学习 > 深度学习

机器学习

专家系统:人工定义规则;机器学习:机器自动训练

  • 定义:

    • 常用定义:计算机系统能够利用经验提高自身的性能的方法
    • 可操作定义:本质是一个基于经验数据的函数估计定义
    • 统计学定义:提取重要模式、趋势、并理解数据,从数据中学习
  • 怎么学:

    • 模型:问题建模,确定假设空间。对要学习问题映射的假设
    • 策略:确定目标函数。从假设空间中学习,选择最优模型的准则
    • 算法:求解模型参数。根据目标函数求解最优模型的具体计算方法

模型分类

问题建模,确定假设空间

  • 数据标记:

    • 监督学习模型 半监督学习模型

    • 无监督学习模型 强化学习模型

  • 数据分布:

    • 参数模型

    • 非参数模型

  • 建模对象:

    • 判别模型
    • 生成模型

深度学习

深度学习发展三要素:算法算力数据

  • 深度学习的“不能”:

    • 算法输出不稳定,容易被攻击
    • 模型复杂度高,难以纠错和调试
    • 模型层级复合程度高,参数不透明
    • 端到端训练方式对数据依赖性强,模型增量性差
      • 当样本数据量小的时候,深度学习无法体现强大拟合能力
    • 专注直观感知类问题,对开放性推理问题无能为力
    • 人类知识无法有效引入进行监督,机器偏见难以避免

0x02 神经网络基础

1. 神经元

  • 生物神经元:多输入单输出的信息处理单元,空间整合、时间整合特性,兴奋性输入、抑制性输入类型,具有阈值特性

  • M-P 神经元:

    • 多输入信号进行累加:\(\sum_ix_i\)
    • 权值 \(w_i\) 正负模拟兴奋\抑制,大小模拟强度
    • 输入和超过阈值 \(\theta\) , 神经元被激活(fire)

    输出 :

    \[y=f\left(\sum_{i=1}^{n}w_ix-\theta\right) \]

2. 激活函数f

  • 神经元继续传递信息、产生新连接的概率(超过阈值被激活,但不一定传递)

  • 没有激活函数相当于矩阵相乘

    • 多层和一层一样
    • 只能拟合线性函数
  • 激活函数举例:

3. 感知器

  • 单层感知器
    • M-P 神经元的权重预先设置,无法学习
    • 单层感知器是首个可以学习的人工神经网络
    • 线性激活函数:\(g(z)=z\)
    • 非线性激活函数
  • 多层感知器
    • 解决了单层感知机不能解决非线性可分问题的问题

4. 万有逼近定理

感知器逼近非连续函数

  • 单隐层:如果一个隐层包含足够多的神经元三层前馈神经网络(输入-隐层-输出)能以任意精度逼近任意预定的连续函数
  • 双隐层:当隐层足够宽时,隐层感知器(输入-隐层1-1层2-输出)可以逼近任意非连续函数:可以解决任何复杂的分类问题

5. 神经网络每一层的作用

每一层数学公式:\(\overrightarrow{y}=a(W·\overrightarrow{x}+b)\)

  • 完成输入->输出空间变换

    • 升维/降维、放大/缩小、旋转 W·x
    • 平移 +b
    • 弯曲 a(·)
  • 神经网络学习如何利用矩阵的线性变换加激活函数的非线性变换,将原始输入空间投影到线性可分的空间去分类/回归。

  • 增加节点数:增加维度,即增加线性转换能力。

  • 增加层数:增加激活函数的次数,即增加非线性转换次数

6. 更宽or更深

更深

  • 在神经元总数相当的情况下,增加网络深度可以比增加宽度带来更强的网络表示能力:产生更多的线性区域。

  • 深度和宽度对函数复杂度的贡献是不同的,深度的贡献是指数增长的,而宽度的贡献是线性的。

7. 神经网络的参数学习:误差反向传播

  • 多层神经网络可以看成是一个复合的非线性多元函数 \(F(·)=X\rightarrow Y\)

\[F(x)=f_n(...f_3(f_2(f_1(x)*\theta_1+b)*\theta_2+b)...) \]

  • 给定训练数据 \({x^i,y^i}_{i=1:N}\) ,希望损失\(\sum_iloss(F(x^i),y^i)\) 尽可能小

  • 梯度和梯度下降

    • 导数:函数值在某一点沿自变量正方向的变化率

    • 梯度:

      梯度是一个向量,方向是最大方向导数的方向,模为方向导数的最大值

      • 多元函数 \(f(x,y)\) 在每个点可以有多个方向
      • 每个房间都可以计算导数,称为方向导数
    • 无约束优化:梯度下降

      参数沿负梯度方向更新可以使函数值下降

      \(\theta_j=\theta_j-\alpha\dfrac{\part}{\part\theta_j}J(\theta)\)

  • 复合函数的链式求导

    Logistic regression

  • 三层前馈神经网络的BP算法

8. 深度学习开发框架

TensorFlow Keras theano CNTK PyTorch mxnet

9. 神经网络的问题:梯度消失

  • 增加深度会造成梯度消失 (gradient vanishing),误差无法传播
  • 多层网络容易陷入局部极值,难以训练

结论:三层神经网络是主流,预训练、新激活函数使深度成为可能

10. 逐层预训练 (layer-wise pre-training)

局部极小值 梯度消失 权重初始化 逐层预训练

  • 预训练的实际作用
    • 初衷用于无监督逐层预训练
    • DNN VS DBN
      • DNN 是前馈神经网络,训练方法是BP
      • 隐层激活函数使用ReLU -> 改善梯度消失
      • 输出层激活函数是softmax,目标函数是交叉熵+大量标注数据 -> 避免差的局部极小值
      • 正则化+dropout -> 改善过拟合
      • 没有使用逐层预训练

11. 受限玻尔兹曼机(RBM)和自编码器

  • 自编码器

    一般是一个多层神经网络 (最简单:三层)

    • 训练目标是使输出层与输入层误差最小

    • 中间隐层是代表输入的特征,可以最大程度上代表原输入信号

    • 自编码器的学习目标是最小化重构错误

    堆叠自编码器 (stacked autoencoder, SAE)

    • 将多个自编码器得到的隐层串联
    • 所有层预训练完成后,进行基于监督学习的全网络微调

  • 受限玻尔兹曼机 (RBM)

    RBM是两层神经网络,包含可见层 v (输入层) , 隐藏层h

    • 不同层之前全连接,层内无连接 -> 二分图

    • 与感知器不同,RBM没有显式的重构过程

    • 目的是让隐藏层得到的可见层 v 与原来的可见层 v 分布一致,从而使隐藏层作为可见层输入的特征

    • RBM 到 DBN (深度信念网络)

      一个DBN模型由若干个RBM堆叠而成,最后加一个监督层 (如BP网络)

      训练过程由低到高逐层训练

    • 一般玻尔兹曼机 (BM)

      可见层和隐层内部结点之间可连接

      具有很强大的无监督学习能力,能够学习数据中复杂的规则

      随机神经网络和递归神经网络的一种

      全连接图,复杂度很高

  • 自编码器 VS 受限玻尔兹曼机

寄了大火!

分类:

技术点:

相关文章:

  • 2021-08-21
  • 2021-12-16
  • 2021-10-31
  • 2021-12-05
  • 2021-07-06
  • 2021-12-16
  • 2021-06-22
猜你喜欢
  • 2021-08-22
  • 2021-12-03
  • 2021-10-12
  • 2021-09-02
  • 2021-04-26
  • 2021-04-13
  • 2021-04-12
相关资源
相似解决方案