神经网络梯度下降优化算法及初始化方法小结

An overview of gradient descent optimization algorithms and Weight initialization methods.

神经网络重要的一点就是调参炼丹,这里复习一下网络的初始化方法及优化方法。
然而知道这些并没有什么用, 平时多实验才是王道

1 网络优化方法

这里主要说明一些关于梯度下降的方法,梯度下降顾名思义就是按照梯度来更新参数

优化方法有很多,caffe中支持下面几种:

  • SGD stochastic gradient descent
  • AdaDelta
  • Adam
  • Nesterov
  • RMSProp

这里我们会结合其他课程或者博客比如 cs231n或者 https://arxiv.org/pdf/1609.04747.pdf

1.1 SGD

梯度下降的方法有很多
其中用全部数据来进行梯度下降的称为Batch Gradient Descent,这种方法的缺点是更新慢而且内存需求大
其优化方式可以看为:

params = params - learning_rate * params_grad

显然上面的数据使用方法不适合大数据的使用,于是可以每次只取一个或者一部分样本进行训练,现在我们常用是Mini Batch Gradient Descent 但是下文仍然称为SGD,SGD有些时候是用来描述每次只取一个样本的方法,Mini Batch Gradient Descent 比起每次随机取一个样本的方法 训练波动更小,更加稳定,更加高效,这基本上是最常用的一种优化方法,虽然没有很多技巧但是比较稳定

1.2 Momentum

其更新公式如下:

vt=γvt1+ηθJ(θ)
θ=θvt

sgd的公式可以看为

θ=θηθJ(θ)

可以看出momentum考虑了之前一次更新,如果每次更新方向一致,那么其更新的速度会越来越快,如果方向改变,则会降低更新速度,eta可以看成摩擦因子一样的因子,相比sgd,理论上momentum可以减少动荡,加快收敛

1.3 Nesterov

Nesterov 认为我们更新的时候应该考虑前面的位置

θ2=θγvt1
vt=γvt1+ηθJ(θ2)

θ=θvt

与moment的区别可以视为:
image

momentum首先计算一个梯度(短的蓝色向量),然后在加速更新梯度的方向进行一个大的跳跃(长的蓝色向量),nesterov项首先在之前加速的梯度方向进行一个大的跳跃(棕色向量),计算梯度然后进行校正(绿色梯向量)

1.4 Adagrad

之前每次更新所有参数的学习率都是一样的,Adagrad是用不同的学习率更新不同的参数

gt,i=θJ(θi)

θt+1,i=θt,iηGt,ii+ϵgt,i

\epsilon 常取1e-8等数用来避免分母为0
G_t 是一个对角矩阵,对应\theta_i梯度的平方和
可以看出式中分母是不断增加的,随着梯度的增多学习率逐渐减少

1.5 Adadelta

adadelta将adagred分母中的平方累加替换为了权重均值

θt+1=θt+Δθt
Δθt=ηE[g2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值