深度学习中的优化算法

    xiaoxiao2023-11-27  161

    如何确定mini-batch的大小?

    64, 128, 256, 。。。。。。 数据大小适应CPU / GPU内存的大小

    Exponentially weighted averages

    v t = β v t − 1 + ( 1 − β ) θ t v_t = \beta v_{t-1} + (1-\beta) \theta_t vt=βvt1+(1β)θt θ t \theta_t θt是原始数据, v t v_t vt是构造的新数据。

    加入偏差校正 v t = v t 1 − β t v_t = \frac{v_t}{1-\beta^t} vt=1βtvt

    动量

    v = β v + ( 1 − β ) ∇ w v = \beta v + (1-\beta)\nabla w v=βv+(1β)w

    w = w − α v w = w - \alpha v w=wαv

    RMSprop

    RMSProp在梯度累积的时候,会对“过去”与“现在”做一个平衡 θ t = β θ t + ( 1 + β ) ( ∇ w t ) 2 \theta_t = \beta\theta_t + (1+\beta)(\nabla w_t)^2 θt=βθt+(1+β)(wt)2

    w t = w t − α θ t + δ ∇ w t w_t = w_t -\frac{\alpha}{\sqrt{\theta_t+\delta}}\nabla w_t wt=wtθt+δ αwt

    Adam

    将动量与RMSprop结合起来。

    v = β 1 v + ( 1 − β 1 ) ∇ w v = \beta_1 v + (1-\beta_1) \nabla w v=β1v+(1β1)w

    θ = β 2 θ + ( 1 − β 2 ) ( ∇ w ) 2 \theta = \beta_2 \theta + (1-\beta_2)(\nabla w)^2 θ=β2θ+(1β2)(w)2

    更新参数 w = w − α θ + δ v w = w - \frac{\alpha}{\sqrt{\theta+\delta}}v w=wθ+δ αv

    开始时梯度会很小, v v v θ \theta θ经常会接近0,因此需要进行校正: v = v 1 − β 1 t , θ = θ 1 − β 2 t v = \frac{v}{1-\beta^t_1},\quad \theta = \frac{\theta}{1-\beta^t_2} v=1β1tv,θ=1β2tθ

    Learning rate decay

    α = 1 1 + d e c a y _ r a t e × e p o c h α 0 \alpha = \frac{1}{1+decay\_rate \times epoch}\alpha_0 α=1+decay_rate×epoch1α0

    最新回复(0)