0%

调参建议

caffe及其他算法中常见参数调整建议,参数包括学习速率,正则化参数,批处理样本数量

学习速率

  1. 运用梯度下降算法进行优化时,权重的更新规则中,在梯度项前会乘以一个系数,这个系数就叫学习速率η;
  2.  可以先把学习速率设置为0.01,然后观察training cost的走向,如果cost在减小,那可以逐步地调大学习速率;如果cost在增大,那就得减小学习速率,反复几次大概确定学习速率的合适值。
  3. 为什么是training cost而不是validation accuracy?
    《Neural networks and deep learning》一书中有这样一段说明,大致意思是,(1)学习速率只影响寻求最优解的过程,而不像正则化参数和批处理的样本数量那样对最后的分类准确率造成影响,而这可以通过training cost来观察逼近局部最优解的过程中,step是不是大了;(2)训练前期,如果validation accuracy上升,那么training cost会一直减小,所以使用哪种标准判断是否要调整学习速率是没有关系的,这只是作者个人喜好;

正则化系数

正则项系数初始值也没有一个比较好的准则。建议一开始将正则项系数λ设置为0,先确定一个比较好的learning rate。然后固定该learning rate,给λ一个值(比如1.0),然后根据validation accuracy,将λ增大或者减小。

批处理样本数量

https://www.zhihu.com/question/61607442
当采用mini-batch时,一个batch里的所有样本被放在一个矩阵里,利用线性代数库来加速梯度的计算,这是工程实现中的一个优化方法。
batch越大,可以充分利用矩阵、线性代数库来进行计算的加速,batch越小,则加速效果可能越不明显。而batch越大,权重的更新就会不那么频繁,导致优化过程太漫长。所以mini-batch size需要根据数据集规模和设备计算能力去选。