- Review: gradient Descent
- Learning rates给优化过程中带来的影响
- 自适应调整learning rate 的方法
- 梯度下降法的背后理论基础
Review: gradient Descent
在上一个视频里,已经介绍了使用梯度下降法求解Loss function
θ
∗
=
a
r
g
m
i
n
L
(
θ
)
\theta^*=argmin\ L(\theta)
θ∗=argmin L(θ)
L:loss function
θ
\theta
θ:参数
梯度下降过程中的可视化
Learning rates给优化过程中带来的影响
自适应调整learning rate 的方法
-
Adagrad
以权重 w w w的更新过程为例
w t + 1 ← w t − η t σ t g t w^{t+1}\leftarrow w^t-\frac{\eta^t}{\sigma^t}g^t wt+1←wt−σtηtgt
其中 η t = η t + 1 \eta^t=\frac{\eta}{\sqrt{t+1}} ηt=t+1 η, σ t = 1 t + 1 ∑ i = 0 t ( g i t ) 2 \sigma^t=\sqrt{\frac{1}{t+1}\sum_{i=0}^t(g_i^t)^2} σt=t+11∑i=0t(git)2 .
如何理解Adagrad的物理意义呢?
如下图所示,当只有一个参数时,微分越大说明当前参数距离最优参数越远
当时当需要同时考虑多个参数时,考虑微分越大当前参数距离最优参数越远是一种不正确的想法,可见绿色的线中 c c c点相比于蓝色的线中 a a a点的微分值大,但 c c c距离最优解比 a a a近。
那么为了同时考虑好几个参数时,我们应该将描述一阶微分变化的二次微分也需要考虑进来. f r i s t d e r i v a t i v e s e c o n d d e r i v a t i v e \frac{frist \ derivative}{second \ derivative} second derivativefrist derivative
在Adagrad中, σ t = 1 t + 1 ∑ i = 0 t ( g i t ) 2 \sigma^t=\sqrt{\frac{1} {t+1}\sum_{i=0}^t(g_i^t)^2} σt=t+11∑i=0t(git)2 , 具有体现反差的效果。
我认为Adagrad具有这样的作用:损失函数在最优解处的微分值为0,在最优解附近的邻域内其他点处微分也应该较缓。Adagrad让一直陡峭突然变缓时,让函数快点走走,避免陷入局部最优解。一直平缓突然陡峭时让函数变慢点,别跨越最优解了。 -
Stochastic Gradient Descent
- Feature Scaling
归一化不同数据的分布,可以看出没有归一化是找最优解是需要拐弯才能到,但是绿色线直走就能到。
归一化的方法:
梯度下降法的背后理论基础
假设在损失函数中,我们需要更新两个参数 θ 1 , θ 2 \theta_1,\theta_2 θ1,θ2.
对于一个二阶可微函数 L ( θ 1 , θ 2 ) L(\theta_1,\theta_2) L(θ1,θ2),在 ( a , b ) (a,b) (a,b)附近的一个邻域内, L ( θ 1 , θ 2 ) L(\theta_1,\theta_2) L(θ1,θ2)可以被表述如下
L ( θ 1 , θ 2 ) ≈ = s + u ( θ 1 − a ) + v ( θ 2 − b ) L(\theta_1,\theta_2)\approx=s+u(\theta_1-a)+v(\theta_2-b) L(θ1,θ2)≈=s+u(θ1−a)+v(θ2−b)
其中 s = L ( a , b ) s=L(a,b) s=L(a,b), u = ∂ L ( a , b ) ∂ θ 1 u=\frac{\partial L(a,b)}{\partial\theta_1} u=∂θ1∂L(a,b), v = ∂ L ( a , b ) ∂ θ 2 v=\frac{\partial L(a,b)}{\partial\theta_2} v=∂θ2∂L(a,b)。
那么为了使得整体的L最小,我们就需要
把向量
(
(
θ
1
−
a
)
,
(
θ
2
−
b
)
)
((\theta_1-a) ,(\theta_2-b))
((θ1−a),(θ2−b))置于与
(
u
,
v
)
(u,v)
(u,v)相反。
红色圈的半径就是学习率
η
\eta
η。当红色圈过大时,
L
(
θ
1
,
θ
2
)
≈
=
s
+
u
(
θ
1
−
a
)
+
v
(
θ
2
−
b
)
L(\theta_1,\theta_2)\approx=s+u(\theta_1-a)+v(\theta_2-b)
L(θ1,θ2)≈=s+u(θ1−a)+v(θ2−b)就会误差过大。
图源:李宏毅机器学