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

  • 相关阅读:
    mysql 卸载 linux
    mybatis教程
    Python操作Redis的5种数据类型
    python+selenium 浏览器无界面模式运行
    关闭Sublime Text 3的自动更新
    ui自动化-则神第一天02-学习练习一个网址写脚本
    ui自动化-则神第一天01-html基础和元素定位之面试问题
    ui自动化-则神第一天01
    字典的学习
    安全测试的测试整理
  • 原文地址:https://www.cnblogs.com/Terrypython/p/9436683.html
Copyright © 2011-2022 走看看