深度学习框架概述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lql0716/article/details/80853169

深度学习框架概述



author: jason_ql
Blog: https://blog.csdn.net/lql0716


1、引言

  • Machine learning = looking for a Function
    机器学习,其实就是寻找一个能够描述整个数据集状态的函数,这个函数可以是线性,也可以是非线性

1.1 应用领域

  • 语音识别(speech recognition)
    这里写图片描述

  • 图片识别(image recognition)
    这里写图片描述

  • 围棋(playing go)
    这里写图片描述

  • 问答系统(dialogue system)
    这里写图片描述

1.2 图片识别框架

  • A set of function Model: f 1 , f 2 , . . .

  • 流程
    如下图所示,训练出一些函数之后,筛选出效果较好的函数作为训练之后的最终模型,利用模型对输入的图片进行处理判断识别
    这里写图片描述

  • 训练与测试的流程图
    这里写图片描述

  • 由以上流程可以发现,深度学习可以分为三步,如下图

    这里写图片描述

    其中第一步定义函数的过程即为定义一个神经网络(如下图)
    这里写图片描述

    这就类比于人类的大脑的神经网络(如下图)
    这里写图片描述

1.3 神经网络(neural network)

1.3.1 神经元(neuron)

  • 数据: a 1 , a 2 , . . . , a k
  • 权重参数: w 1 , w 2 , . . . , w k
  • 偏差(bias): b
  • 函数: z
  • 激活函数: σ ( z ) = 1 1 + e z
  • 参数: θ = ( w 1 , w 2 , . . . , w k , b )

这里写图片描述

  • 其中激活函数为 S 型函数,其曲线如下图
    这里写图片描述

  • 常用的激活函数有:
    这里写图片描述

1.3.2 神经网络

  • 将神经元连接起来,就组成了一个神经网络结构,不同的神经元可以有不同的数值,网络结构图如下
    这里写图片描述

1.3.3 全连接前馈神经网络(full connect feedforward network)

  • 全连接前馈神经网络示例

    图1
    这里写图片描述

    图2
    这里写图片描述

    图3
    这里写图片描述
    如上图所示,如果输入数据 [ 0 , 0 ] T ,则神经网络会输出 f ( [ 0 , 0 ] T ) = [ 0.51 , 0.85 ] T

  • 全连接神经网络结构示意图
    这里写图片描述
    其中 Layer 1表示全连接第一层,这里一共有 L 层

  • 输出层(output layer)
    这里写图片描述
    如上图,即选择 e z i 最大的

  • 对于神经网络的层次L、偏差 b 确定,一般是根据经验来确定的

1.3.4 应用示例

  • 手写数字识别
  • 训练识别图片中的数字2

这里写图片描述

这里写图片描述

这里写图片描述

1.4 goodness of function

  • 训练集与对应的标签
    这里写图片描述

  • 训练的最终目标如下图
    这里写图片描述

  • 损失函数(训练好的模型应该使得损失函数值达到最小)
    这里写图片描述

这里写图片描述

1.5 pick the best function

  • 如何找到参数 θ 使得损失函数 L 最小化?
    这里写图片描述

1.5.2 梯度下降法(Gradient Descent)

  • 初始化权重 w
    这里写图片描述

  • 计算损失函数对权重的梯度 L / w
    这里写图片描述

  • 添加学习率系数 η (即梯度下降的步长)
    这里写图片描述

  • 下降到梯度接近于0即可停止
    这里写图片描述

  • 梯度下降示例

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

  • 但是,梯度下降并不能保证全局最优
    这里写图片描述

1.5.2.1 梯度下降法的示例解释

  • 假如对于游戏中的地图
    这里写图片描述

这里写图片描述

1.5.2.2 反向传播(Backpropagation)计算梯度

  • 利用反向传播来高效的计算梯度
    这里写图片描述

1.6 网络的深度层次是不是越大越好?

  • 深度对错误率的影响(Thin型网络)
    这里写图片描述

  • Fat 型网络(即深度小,单层的参数足够多)
    这里写图片描述

  • “Thin” 与 “Fat” 型网络哪一种好?
    这里写图片描述

这里写图片描述

  • 神经网络与逻辑电路的类比
    这里写图片描述

  • 深度就相当于将目标模块儿化
    这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

1.7 深度学习框架 Keras

  • keras
    这里写图片描述

  • keras 文档及示例

这里写图片描述

1.7.1 应用示例(手写字体识别)

  • 手写字体识别
    这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

2、神经网络的训练方法

  • 训练流程图
    这里写图片描述

  • 不要总归咎于过拟合,也可能是其他原因
    这里写图片描述

  • 调参过程
    这里写图片描述

2.1 选择合适的损失函数

  • 选择合适的损失函数
    这里写图片描述

这里写图片描述

  • 精确度(accuracy)对比
    这里写图片描述

这里写图片描述

  • 常见的损失函数
    这里写图片描述

2.2 Mini-batch 小批量的更新参数

这里写图片描述

  • epoch 与 batch
    • epoch
      当一个完整的数据集 D 通过了神经网络一次并且返回了一次,这个过程称为一个 epoch
    • batch
      当一个 epoch 对于计算机而言太庞大的时候,就需要把它分成 k 个小块( k 个子集 { B 1 , . . . , B k } ),一个小块 B i 就是一个batch,一个batch通过神经网络一次就是一个epoch,那么全部数据 D 要通过神经网络一次,那就需要迭代 k 次才能使得这 k 个 batch 全部通过神经网络一次,也就是需要经过 k 个 epoch

    • 例子
      比如对于一个有 2000 个训练样本的数据集。将 2000 个样本分成大小为 500 的 batch,那么完成一个 epoch 需要 4 个 iteration。
      这里写图片描述

    这里写图片描述
  • 为什么不真正的进行最小化损失函数?
    这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

2.3 新的激活函数

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

  • ReLU

    这里写图片描述
    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

  • 改进的ReLU

    这里写图片描述

    这里写图片描述

    ReLU是Maxout的一种特殊情况,Max网络中的激活函数可以是任何分段线性凸函数
    这里写图片描述

2.4 自适应学习率(Adaptive learning rate)

这里写图片描述

  • 一定要注意学习率的设置,如果过大,容易导致损失函数向增大的方向发展,如果过小,则会训练的比较慢

    这里写图片描述

    这里写图片描述

  • 在训练刚开始的时候,使用较大的学习率,当进行epchs一段时间之后,将学习率逐渐调小

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

2.6 Momentum(动量)

这里写图片描述

  • 在平稳的位置、鞍点、局部极小的位置很难找到最优的网络参数
    这里写图片描述

  • 利用物理中的动量来优化梯度

    这里写图片描述

    这里写图片描述

    这里写图片描述

2.7 Early Stopping

这里写图片描述

  • 过拟合的原因
    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

2.8 权重衰退(weight decay)

![这里写图片描述](https://img-blog.csdn.net/20180629124153585?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xxbDA3MTY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
  • 我们的大脑可以筛出无用的神经元,同样的,对机器学习也这样做
    这里写图片描述

    这里写图片描述

    这里写图片描述

2.9 Dropout(清理掉无用的神经元)

![这里写图片描述](https://img-blog.csdn.net/20180629124544663?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xxbDA3MTY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
  • 每次在更新参数之前,神经元有 p 的概率会被抛弃

    这里写图片描述

  • 去掉无用的神经元之后,会产生一个新的神经网络,利用新的神经网络继续训练

    这里写图片描述

  • 参数的调整

    这里写图片描述

这里写图片描述

  • dropout在训练集与测试集直接的关系

    这里写图片描述


这里写图片描述 ![这里写图片描述](https://img-blog.csdn.net/2018062912573668?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xxbDA3MTY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) ![这里写图片描述](https://img-blog.csdn.net/2018062912582519?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xxbDA3MTY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

2.10 网络结构(network structure)

![这里写图片描述](https://img-blog.csdn.net/20180629130003373?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xxbDA3MTY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
  • 文档分类示例
    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

3、改进的神经网络

3.1 CNN (卷积神经网络,Convolutional Neural network)

  • 为何要用CNN,全连接网络过于庞大

    这里写图片描述

    这里写图片描述

    相似的区域可以共享参数
    这里写图片描述

    缩放图片可以减少参数量
    这里写图片描述

  • CNN也可分为如下三步
    这里写图片描述

  • CNN流程图

    这里写图片描述

    这里写图片描述

    这里写图片描述

3.1.1 CNN卷积

这里写图片描述

  • 滤波器移动的步长为1
    这里写图片描述

  • 滤波器移动的步长为2
    这里写图片描述

  • 卷积后,会出现相似的区域
    这里写图片描述

  • 对滤波器2也做同样的操作
    这里写图片描述

  • 边界填充0
    这里写图片描述

  • 对彩色图像在三个通道分别做同样的滤波操作
    这里写图片描述

3.1.2 CNN pooling (池化)

这里写图片描述

  • max poolling
    这里写图片描述

这里写图片描述

  • 卷积池化之后生成一个新的图像
    这里写图片描述

这里写图片描述

3.1.3 flatten

  • 矩阵向量化,作为训练数据传入网络进行训练
    这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

  • 共享权重
    这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

3.1.4 goodness of function

这里写图片描述

  • 可以用全连接网络来训练围棋,但是使用CNN效果会更好
    这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

3.2 RNN(循环神经网络,Recurrent Neural Network)

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

3.2.1 双向(Bidirectional)RNN

这里写图片描述

3.3 LSTM(Long Short-term Memory )网络

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

4、其他网络简介

  • 监督学习(supervised learning)
    Ultra deep network, attention model
  • 强化学习(reinforcement learning)

  • 无监督学习(unsupervised learning)

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

参考资料

  • deep learning tutorial (李宏毅)

猜你喜欢

转载自blog.csdn.net/lql0716/article/details/80853169