前言:CNN的优化方法依旧可以是梯度下降的方法,类似于BP算法中的反向传播,一般采用小批量梯度下降的方法,来更新参数,同时回答CNN遗留下来几个问题
池化层怎么反向传播?
Maxpool 池化层反向传播,除最大值处继承上层梯度外,其他位置置零。
为什么采用小批量梯度下降?
为了同时保证训练过程比较快,和最终训练参数的准确率,
学习率设置
学习率被定义为每次迭代中成本函数中最小化的量。也即下降到成本函数的最小值的 速率是学习率,它是可变的。从梯度下降算法的角度来说,通过选择合适的学习率,可以 使梯度下降法得到更好的性能。 一般常用的学习率有0.00001,0.0001,0.001,0.003,0.01,0.03,0.1,0.3,1,3,10
学习率和损失值的关系如下图:
基于以上情况,学习率的给定可以从多个方面
1.固定
2.均匀分布,给个迭代次数,学习率根据迭代次数更新
3.不均匀分布,刚开始训练网络时学习率一般设置较高,这样loss和 accuracy下降很快,一般前200000次两者下降较快,后面可能就需要我们使用较小的学习 率了。step策略由于过于平均,而loss和accuracy的下降率在整个训练过程中又是一个不平 均的过程,因此有时不是很合适。fixed手工调节起来又很麻烦,这时multistep可能就会派 上用场了。multistep还需要设置一个stepvalue。这个参数和step很相似,step是均匀等间隔 变化,而multistep则是根据 stepvalue值变化。
一般情况下误差的变化情况如下: