【深度学习】常见优化算法

本文介绍常见的一阶数值优化算法,这些方法在现代神经网络框架(tensorflow, caffe, torch)中已经是标准配置。

问题

设系统参数为 ω \omega ω。对于样本 i i i,其代价函数为 Q i ( ω ) Q_i(\omega) Qi(ω)。在n个样本组成的训练集上,其整体代价函数为:
Q ( ω ) = ∑ i = 1 n Q i ( ω ) Q(\omega)=\sum_{i=1}^nQ_i(\omega) Q(ω)=i=1nQi(ω)

要求 ω \omega ω使得上式最小,由于没有闭式解,需要通过近似迭代逐步逼近。

基础一阶优化

GD

GD(Gradient Descent)以 η \eta η为学习率,在每次迭代中用一阶泰勒展开近似:
ω t + 1 = ω t − η ∇ Q ( ω ) \omega_{t+1}=\omega_t - \eta\nabla Q(\omega) ωt+1=ωtηQ(ω)

将求和与梯度互换。GD方法的增量来源于对所有样本同时求梯度之和:
ω t + 1 = ω t − η ∑ i = 1 n ∇ Q i ( ω ) \omega_{t+1}=\omega_t - \eta\sum_{i=1}^n\nabla Q_i(\omega) ωt+1=ωtηi=1nQi(ω)

ω \omega ω的维度为D,代价函数 Q Q Q是个标量,减号后的梯度也是一个D维向量。

SGD

SGD(Stochastic Gradient Descent)在每次迭代中,顺次使用每个样本的梯度,更新参数:

for i=1 to n
ω t + 1 = ω t − η ∇ Q i ( ω ) \omega_{t+1}=\omega_t - \eta \nabla Q_i(\omega) ωt+1=ωtηQi(ω)

一种折衷的方法是,把m个样本组成一个mini-batch,使用mini-batch的总梯度更新参数:

for i=1 to n/m
ω t + 1 = ω t − η ∑ j = 1 m ∇ Q i j ( ω ) \omega_{t+1}=\omega_t - \eta \sum_{j=1}^m \nabla Q_{ij}(\omega) ωt+1=ωtηj=1mQij(ω)

其中 Q i j ( ω ) Q_{ij}(\omega) Qij(ω)为第i个minibatch中第j个样本的代价。

为书写简便,以下说明中不再出现样本序号i。 ∇ Q ( ω ) \nabla Q(\omega) Q(ω)可以指一个样本、一个mini-batch或者全部样本的梯度只和。

更快的一阶优化

这些方法都以GD为基础,但收敛速度更快,换句话说 ϵ t \epsilon_t ϵt

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值