深度学习中的优化策略

SGD

w = w − l r ∗ ∂ w w = w - lr*\partial w w=wlrw 其中
l r lr lr是学习速率
∂ w = ∂ l o s s ∂ w \partial w = \frac{\partial loss}{\partial w} w=wloss

sgd_momentum

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

rmsprop

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

adam

m = β 1 ∗ m + ( 1 − β 1 ) ∗ ∂ w m=\beta_1 * m + (1-\beta_1) * \partial w m=β1m+(1β1)w
m t = m 1 − β 1 t m_t = \frac{m}{1-\beta_1^t} mt=1β1tm
v = β 2 ∗ v + ( 1 − β 2 ) ∗ ( ∂ w ) 2 v=\beta_2*v + (1-\beta_2)*(\partial w)^2 v=β2v+(1β2)(w)2
v t = v 1 − β 2 t v_t = \frac{v}{1-\beta_2^t} vt=1β2tv
w = w − l r ∗ m t v t + ϵ w = w - lr * \frac{m_t}{\sqrt{v_t}+\epsilon} w=wlrvt +ϵmt
其中
t t t是训练进度,比如更新次数,或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
m m m v v v分别是平滑后的 ∂ w \partial w w ( ∂ w ) 2 (\partial w)^2 (w)2
m t m_t mt v t v_t vt避免训练启动阶段训练速度太慢(因为 m m m v v v初始化都是0,训练最开始的一段时间二者都接近0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值