神经网络——调参
1、更多的优化算法
2、**函数
3、网络初始化
4、批归一化
5、数据增强
1、更多的优化算法:
回顾:
1、随机梯度下降
局部极值
Saddle point问题
2、动量梯度下降
这两个方法的问题:
1、都受初始学习率的影响很大
2、每一个维度的学习率都一样(稀疏数据得不到更新,因为导数为0)
3、AdaGrad算法
调整学习率
Adagrad特点:
前期,regularizer较小,放大梯度。
后期,regularizer较大,缩小梯度。
梯度随训练次数降低。
每个分量有不同的学习率。
Adagrad算法缺点:
学习率设置较大,导致regularizer影响过于敏感。
后期,regularizer累积值太大,导致梯度更新太小,提前结束训练。
RMSPROP算法
使得分母由平方和变成了均值,这样就不会一直增大。
Adagrad的变种
由累计平方梯度变成了平均平方梯度
解决了后期提前结束的问题
Adam(结合了RM和Adagrad)
first_moment 是动量梯度下降法
second_moment 是Adagrad 平均平方梯度
校准的意思是使得一开始的学习率较大,后期较小。
beta1的t次一开始大,则1-它越小,所以first_unbias一开始很大。
Adam
所有上述算法都会用learning_ratel来做初值参数。
Adam比较有效
Beta1 = 0.9
Beta2 = 0.999
Learning_rate = 1e-3 or 5e-4
对于稀疏数据,使用学习率可自适应方法。
SGD通常训练时间更长,最终效果比较好,但需要好的初始化和learning rate
需要训练较深较复杂的网络且需要快速收敛时,推荐使用Adam
Adagrad、RMSprop、Adam是比较相近的算法,在相似的情况下表现差不多.Adam可以快速收敛。