深度学习中的优化策略

SGD

w=w−lr∗∂ww = w - lr*\partial ww=wlrw 其中
lrlrlr是学习速率
∂w=∂loss∂w\partial w = \frac{\partial loss}{\partial w}w=wloss

sgd_momentum

v=mu∗v−lr∗∂wv=mu*v-lr*\partial wv=muvlrw
w=w+vw = w + vw=w+v
其中mu∈[0,1]mu \in [0,1]mu[0,1]是momentum,一般mu=0.9mu=0.9mu=0.9, vvv是中间变量,令www更新更加平缓
后续改进的思路是不同参数自适应的采用不同的学习速率,比如利用对于前一次变化较大的参数降低起学习速率,保持学习的平滑

rmsprop

cache=decay∗cache+(1−decay)∗(∂w)2cache = decay * cache + (1-decay) * (\partial w)^2cache=decaycache+(1decay)(w)2
w=w−lr∗∂wcache+ϵw = w - lr * \frac{\partial w}{\sqrt{cache}+\epsilon}w=wlrcache+ϵw
其中
decay∈[0,1]decay \in [0,1]decay[0,1] 一般取值0.99
cachecachecache记录∂w\partial ww幅度平方值,幅度变化大的参数降低学习速率,令www更新平缓。
随着训练进度,cachecachecache的值逐渐变大,导致实际lrlrlr逐渐降低,学习速率越来越慢,这是一个缺陷。

adam

m=β1∗m+(1−β1)∗∂wm=\beta_1 * m + (1-\beta_1) * \partial wm=β1m+(1β1)w
mt=m1−β1tm_t = \frac{m}{1-\beta_1^t}mt=1β1tm
v=β2∗v+(1−β2)∗(∂w)2v=\beta_2*v + (1-\beta_2)*(\partial w)^2v=β2v+(1β2)(w)2
vt=v1−β2tv_t = \frac{v}{1-\beta_2^t}vt=1β2tv
w=w−lr∗mtvt+ϵw = w - lr * \frac{m_t}{\sqrt{v_t}+\epsilon}w=wlrvt+ϵmt
其中
ttt是训练进度,比如更新次数,或epoch
β1∈[0,1]\beta_1 \in [0,1]β1[0,1] 一般取值0.9
β2∈[0,1]\beta_2 \in [0,1]β2[0,1] 一般取值0.999
mmmvvv分别是平滑后的∂w\partial ww(∂w)2(\partial w)^2(w)2
mtm_tmtvtv_tvt避免训练启动阶段训练速度太慢(因为mmmvvv初始化都是0,训练最开始的一段时间二者都接近0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值