caffe中的solver

翻译自Caffe官网手册

简而言之,Solver是一个神经网络的重要组成部分,通过forward 计算的loss和backward计算的梯度等参数,对模型进行优化,更新神经网络各层参数,使得loss最小以更好的拟合数据。

1.Solver分类
  • Stochastic Gradient Descent (type: "SGD"),
  • AdaDelta (type: "AdaDelta"),
  • Adaptive Gradient (type: "AdaGrad"),
  • Adam (type: "Adam"),
  • Nesterov’s Accelerated Gradient (type: "Nesterov") and
  • RMSprop (type: "RMSProp")

其中,随机梯度下降法(SGD)比较常用

2.Solver的作用
  • 定义并生成一个网络用来训练和测试
  • 通过反复进行 forward/backward传播和更新参数 来对网络进行优化
  • 根据给定参数,定期对训练中的网络进行测试评估
  • 在整个优化过程中,定期备份model和solver状态

其中,在每次迭代运算中,

  • 调用forward传播计算输出和loss
  • 调用backward传播计算梯度
  • 根据所选的solver类型,使用梯度进行参数更新
  • 根据学习率、solver类型及历史数据等,更新solver状态
3.理论解释

solver方法将最优化网络看作最小化loss的过程。对于数据集\(D\),我们最优化的目标为最小化整个数据集中所有\(|D|\)数据实例的平均loss,即
\[ L(W) = \frac{1}{|D|} \sum_i^{|D|} f_W\left(X^{(i)}\right) + \lambda r(W) \]
其中,\(f_W(X^{(i)})\)是在单个数据\(X^{(i)}\)上的loss ,\(r(W)\)是以\(λ\)为权重的一个正则项。\(|D|\)可以是一个非常大的数字,所以在实际应用中,每次solver迭代时,我们用一个远小于\(|D|\)的数字\(N\)代替,每次迭代计算在数据集中随机选\(N\)个数据近似代替。
\[ L(W) \approx \frac{1}{N} \sum_i^N f_W\left(X^{(i)}\right) + \lambda r(W)​ \]

  • 模型在forward传播中计算输出\(f_W\);在backward传播中计算梯度\(\nabla f_W\)
  • solver根据误差梯度\(\nabla f_W\)、正则化梯度\(\nabla_r(W)\)等更新网络参数\(\Delta(W)\)
4.SGD Solver

随机梯度下降算法(SGD)通过线性组合负梯度\(∇L(W)\)和前一次迭代的更新权重\(V_t\),更新网络模型权重\(W\)

  • 学习率\(\alpha\)\(∇L(W)\)的权重,momentum \(μ\)\(V_t\)的权重。
  • 假设\(W_t\)\(V_t\)是第 \(t\) 次迭代更新后的 网络权重和网络权重更新量,则\(t+1\)次迭代后的网络权重和网络权重更新量为:

\[ V_{t+1} = \mu V_t - \alpha \nabla L(W_t) \\ \]

\[ W_{t+1} = W_t + V_{t+1} \]

  • 为了在训练中使模型更好、更快地收敛,可能需要对定义solver中的超参数(\(\alpha\)\(μ\))进行微调。
base_lr: 0.01     # begin training at a learning rate of 0.01 = 1e-2

lr_policy: "step" # learning rate policy: drop the learning rate in "steps"
                  # by a factor of gamma every stepsize iterations

gamma: 0.1        # drop the learning rate by a factor of 10
                  # (i.e., multiply it by a factor of gamma = 0.1)

stepsize: 100000  # drop the learning rate every 100K iterations

max_iter: 350000  # train for 350K iterations total

momentum: 0.9
  • 初始学习率设为0.01;每10000次迭代,学习率乘以gamma因子0.1;最大迭代数为35000;
  • 动量momentum设为0.9,可以使SGD下的深度学习更加稳定和快速

转载于:https://www.cnblogs.com/jngwl/articles/Caffe_solver.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值