Caffe Solver理解篇(1) 主体和SGD

参考译本,第四章:Solver


第一节

作用:

 协调Net的前向推断计算和反向梯度计算,更新参数,从而减小loss。

(Net具有计算的作用,Solver定义了用什么方法优化整个网络。)

3点应用:

(1)记录优化过程;(快照)

(2)创建训练网络;(学习)

(3)创建测试网络;(评估)

6个支持:

SGD, AdaDelta, AdaGrad, Adam, Nesterov, RMSProp

每次迭代过程中:

(1)调用Net的Forward和Backword,计算该计算的,输出、loss(Forword),梯度▽(Backword loss对权中w和偏置b求导)。

(2)更新参数,更新solver状态。


第二节

Solver的trick

mini-batch近似代替平均损失L(W):


N是随机子集,N远远小于|D|。


第三节

SGD

1.SGD的出发点;

2.各种SGD的家族成员;

3.稀疏(Sparsity)提高效率,但要改公式;

4.大杀器,Krizhevsky如何设置参数,学习率变化因子。

5.基本原则



官方译本中的重要段落:


学习率α 和动量μ 要怎么设?参见待会儿的第4点,这里先形象的说下SGD的概念。

1.SGD的出发点

GD就是梯度下降,SGD就是GD的无偏估计。所谓无偏估计就是当样本数量足够大,估计值求出来就等于期望值。

GD和SGD的对比:

GD:SGD:

Q(z,w)函数里z是样本,w是权值,z包括x(输入)和y(label),Q就是损失函数(代价函数);

这里是用损失函数的导数,也就是梯度来更新w,这个就是最速下降的出发点了。在w的域中,找到最能减少损失函数Q(z,w)的方向,然后往这个方向走,直到求得一个理想中很小的Q(z,w),停下来此时的w就是一个理想的W,但不一定是最优的W。理想和最优有一个误差error_opt,通过增加运行时间可以减少它。

SGD的特点是每次更新只需要单个样本zt 就能完成,也就是利用了无偏估计,这里可以细细想一想,博主也是只可意会,而写不出公式(摊手~)。这样能大大减少每次迭代的时间,不用再循环整个样本集了。


2.SGD的家族成员 

(1)应用L2正则化:

形式:


上式就是代价函数,求导丢到等号右边,Wt+1 = Wt - 右边,整理得到得到下式。

其中y=±1, l(m)是凸函数, w正则化以后,保证En(w)也是凸函数。


(2)ASGD 平均随机梯度下降:


这个平均权值是在迭代一定次数后开始计算的,博主有点不明具体操作,权当一种优化思路。

初始化的Trick:


这里μt 才有这种方法初始化,d是样本维度,n是样本集大小,是因为无法确定t0的值, 所以这用了经验值。


3.稀疏(Sparsity)

稀疏能加快输入x 相关的计算,思路是用st Wt代替wt , 如下:

SGD的稀疏变化:

原本形式:

稀疏形式:


我们看到Wt+1的右边只有和xt 相关的乘积运算,而减少了上式(1-γtλ)wt 的乘积,这样就能利用稀疏,大大减少运算量。

ASGD同理:

替换后:

对应命名的含义:


4.Trick相关,Krizevsky的做法

我们面对Caffe的solver配置是这样的:


理解每一项为什么这么设,首先参考:

A. Krizhevsky, I. Sutskever, and G. Hinton. ImageNet Classification with Deep Convolutional Neural Networks Advances in Neural Information Processing Systems, 2012.

第5节 Detail of learning中说到 weight decay这个秘密, caffe提供并且实现了,就是solver prototxt中的gamma,官方译本给的就是论文中说的设置:


学习率是如何设置的?在稍后第5节中说到。


5. 基本原则 

来自 Leon Bottou 论文 L. Bottou. Stochastic Gradient Descent Tricks. Neural Networks: Tricks of the Trade: Springer, 2012

(1)准备数据

①打乱样本顺序

②预处理避免调入局部而死机

(2)监测、调试

③学习时(训练时)周期性地检查验证集上的误差和训练集的代价。

④用程序检查梯度是否计算准确,而不是肉眼去看。

⑤用小数据去检查γt 学习率是否合适。由于小样本集跑出的学习率γ可以当作大样本集的无偏估计,所以先用小样本跑出学习率,再设一个稍微小一点的学习率作为大样本的学习率的初始值。



完,希望能给读者带来启发。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值