深度学习中的优化算法

    xiaoxiao2023-11-27  191

    如何确定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​=βvt−1​+(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=β1​v+(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−β1t​v​,θ=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)