zoukankan      html  css  js  c++  java
  • 深度学习优化篇

    深度学习优化篇

    模型要想训得好,参数优化不可少。

    激活函数

    一个复杂的神经网络,是有许多层的,其中最基本的单位便是神经元。一个线性神经元不断堆叠下去,永远都是线性关系。这就无法解决非线性问题,而不同的非线性映射函数的选择,就是激活函数的研究课题了。

    为了解决非线性的问题,在感知机的基础上发展出了多层神经网络的概念。多层神经网络由输入层、多个中间层,以及输出层组成。

    激活函数

    解决非线性问题的还可以使用非线性的激活函数,比如 sigmoid function。在 Logistic Regression 中,我们将一个线性函数输入到 sigmoid function 中,能够很好地解决二分类的问题,使用 Softmax 还能进一步解决多分类问题。

    最常用激活函数主要有这样几种:

    1. sigmoid 和 tanh 激活函数。
    2. ReLU 激活函数
    3. ReLU 的一大堆变种(LReLU,PReLU,RReLU,ELU,SELU,GELU等等)

    参数初始化

    2006年Hinton等人在science期刊上发表了论文“Reducing the dimensionality of data with neural networks”,揭开了新的训练深层神经网络算法的序幕。

    利用无监督的RBM网络来进行预训练,进行图像的降维,取得比PCA更好的结果,通常这被认为是深度学习兴起的开篇

    这么看来,是因为好的初始化方法的出现,才有了深层神经网络工程化落地的可能性。

    常用初始化的方法包括:

    • 随机初始化
    • 标准初始化
    • Xavier初始化
    • He初始化

    归一化方法

    数据经过归一化和标准化后可以加快梯度下降的求解速度,这就是Batch Normalization等技术非常流行的原因,它使得可以使用更大的学习率更稳定地进行梯度传播,甚至增加网络的泛化能力。常见的归一化的方法有:

    • Batch Normalization
    • Layer Normalization
    • Instance Normalization
    • Group Normalization
    • Weight Normalization

    池化

    最大池化与平均池化

    • 平均池化
    • 最大池化
    • 随机池化
    • 从数据中学习池化

    正则化方法

    正则化方法

    • L1/L2参数惩罚
    • Dropout与Drop Connect
    • 提前终止准则
    • 样本扩充

    最优化方法

    最优化方法

    • SGD 梯度下降法
    • Momentum 动量法
    • Nesterov 加速梯度下降法
    • Adagrad 算法
    • Adadelta/Rmsprop算法
    • Adam/Nadam/AdaMax算法
    • AMSgrad
    • Adafoctor
    • 牛顿法/拟牛顿法
    • 共轭梯度法

    参考

    【AI初识境】激活函数:从人工设计到自动搜索

    【AI初识境】什么是深度学习成功的开始?参数初始化

    【AI初识境】深度学习模型中的Normalization,你懂了多少?

    【AI初识境】被Hinton,DeepMind和斯坦福嫌弃的池化,到底是什么?

  • 相关阅读:
    OpenCV 3.4.0 + Visual Studio 2015开发环境的配置(Windows 10 X64)
    数值分析4
    数值分析3
    数值分析2
    数值分析1
    绪论0.4
    绪论0.3
    绪论0.2
    绪论0.1
    GitHub之起势
  • 原文地址:https://www.cnblogs.com/shuiyj/p/13185111.html
Copyright © 2011-2022 走看看