深度学习小贴士

深度学习的过程:

  通过上述的过程,我们知道,我们训练好的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

原文地址:https://www.cnblogs.com/Terrypython/p/9436683.html