全量梯度下降/批梯度下降(BGD, Batch Gradient Descent)
特点
随机梯度下降(SGD, Stochastic Gradient Descent)
特点
小批量梯度下降(Mini-Batch Gradient Descent)
特点
Momentum梯度下降法(动量梯度下降)
特点
Adagrad梯度下降法
特点
Adadelta
特点
Adam
特点
就是正常的梯度下降
ω
=
ω
−
λ
∂
J
∂
ω
\omega = \omega-\lambda\frac{\partial J}{\partial\omega}
ω=ω−λ∂ω∂J
每次更新都会朝着正确的方向进行, 最后收敛于极值点, 凸函数收敛于全局极值点, 非凸函数可能会收敛于局部极值点
缺点: 学习时间长, 消耗内存大
SGD每一轮只用一条随机选取的数据
优点
每一次的学习时间很快
如果目标函数有盆地区域, SGD会使优化的方向从当前局部极小值点跳到另一个更好的局部最小值点
最终收敛于一个较好的极值店甚至是全局极值点
缺点
每次更新可能并不会按照正确的方向进行, 参数具有高方差, 从而导致损害函数剧烈波动
小批量梯度下降指的是从所有数据中选择一部分进行迭代
优点
收敛速度比SGD更快, 更稳定
在最优解附近跳动不会太大, 容易得到更好的解
v = λ ∂ J ∂ ω + v ∗ m o m e m t u m ω = ω − v m o m e m t u m 介 于 0 和 1 之 间 v = \lambda\frac{\partial J}{\partial\omega} +v * momemtum\\ \omega = \omega-v\\ momemtum介于0和1之间 v=λ∂ω∂J+v∗momemtumω=ω−vmomemtum介于0和1之间
减少震荡, 大方向不变, 从而保证了效率和正确的收敛
d w = ∂ J ∂ ω g r a d _ s q u a r e d + = d w 2 ω = ω − λ ∗ d w g r a d _ s q u a r e d dw = \frac{\partial J}{\partial\omega}\\ grad\_squared += dw^2\\ \omega = \omega - \lambda * \frac{dw}{\sqrt{grad\_squared}} dw=∂ω∂Jgrad_squared+=dw2ω=ω−λ∗grad_squared dw
把每一维度的梯度的平方和记录下来,每次学习率都除以这个和
每一维度的学习率不一样,而且都在不断减小
在梯度大的维度,减小下降速度.在梯度小的维度, 加快下降速度
让学习率适应参数
无需手动调整学习率
缺点: 在训练过程中, 累加的和会持续增长, 这回导致学习率变小以至于最终变得无限小, 那么Adagrad将无法取得额外的信息
d w = ∂ J ∂ ω g r a d _ s q u a r e d = α ∗ g r a d _ s q u a r e d + ( 1 − α ) ∗ d w 2 ω = ω − λ ∗ d w g r a d _ s q u a r e d dw = \frac{\partial J}{\partial\omega}\\ grad\_squared = \alpha * grad\_squared + (1 - \alpha) * dw^2\\ \omega = \omega - \lambda * \frac{dw}{\sqrt{grad\_squared}} dw=∂ω∂Jgrad_squared=α∗grad_squared+(1−α)∗dw2ω=ω−λ∗grad_squared dw
在Adagrad的基础上进行扩展, 以处理Adagrad学习率单调递减的问题
d w = ∂ J ∂ ω m o m e n t 1 = β 1 ∗ m o m e n t 1 + ( 1 − β 1 ) ∗ d w m o m e n t 2 = β 2 ∗ m o m e n t 2 + ( 1 − β 2 ) ∗ d w 2 b i a s 1 = m o m e n t 1 ÷ ( 1 − β 1 t ) b i a s 2 = m o m e n t 2 ÷ ( 1 − β 2 t ) w − = λ ∗ b i a s 1 ÷ b i s a 2 b i a s 为 偏 差 dw = \frac{\partial J}{\partial \omega}\\ moment_1 = \beta_1 * moment_1 + (1-\beta_1) * dw\\ moment_2 = \beta_2 * moment_2 + (1-\beta_2) * dw^2\\ bias_1 = moment_1 \div (1-\beta_1^t)\\ bias_2=moment_2 \div (1-\beta_2^t)\\ w -= \lambda * bias_1\div\sqrt{bisa_2}\\ bias为偏差 dw=∂ω∂Jmoment1=β1∗moment1+(1−β1)∗dwmoment2=β2∗moment2+(1−β2)∗dw2bias1=moment1÷(1−β1t)bias2=moment2÷(1−β2t)w−=λ∗bias1÷bisa2bias为偏差
结合了Momentum和RMSprop的特点
自适应学习率
b e t a 1 = 0.9 , b e t a 2 = 0.999 , λ = 1 e − 3 或 5 e − 4 beta_1=0.9, beta_2=0.999, \lambda=1e-3或5e-4 beta1=0.9,beta2=0.999,λ=1e−3或5e−4是许多模型的一个很好的起点
本人博客: https://xiaoxiablogs.top
联系客服