Tips for Deep Learning
当测试集上的效果不好时需要查看训练集上的错误率,有时候可能时因为训练集上就没有训练起来;
使用dropout相当于集成
不同的激活函数对训练结果的影响很大,通过数学推导的角度分析,例如sigmoid激活函数会导致前面层的参数到后面逐渐被削弱;
层数越多并不一定效果越好
梯度消失现象
有些神经元经过relu激活函数后会导致结果为0,所以使用relu激活函数的神经网络时细长型的
局部来看使用relu函数作为激活函数时都是线性的;但是全局看来并不是线性的;
Maxout可以自己学习激活函数
不同input最大值不同;所以每个参数都可以被train到
使用一次导数来估计二次导数,每个参数的学习率都不一样
在梯度比较小的地方通过增大学习率来加快训练
比adagrade更强一点
把惯性的概念引入梯度下降算法
当梯度接近于0时就停止了很容易落到localminima
把前一步的移动方向当成惯性,这一次的移动方向由惯性和这次算出来的梯度方向共同界定
考虑前一步的方向就相当于考虑了前面所有的情况
当梯度为0时可以通过前一步的移动方向(惯性)继续移动这样就可以在一定程度上跳出localminima
Adam算法相当于结合了RMSProp + Momentum两个的特点
随着训练迭代epoch的次数在训练集的结果必然时会越来越低的,但是测试集的结果可能就会变差可能原因就是过拟合,因此需要使用early stopping
通过正则化对参数做限制,正则化通常不考虑偏差因此会使偏差变大;
正则化会使没用的参数逐渐消失;
以一定的几率剔除一些参数
测试集上不适用dropout但是w参数需要改变
dropout的作用相当于在训练使分批关注某些特征最后合并起来了相当于对每个特征都经过很强的训练了
相当于训练多个网络但是公用参数
在线性条件下推理成立但是在非线性情况下任然有一定效果