1、Caffe Solver
Caffe Solver通过协调Net的前向推断计算和反向梯度计算对参数进行更新,从而达到减小loss的目的。Caffe模型的学习分为两个部分:Solver优化、更新参数、以及Net计算loss和gradient。
Caffe支持Solvers有:
- Stochastic Gradient Descent (SGD)随机梯度下降
- AdaDelta
- Adaptive Gradient(AdaGrad)自适应梯度
- Adam
- Nesterov's Accelerated Gradient (Nesterov)
- RMSprop
Caffe Solver的主要功能包括:
- 优化过程记录,创建训练网络和测试网络;
- 通过forward和backward来迭代优化和更新参数;
- 周期性地用测试网络评估模型性能;
- 在优化过程中记录模型和Solver状态的快照。
每一次迭代完成以下功能:
- 调用Net的前向过程计算输出和loss;
- 调用Net的后向过程计算梯度;
- 根据Solver方法,利用梯度更新参数;
- 根据学习率,历史数据和求解方法更新Solver状态,使权重从初始化状态逐步更新到最终的学习状态。
2、Solver方法
Solver方法是计算最小化损失(loss)值。给定一个数据集D,优化额目标是D中所有数据损失的均值,即平均损失,取得最小值。
参考:《深度学习——Caffe之经典模型详解与实战》