深度学习中的优化算法

如何确定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

你可能感兴趣的:(人工智能/深度学习/机器学习)