李宏毅机器学习(深度学习)--optimization
1.local minima and saddle point
我们在上一节提到了当training data loss大的时候有optimization的问题,这次来解决这个问题。所以optimization为何导致了loss变大呢?我们之前常见的一个猜想是,我们走到一个地方,这个地方loss对参数微分为0,也就是gradient为0,从而导致我们无法再进行下一步的移动,也就是我们走到了local minima。然而这个观点有一个错误的地方就是gradient为0的地方不仅仅只出现在local minima,还有可能出现在saddle point,这两者并称为critical point。关于如何区别这两者的方法,我们是采用线性代数的一些概念,这里不在赘述。
2.batch and momentum
(1)batch:老师首先又提了一下batch,并且比较了small batch 和large batch的差别。small batch由于分开进行loss计算,所以很有可能能跳出stuck的状态,所以optimization表现较好。
(2)momentum:就如同将一个铅球从山上扔下去,铅球可能并不会因为一些斜坡而停住,而会在momentum的加成下冲过斜坡,我们机器学习也可以借鉴这个方法,加上momentum来冲过gradient为0的点。
例如我们初始的点在
θ
0
\theta^0
θ0,movement
m
0
=
0
m^0=0
m0=0,计算gradient
g
0
g^0
g0,得到
m
1
=
λ
m
0
−
η
g
0
m^1=\lambda m^0-\eta g^0
m1=λm0−ηg0,随后进行更新:
θ
1
=
θ
0
+
m
1
\theta^1=\theta^0+m^1
θ1=θ0+m1,以此类推更新
θ
2
\theta^2
θ2:
m
2
=
λ
m
1
−
η
g
1
m^2=\lambda m^1-\eta g^1
m2=λm1−ηg1,
θ
2
=
θ
1
+
m
2
\theta^2=\theta^1+m^2
θ2=θ1+m2.这个公式表明了momentum是 上一次运动的动量-gradient,也就是除了gradient还要考虑之前的运动
3.Adaptive Learning Rate
我们在上面几次讨论了local minima导致loss无法下降的问题,但其实在我们训练时,我们所遇到的挑战并不是这个问题,而是固定的学习率而导致无法前进或者进行震荡的问题。我们可以想象当gradient较低时,如果学习率过小,会导致前进步伐过慢无法到达理想地。当处于一个类似于二次函数的地方时,若学习率过大,会导致出现震荡而无法前进。这就引出了Adaptive Learning Rate来自定调节学习率。
(1)Root Mean Square:
θ
i
t
+
1
=
θ
i
t
−
η
t
σ
i
t
g
i
t
\theta^{t+1}_i=\theta^{t}_i-\frac{\eta^t}{\sigma^t_i} g^t_i
θit+1=θit−σitηtgit其中:
σ
i
t
=
1
t
+
1
∑
i
=
0
t
(
g
i
t
)
2
\sigma^t_i=\sqrt{\frac{1}{t+1} \sum\limits_{i=0}^t{(g^t_i)^2}}
σit=t+11i=0∑t(git)2
(2) RMSProp:
θ
i
t
+
1
=
θ
i
t
−
η
t
σ
i
t
g
i
t
\theta^{t+1}_i=\theta^{t}_i-\frac{\eta^t}{\sigma^t_i} g^t_i
θit+1=θit−σitηtgit
其中:
σ
i
t
=
α
(
σ
i
t
−
1
)
2
+
(
1
−
α
)
(
g
i
t
)
2
\sigma^t_i=\sqrt{\alpha (\sigma^{t-1}_i)^2+(1-\alpha)(g^t_i)^2}
σit=α(σit−1)2+(1−α)(git)2,其中
α
\alpha
α是一个超参数需要我们认为调节,这个式子表明我们是想要现在的gradient对学习率影响大还是之前的对学习率影响大,可以自行调节
(3)Adam:RMSProp+momentum