一、回顾
前面预测宝可梦cp值的例子里,已经初步介绍了Gradient Descent的用法:
In step 3,我们需要解决下面的优化问题:
θ ∗ = arg min θ L ( θ ) \theta^{*}=\arg \underset{\theta}{\min} L(\theta) \quad θ∗=argθminL(θ)
- L L L : Loss function(损失函数)
- θ : \theta: θ: Parameters(上标表示第几组参数,下标表示这组参数中的第几个参数)
假设 θ \theta θ是参数的集合:Suppose that θ \theta θ has two variables { θ 1 , θ 2 } \left\{\theta_{1}, \theta_{2}\right\} {θ1,θ2}
随机选取一组起始的参数:Randomly start at θ 0 = [ θ 1 0 θ 2 0 ] \theta^{0}=\left[\begin{array}{l}{\theta_{1}^{0}} \\ {\theta_{2}^{0}}\end{array}\right] \quad θ0=[θ10θ20]
计算 θ \theta θ处的梯度gradient: ∇ L ( θ ) = [ ∂ L ( θ 1 ) / ∂ θ 1 ∂ L ( θ 2 ) / ∂ θ 2 ] \nabla L(\theta)=\left[\begin{array}{l}{\partial L\left(\theta_{1}\right) / \partial \theta_{1}} \\ {\partial L\left(\theta_{2}\right) / \partial \theta_{2}}\end{array}\right] ∇L(θ)=[∂L(θ1)/∂θ1∂L(θ2)/∂θ2]
[ θ 1 1 θ 2 1 ] = [ θ 1 0 θ 2 0 ] − η [ ∂ L ( θ 1 0 ) / ∂ θ 1 ∂ L ( θ 2 0 ) / ∂ θ 2 ] ⇒ θ 1 = θ 0 − η ∇ L ( θ 0 ) \left[\begin{array}{l}{\theta_{1}^{1}} \\ {\theta_{2}^{1}}\end{array}\right]=\left[\begin{array}{l}{\theta_{1}^{0}} \\ {\theta_{2}^{0}}\end{array}\right]-\eta\left[\begin{array}{l}{\partial L\left(\theta_{1}^{0}\right) / \partial \theta_{1}} \\ {\partial L\left(\theta_{2}^{0}\right) / \partial \theta_{2}}\end{array}\right] \Rightarrow \theta^{1}=\theta^{0}-\eta \nabla L\left(\theta^{0}\right) [θ11θ21]=[θ10θ20]−η[∂L(θ10)/∂θ1∂L(θ20)/∂θ2]⇒θ1=θ0−η∇L(θ0)
[ θ 1 2 θ 2 2 ] = [ θ 1 1 θ 2 1 ] − η [ ∂ L ( θ 1 1 ) / ∂ θ 1 ∂ L ( θ 2 1 ) / ∂ θ 2 ] ⇒ θ 2 = θ 1 − η ∇ L ( θ 1 ) \left[\begin{array}{c}{\theta_{1}^{2}} \\ {\theta_{2}^{2}}\end{array}\right]=\left[\begin{array}{c}{\theta_{1}^{1}} \\ {\theta_{2}^{1}}\end{array}\right]-\eta\left[\begin{array}{c}{\partial L\left(\theta_{1}^{1}\right) / \partial \theta_{1}} \\ {\partial L\left(\theta_{2}^{1}\right) / \partial \theta_{2}}\end{array}\right] \Rightarrow \theta^{2}=\theta^{1}-\eta \nabla L\left(\theta^{1}\right) [θ12θ22]=[θ11θ21]−η[∂L(θ11)/∂θ1∂L(θ21)/∂θ2]⇒θ2=θ1−η∇L(θ1)
下图是将Gradient Descent在投影到二维坐标系中可视化的样子,图上的每一个点都是
(
θ
1
,
θ
2
,
l
o
s
s
)
(\theta_1,\theta_2,loss)
(θ1,θ2,loss)在该平面的投影
红色箭头是指在
(
θ
1
,
θ
2
)
(\theta_1,\theta_2)
(θ1,θ2)这点的梯度,梯度方向即箭头方向(从低处指向高处),梯度大小即箭头长度(表示在
θ
i
\theta^i
θi点处最陡的那条切线的导数大小,该方向也是梯度上升最快的方向)
蓝色曲线代表实际情况下参数 θ 1 \theta_1 θ1和 θ 2 \theta_2 θ2的更新过程图,每次更新沿着蓝色箭头方向loss会减小,蓝色箭头方向与红色箭头方向刚好相反,代表着梯度下降的方向
因此,在整个Gradient Descent的过程中,梯度不一定是递减的(红色箭头的长度可以长短不一),但是沿着梯度下降的方向,函数值loss一定是递减的,且当gradient=0时,loss下降到了局部最小值,总结:梯度下降法指的是函数值loss随梯度下降的方向减小
初始随机在三维坐标系中选取一个点,这个三维坐标系的三个变量分别为 ( θ 1 , θ 2 , l o s s ) (\theta_1,\theta_2,loss) (θ1,θ2,loss),我们的目标是找到最小的那个loss也就是三维坐标系中高度最低的那个点,而gradient梯度可以理解为高度上升最快的那个方向,它的反方向就是梯度下降最快的那个方向,于是每次update沿着梯度反方向,update的步长由梯度大小和learning rate共同决定,当某次update完成后,该点的gradient=0,说明到达了局部最小值
下面是关于gradient descent的一点思考:
二、Learning rate 大小不同存在的问题
Gradient Descent过程中,影响结果的一个很关键的因素就是Learning rate的大小
- 如果Learning rate刚刚好,就可以像下图中红色线段一样顺利地到达到loss的最小值
- 如果Learning rate太小的话,像下图中的蓝色线段,虽然最后能够走到local minimal的地方,但是它可能会走得非常慢,需要花很长的时间,以至于你无法接受
- 如果Learning rate太大,像下图中的绿色线段,它的步伐太大了,它永远没有办法走到特别低的地方,可能永远在这个“山谷”的口上振荡而无法走下去
- 如果Learning rate非常大,就会像下图中的黄色线段,一瞬间就飞出去了,结果会造成update参数以后,loss反而会越来越大(这一点在上次的demo中有体会到,当lr过大的时候,每次更新loss反而会变大)
当参数有很多个的时候(>3),其实我们很难做到将loss随每个参数的变化可视化出来(因为最多只能可视化出三维的图像,也就只能可视化三维参数),但是我们可以把update的次数作为唯一的一个参数,将loss随着update的增加而变化的趋势给可视化出来(上图右半部分)
所以做Gradient Ddescent一个很重要的事情是,要把不同的Learning rate下,loss随update次数的变化曲线给可视化出来,它可以提醒你该如何调整当前的learning rate的大小,直到出现稳定下降的曲线
三、自适应学习率(Adaptive Learning rates)
3.1 问题的引入
现在我们的想法是,我们在距离global minima远的时候是希望learning rate大一点,然后当靠近global minima的时候learning rate又小一点,这样就不会跳过全局最小点。但是如果手动地去调整learning rates很麻烦,而且我们也不能确定每一步给多少的学习率最好,因此我们需要有一些自动调整Learning rate的方法
首先明确最基本、最简单的大原则是:Learning rate通常是随着参数的update越来越小的,因为在起始点的时候,通常是离最低点是比较远的,这时候步伐就要跨大一点;而经过几次update以后,会比较靠近目标,这时候就应该减小learning rate,让它能够收敛在最低点的地方
举例:假设到了第t次update,此时 η t = η / t + 1 \eta^t=\eta/ \sqrt{t+1} ηt=η/t+1,这种普通的梯度下降方法使所有参数以同样的方式同样的Learning rate进行update,这里面的 w w w是某一个参数:
而最好的状况是每个参数都给他不同的Learning rate去update
3.2 引入 Adagrad 算法
- Adagrad算法:每一个参数的学习率都把它除上之前微分的均方根
相对于普通的梯度下降,Adagrad 可以做的更好:
- Adagrad算法就是将不同参数的Learning
rate分开考虑的一种算法(adagrad算法update到后面速度会越来越慢,当然这只是自适应算法中最简单的一种)
这里的w是function中的某个参数,t表示第t次update,
g
t
g^t
gt表示Loss对w的偏微分,而
σ
t
\sigma^t
σt是之前所有Loss对w偏微分的方均根(根号下的平方均值),这个值对每一个参数来说都是不一样的。
由于
η
t
\eta^t
ηt和
σ
t
\sigma^t
σt中都有一个
1
1
+
t
\sqrt{\frac{1}{1+t}}
1+t1的因子,两者相消,即可得到Adagrad的最终表达式:
w
t
+
1
=
w
t
−
η
∑
i
=
0
t
(
g
i
)
2
⋅
g
t
w^{t+1}=w^t-\frac{\eta}{\sum\limits_{i=0}^t(g^i)^2}\cdot g^t
wt+1=wt−i=0∑t(gi)2η⋅gt
3.3 关于Adagrad算法的一个矛盾
Adagrad的表达式 w t + 1 = w t − η ∑ i = 0 t ( g i ) 2 ⋅ g t w^{t+1}=w^t-\frac{\eta}{\sum\limits_{i=0}^t(g^i)^2}\cdot g^t wt+1=wt−i=0∑t(gi)2η⋅gt里面有一件很矛盾的事情:
我们在做Gradient Descent的时候,希望的是当梯度值即微分值 g t g^t gt越大的时候(此时斜率越大,还没有接近最低点)更新的步伐要更大一些,但是Adagrad的表达式中,分母表示梯度越大步伐越大,分子却表示梯度越大步伐越小,两者似乎相互矛盾
< 1 > 比较直观的解释
Adagrad要考虑的是,这个gradient有多surprise,即反差有多大,假设t=4的时候 g 4 g^4 g4与前面的gradient反差特别大,那么 g t g^t gt与 1 t + 1 ∑ i = 0 t ( g i ) 2 \sqrt{\frac{1}{t+1}\sum\limits_{i=0}^t(g^i)^2} t+11i=0∑t(gi)2之间的大小反差就会比较大,它们的商就会把这一反差效果体现出来。
< 2 > 比较正式的解释:
此时得到一个结论1-1:梯度越大,就跟最低点的距离越远。但是梯度越大,离最低点越远这件事情在有多个参数的情况下是不一定成立的。
如下图左边是两个参数的损失函数,颜色代表损失函数的值。如果只考虑参数 w 1 w_1 w1,就像图中蓝色的线,得到右边上图结果;如果只考虑参数 w 2 w_2 w2 ,就像图中绿色的线,得到右边下图的结果。确实对于 a a a 和 b b b,结论1-1是成立的,同理 c c c 和 b b b 对于结论1-1也成立。但是如果对比 a a a 和 c c c ,就不成立了, c c c 比 a a a 大,但 c c c 距离最低点是比较近的。
所以结论1-1是在没有考虑跨参数对比的情况下,才能成立的。所以还不完善。
实际上,对于一个二次函数
y
=
a
x
2
+
b
x
+
c
y=ax^2+bx+c
y=ax2+bx+c来说,最小值点的
x
=
−
b
2
a
x=-\frac{b}{2a}
x=−2ab,而对于任意一点
x
0
x_0
x0,它迈出最好的步伐长度是
∣
x
0
+
b
2
a
∣
=
∣
2
a
x
0
+
b
2
a
∣
|x_0+\frac{b}{2a}|=|\frac{2ax_0+b}{2a}|
∣x0+2ab∣=∣2a2ax0+b∣(这样就一步迈到最小值点了),联系该函数的一阶和二阶导数
y
′
=
2
a
x
+
b
y'=2ax+b
y′=2ax+b、
y
′
′
=
2
a
y''=2a
y′′=2a,可以发现The best step is
∣
y
′
y
′
′
∣
|\frac{y'}{y''}|
∣y′′y′∣,即:
也就是说他不仅跟一阶导数(gradient)有关,还跟二阶导师有关,因此我们可以通过这种方法重新比较上面的a和c点,就可以得到比较正确的答案
再来回顾Adagrad的表达式: w t + 1 = w t − η ∑ i = 0 t ( g i ) 2 ⋅ g t w^{t+1}=w^t-\frac{\eta}{\sum\limits_{i=0}^t(g^i)^2}\cdot g^t wt+1=wt−i=0∑t(gi)2η⋅gt
g t g^t gt就是一次微分,而Adagrad算法分母中的 ∑ i = 0 t ( g i ) 2 \sum\limits_{i=0}^t(g^i)^2 i=0∑t(gi)2就是为了反映了二次微分的大小,所以Adagrad想要做的事情就是,在不增加任何额外运算的前提下,想办法去估测二次微分的值,因为如果真正对表达式进行求二阶微分的话,计算量非常的大。
3.4 随机梯度下降(Stochastic Gradicent Descent)
传统的Gradient Descent的思路是看完所有的样本点之后再构建Loss function,然后去update参数:
随机梯度下降的方法可以让训练更快速,Stochastic Gradicent Descent的做法是:
损失函数不需要处理训练集所有的数据,而是选取某一个数据
x
n
x^n
xn
此时不需要像之前那样一次对所有的数据进行处理,只需要计算某一个例子的损失函数
L
n
L^n
Ln,就可以更新参数了。
Stochastic Gradicent Descent与传统Gradient Descent的效果对比如下:
3.5 特征缩放(Feature Scaling)
< 1 > 概念介绍
比如有一个函数: y = b + w 1 x 1 + w 2 x 2 y = b + w1x1 + w2x2 y=b+w1x1+w2x2
当多个特征的分布范围很不一样时,最好将这些不同特征的范围缩放到一样
< 2 > 原理解释
y = b + w 1 x 1 + w 2 x 2 y=b+w_1x_1+w_2x_2 y=b+w1x1+w2x2,假设x1的值都是很小的,比如1,2…;x2的值都是很大的,比如100,200…
此时去画出Loss的误差曲面,如果对 w 1 w1 w1 和 w 2 w2 w2 都做一个同样的变动 Δ w \Delta w Δw,那么 w 1 w1 w1 的变化对 y y y 的影响是比较小的,而 w 2 w2 w2 的变化对 y y y 的影响是比较大的
左边的曲面图表示,
w
1
w1
w1 对
y
y
y 的影响比较小,所以
w
1
w1
w1 对 loss是有比较小的偏微分的,因此在w1的方向上图像是比较平滑的;
w
2
w2
w2 对
y
y
y 的影响比较大,所以
w
2
w2
w2 对loss的影响比较大,因此在
w
2
w2
w2 的方向上有比较尖的峡谷
如果 x 1 x1 x1 和 x 2 x2 x2 的值,它们的scale是接近的,那么w1和w2对loss就会有差不多的影响力,loss的图像接近于圆形,那这样做对Gradient Descent有什么好处呢?
< 3 > 对Gradient Decent的帮助
之前我们做的demo已经表明了,对于这种长椭圆形的error surface,如果不使用Adagrad之类的方法,是很难搞定它的,因为在像 w 1 w1 w1 和 w 2 w2 w2 这样不同的参数方向上,会需要不同的学习率,用相同的学习率很难达到最低点,如果有特征缩放的话,loss在参数w1、w2平面上的投影就是一个正圆形,update参数会比较容易,而且Gradient Descent的每次update并不都是向着最低点走的,每次update的方向是顺着等高线的方向(梯度gradient下降的方向),而不是径直走向最低点;但是当经过对input的scale使loss的投影是一个正圆的话,不管在这个区域的哪一个点,它都会向着圆心走。因此feature scaling对参数更新的效率是有帮助的
< 4 > 如何做特征缩放
假设有R个example(上标i表示第i个样本点), x 1 , x 2 , x 3 , . . . , x r , . . . x R x^1,x^2,x^3,...,x^r,...x^R x1,x2,x3,...,xr,...xR,每一笔example,它里面都有一组feature(下标j表示该样本点的第j个特征)
对每一个维度 i i i(绿色框框),都去算出它的平均值mean= m i m_i mi,以及标准差= σ i \sigma_i σi
然后用第
r
r
r 个例子中的第
i
i
i 个输入,减掉平均数
m
i
m_i
mi,然后除以标准差
σ
i
\sigma_i
σi ,即
x
i
r
=
x
i
r
−
m
i
σ
i
x_i^r=\frac{x_i^r-m_i}{\sigma_i}
xir=σixir−mi,得到的结果是所有的维数都是
0
0
0,所有的方差都是
1
1
1
说了那么多,实际上就是将每一个参数都归一化成标准正态分布,即
f
(
x
i
)
=
1
2
π
e
−
x
i
2
2
f(x_i)=\frac{1}{\sqrt{2\pi}}e^{-\frac{x_i^2}{2}}
f(xi)=2π1e−2xi2,其中
x
i
x_i
xi表示第i个参数
< 5 > Gradient Descent 的数学理论基础
首先提出一个问题:
数学理论:
比如在
θ
0
\theta^0
θ0 处,可以在一个小范围的圆圈内找到损失函数细小的
θ
1
\theta^1
θ1,不断的这样去寻找。
接下来就是如何在小圆圈内快速的找到最小值?
泰勒展开(Taylor Series)
若 h ( x ) h(x) h(x) 在 x = x 0 x = x_0 x=x0 点的某个邻域内有无限阶倒数(即无限可微分,infinitely differentiable),
那么在此邻域内有泰勒表达式:
h ( x ) = ∑ k = 0 ∞ h ( k ) ( x 0 ) k ! ( x − x 0 ) k = h ( x 0 ) + h ′ ( x 0 ) ( x − x 0 ) + h ′ ′ ( x 0 ) 2 ! ( x − x 0 ) 2 + . . . h(x)=\sum\limits_{k=0}^\infty \frac{h^{(k)}(x_0)}{k!}(x-x_0)^k=h(x_0)+h'(x_0)(x-x_0)+\frac{h''(x_0)}{2!}(x-x_0)^2+... h(x)=k=0∑∞k!h(k)(x0)(x−x0)k=h(x0)+h′(x0)(x−x0)+2!h′′(x0)(x−x0)2+...
当 x x x 很接近 x 0 x0 x0 时,有 h ( x ) ≈ h ( x 0 ) + h ′ ( x 0 ) ( x − x 0 ) h(x)≈h(x_0)+h'(x_0)(x-x_0) h(x)≈h(x0)+h′(x0)(x−x0),就是函数 h ( x ) h(x) h(x) 在 x = x 0 x = x_0 x=x0 点附近关于 x x x 的幂函数展开式,也叫泰勒展开式,因为当 x x x 与 x 0 x_0 x0 非常接近的时候 ( x − x 0 ) 2 (x-x_0)^2 (x−x0)2 以及 ( x − x 0 ) 3 (x-x_0)^3 (x−x0)3 和后面的项都是非常小的,可以看似被忽略掉 。
举例:
图中3条蓝色线是把前3项作图,橙色线是
s
i
n
(
x
)
sin(x)
sin(x),比如只考虑前1次项的时候,它的函数图像和
s
i
n
(
x
)
sin(x)
sin(x) 的差别还是很大的,但是当
x
x
x 非常接近
π
/
4
π/4
π/4 附近的时候,只考虑前1次项在这一点的值就是等于
s
i
n
(
x
)
sin(x)
sin(x) 在这一点的值,因为后面的平方项,立方项等等非常小,都被可以忽略,也这就是泰勒的近似。
同理,对于多变量泰勒展开式,when x and y is close to x 0 x_0 x0 and y 0 y_0 y0:
h ( x , y ) ≈ h ( x 0 , y 0 ) + ∂ h ( x 0 , y 0 ) ∂ x ( x − x 0 ) + ∂ h ( x 0 , y 0 ) ∂ y ( y − y 0 ) h(x,y)≈h(x_0,y_0)+\frac{\partial h(x_0,y_0)}{\partial x}(x-x_0)+\frac{\partial h(x_0,y_0)}{\partial y}(y-y_0) h(x,y)≈h(x0,y0)+∂x∂h(x0,y0)(x−x0)+∂y∂h(x0,y0)(y−y0)
从泰勒展开式推导出 Gradient Descent
对于loss图像上的某一个点(a,b),如果我们想要找这个点附近loss最小的点,就可以用泰勒展开的思想,只有这个点的范围很小,泰勒后面的项才可以被忽略。
假设用一个红色圈圈限定点的范围,这个圆足够小以满足泰勒展开的精度,那么此时我们的loss function就可以化简为:
L ( θ ) ≈ L ( a , b ) + ∂ L ( a , b ) ∂ θ 1 ( θ 1 − a ) + ∂ L ( a , b ) ∂ θ 2 ( θ 2 − b ) L(\theta)≈L(a,b)+\frac{\partial L(a,b)}{\partial \theta_1}(\theta_1-a)+\frac{\partial L(a,b)}{\partial \theta_2}(\theta_2-b) L(θ)≈L(a,b)+∂θ1∂L(a,b)(θ1−a)+∂θ2∂L(a,b)(θ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 ( θ ) ≈ s + u ⋅ ( θ 1 − a ) + v ⋅ ( θ 2 − b ) L(\theta)≈s+u\cdot (\theta_1-a)+v\cdot (\theta_2-b) L(θ)≈s+u⋅(θ1−a)+v⋅(θ2−b)
假定红色圈圈的半径为d,则有限制条件: ( θ 1 − a ) 2 + ( θ 2 − b ) 2 ≤ d 2 (\theta_1-a)^2+(\theta_2-b)^2≤d^2 (θ1−a)2+(θ2−b)2≤d2
此时去求 L ( θ ) m i n L(\theta)_{min} L(θ)min,这里有个小技巧,把 L ( θ ) L(\theta) L(θ)转化为两个向量的乘积: u ⋅ ( θ 1 − a ) + v ⋅ ( θ 2 − b ) = ( u , v ) ⋅ ( θ 1 − a , θ 2 − b ) = ( u , v ) ⋅ ( Δ θ 1 , Δ θ 2 ) u\cdot (\theta_1-a)+v\cdot (\theta_2-b)=(u,v)\cdot (\theta_1-a,\theta_2-b)=(u,v)\cdot (\Delta \theta_1,\Delta \theta_2) u⋅(θ1−a)+v⋅(θ2−b)=(u,v)⋅(θ1−a,θ2−b)=(u,v)⋅(Δθ1,Δθ2)
观察图形可知,当向量
(
θ
1
−
a
,
θ
2
−
b
)
(\theta_1-a,\theta_2-b)
(θ1−a,θ2−b)与向量
(
u
,
v
)
(u,v)
(u,v)反向,且刚好到达红色圈圈的边缘时(用
η
\eta
η去控制向量的长度),
L
(
θ
)
L(\theta)
L(θ)最小
(
θ
1
−
a
,
θ
2
−
b
)
(\theta_1-a,\theta_2-b)
(θ1−a,θ2−b)实际上就是
(
Δ
θ
1
,
Δ
θ
2
)
(\Delta \theta_1,\Delta \theta_2)
(Δθ1,Δθ2),于是
L
(
θ
)
L(\theta)
L(θ)局部最小值对应的参数为中心点减去gradient的加权
[
Δ
θ
1
Δ
θ
2
]
=
−
η
[
u
v
]
=
>
[
θ
1
θ
2
]
=
[
a
b
]
−
η
[
u
v
]
=
[
a
b
]
−
η
[
∂
L
(
a
,
b
)
∂
θ
1
∂
L
(
a
,
b
)
∂
θ
2
]
\begin{bmatrix} \Delta \theta_1 \\ \Delta \theta_2 \end{bmatrix}= -\eta \begin{bmatrix} u \\ v \end{bmatrix}=> \begin{bmatrix} \theta_1 \\ \theta_2 \end{bmatrix}= \begin{bmatrix} a\\ b \end{bmatrix}-\eta \begin{bmatrix} u\\ v \end{bmatrix}= \begin{bmatrix} a\\ b \end{bmatrix}-\eta \begin{bmatrix} \frac{\partial L(a,b)}{\partial \theta_1}\\ \frac{\partial L(a,b)}{\partial \theta_2} \end{bmatrix}
[Δθ1Δθ2]=−η[uv]=>[θ1θ2]=[ab]−η[uv]=[ab]−η[∂θ1∂L(a,b)∂θ2∂L(a,b)]
这就是Gradient Descent在数学上的推导,注意它的重要前提是,给定的那个红色圈圈的范围要足够小(也就是学习速率足够小),这样泰勒展开给我们的近似才会更精确,而
η
\eta
η的值是与圆的半径成正比的,因此理论上Learning rate要无穷小才能够保证每次Gradient Descent在update参数之后的loss会越来越小,于是当learning rate没有设置好,泰勒近似不成立,就有可能使Gradient Descent过程中的loss没有越来越小
当然上述式子只考虑了泰勒展开式的一次项,如果考虑到二次项(比如牛顿法),此时的学习率就可以适量较上面加大一点,相当于限制变宽了,但是考虑二次以上在实际中不是特别好,会涉及到二次微分等,多很多的运算,性价比不好,反而降低了运行效率。
< 6 > Gradient Descent的限制
之前已经讨论过,Gradient descent有一个问题是它会停在local minima的地方就停止update了
事实上还有一个问题是,微分值是0的地方并不是只有local minima,settle point的微分值也是0
以上都是理论上的探讨,到了实践的时候,其实当gradient的值接近于0的时候,我们就已经把它停下来了,但是微分值很小,不见得就是很接近local minima,也有可能像下图一样在一个高原的地方
综上,Gradient Descent的限制是,它在Gradient即微分值接近于0的地方就会停下来,而这个地方不一定是Global Minima,它可能是Local Minima,可能是Saddle Point鞍点,甚至可能是一个Loss很高的Plateau平缓高原