zoukankan      html  css  js  c++  java
  • 深度学习小贴士

    深度学习的过程:

      通过上述的过程,我们知道,我们训练好的model需要先在training set上测试性能,并且准确率很可能不是100%。有时候我们发现我们的model在testing set上表现不好时,不一定就是over fitting,也可能是training set 上没有train好。

     针对是在training set 或者是 testing set上性能不好,有不同的解决方式:


    在training set上performance不好

    New activation function

    通常说:对于深度学习,并不是深度越深就意味着性能更好

    这是因为存在着梯度消失的问题,因为对于sigmoid函数来说,很大的输入对应着很小的输出:

    其中一个解决办法是替换activation function,改用Relu

    简化成了一个更简单的线性网络

    激活函数Relu还有另外两种变形,如下所示

    Relu也可以看做是Maxout函数的一个特例,解释如下:

    写到这里,可能会有人问,我们选出每组的最大值,那么怎么训练数据呢,应该不可以使用梯度下降法了吧,其实还是可以的,具体train的方法如下:

     Adaptive Learning Rate

     但是当情况复杂时,需要Learning Rate 变动更加灵活,adgrad的方法不在实用,我们采用RMSProp的方法。

    Momentum(gradient descent 融入惯性作用)

     

    Adam

     


    在testing data上performance不好

    Early Stopping

    Regularization

    正则的作用是:像人脑一样,不经常用的神经元会消失。

    Dropout

     直观的解释

    Dropout是ensemble的一种类型

    上述两种是等价的,简单的线性证明如下,非线性的不能证明,不过Dropout还是起作用。

    参考:http://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2017/Lecture/DNN%20tip.pdf

  • 相关阅读:
    「题解」300iq Contest 2 B Bitwise Xor
    「题解」agc031_e Snuke the Phantom Thief
    「题解」agc031_c Differ by 1 Bit
    「题解」NWRRC2017 Joker
    「题解」NWRRC2017 Grand Test
    「题解」USACO15FEB Fencing the Herd G
    zsh: command not found:xxx 解决方法
    curl
    redis搭建
    http 缓存分为客户端缓存/服务端缓存/数据库缓存
  • 原文地址:https://www.cnblogs.com/Terrypython/p/9436683.html
Copyright © 2011-2022 走看看