机器学习之二(读书笔记)

四、Gradient Descent(梯度下降)

θ ∗ = a r g m i n θ L ( θ ) \theta ^{\ast } = arg\underset{\theta}{min } L(\theta ) θ=argθminL(θ)
L:loss function
θ \theta θ:parameters
梯度下降步骤:
1.选取两个参数{ θ 1 , θ 2 \theta_{1},\theta _{2} θ1,θ2}
2.随意选取一个初始位置 θ 0 = [ θ 1 0 θ 2 0 ] \theta^{0} = \begin{bmatrix} \theta _{1}^{0}\\ \theta _{2}^{0} \end{bmatrix} θ0=[θ10θ20]
3.通过梯度下降得到新的位置 θ 1 \theta^{1} θ1,即
[ θ 1 1 θ 2 1 ] = [ θ 1 0 θ 2 0 ] − η [ ∂ L ( θ 1 0 ) / ∂ θ 1 ∂ L ( θ 2 0 ) / ∂ θ 2 ] \begin{bmatrix} \theta _{1}^{1}\\ \theta _{2}^{1} \end{bmatrix} = \begin{bmatrix} \theta _{1}^{0}\\ \theta _{2}^{0} \end{bmatrix} - \eta \begin{bmatrix} \partial L(\theta _{1}^{0})/\partial\theta _{1}\\ \partial L(\theta _{2}^{0})/\partial\theta _{2} \end{bmatrix} [θ11θ21]=[θ10θ20]η[L(θ10)/θ1L(θ20)/θ2],其中 η \eta η为learning rate,后面为对Loss function的偏微分;
4.同样的步骤得到 θ 2 \theta^{2} θ2 θ 3 \theta^{3} θ3 θ n \theta^{n} θn
[ θ 1 2 θ 2 2 ] = [ θ 1 1 θ 2 1 ] − η [ ∂ L ( θ 1 1 ) / ∂ θ 1 ∂ L ( θ 2 1 ) / ∂ θ 2 ] \begin{bmatrix} \theta _{1}^{2}\\ \theta _{2}^{2} \end{bmatrix} = \begin{bmatrix} \theta _{1}^{1}\\ \theta _{2}^{1} \end{bmatrix} - \eta \begin{bmatrix} \partial L(\theta _{1}^{1})/\partial\theta _{1}\\ \partial L(\theta _{2}^{1})/\partial\theta _{2} \end{bmatrix} [θ12θ22]=[θ11θ21]η[L(θ11)/θ1L(θ21)/θ2]

Gradient(一个vector): ▽ L ( θ ) = [ ∂ L ( θ 1 ) / ∂ θ 1 ∂ L ( θ 2 ) / ∂ θ 2 ] \triangledown L(\theta ) = \begin{bmatrix} \partial L(\theta_{1} )/\partial \theta _{1}\\ \partial L(\theta_{2})/\partial \theta _{2} \end{bmatrix} L(θ)=[L(θ1)/θ1L(θ2)/θ2]
θ 1 = θ 0 − η ▽ L ( θ 0 ) \theta ^{1} = \theta ^{0} - \eta \triangledown L(\theta ^{0}) θ1=θ0ηL(θ0),以此类推。
在这里插入图片描述

***Granient Descent tips:
Tip 1:Tuning your learning rates

  learning rate 的大小会影响loss,如果参数过多没办法直接可视化loss function,这个时候可以画出不同learning rate对update loss时loss的变化:(常用框架里有自动调整的方法,参考ReduceLROnPlateau)
在这里插入图片描述

不同的参数应该给不同的learning rate
  有一些自动的方法可以帮助我们调learning rate:

   Adagrad(自适应梯度算法)
每一个参数的learning rate都让它除上之前算出来的微分值的root mean square(均方根)。
传统的Gradient Descent 和Adagrad对比:

在这里插入图片描述

  其中, σ t \sigma ^{t} σt是过去所有偏微分g的值的root mean square(均方根)。
具体操作:
  假设 w 0 w ^{0} w0的那点的微分是 g 0 g^{0} g0,它的learning rate是 η 0 / σ 0 \eta ^{0}/\sigma^{0} η0/σ0 σ 0 \sigma^{0} σ0是过去所有微分值的root mean square,即 ( g 0 ) 2 \sqrt{(g^{0})^{2}} (g0)2 ,以此类推,如下图:
在这里插入图片描述

总结一下Adargad式子:
在这里插入图片描述

  使用Adargad方法都后期会update越来越慢,慢到令人发指,还有别的方法比如Adam方法,是最稳定的。

  疑问?在梯度下降中Gradient越大,update越快,但是使用Adagrad时,微分值越大,分子g表示update越快,分母却使update步伐越小(解释说,分母是为了造成反差的效果)。可看作 一次微分/二次微分, g t g^{t} gt一次微分,下面的分母可看作二次微分(一般在使用Adagrad时计算二次微分会比较复杂,我们可用一次微分去估计二次微分,即取几个点计算 ( f i r s t d e r i v a t i v e ) 2 \sqrt{(firstderivative)^{2}} (firstderivative)2
在这里插入图片描述

**Tip 2:Stochastic Gradient Descent (随机梯度下降法)
make the training faster

  以Regression的Loss function为例Gradient Descent的做法(计算所有的loss然后才update参数):
在这里插入图片描述

Stochastic Gradient Descent 的做法:
在这里插入图片描述

1.随机选取(也可按顺序选取)一个example x n x^{n} xn
2.计算(某一个example的)loss:
L n = ( y ^ n − ( b + ∑ w i x i n ) ) 2 L^{n} = (\hat{y}^{n} - (b + \sum w_{i}x_{i}^{n}))^{2} Ln=(y^n(b+wixin))2
3.计算对某一个example,它的loss的Gradient,再update参数:
θ i = θ i − 1 − η ▽ L n ( θ i − 1 ) \theta ^{i} = \theta ^{i - 1} - \eta \triangledown L^{n}(\theta ^{i - 1} ) θi=θi1ηLn(θi1)
在这里插入图片描述

**Tip 3:Feature Scaling(特征缩放)
  以Regression为例:
   y = b + w 1 x 1 + w 2 x 2 y = b + w_{1} x_{1}+ w_{2}x_{2} y=b+w1x1+w2x2中有两个input的feature: x 1 x_{1} x1 x 2 x_{2} x2,我们希望它们分布的range一样,可做scaling(归一化思想):
在这里插入图片描述

  Feature Scaling的做法(有很多,这是其中一种常见局部化做法):
  假设我有r个example, x 1 , x 2 , . . . . . . , x r , . . . . . . x R x^{1},x^{2},......,x^{r},......x^{R} x1,x2,......,xr,......xR,每一笔example里都有一组feature,例如 x 1 x^{1} x1的feature: x 1 1 , x 2 1 . . . . . . x_{1}^{1},x_{2}^{1}...... x11,x21......
1.feature scaling 就是对每一个dimension i 计算mean,即 m i m_{i} mi,和计算它的deviation(偏离),即 σ i \sigma_{i} σi
2.然后对r个example的第i个component减掉所有data的第i个component的mean,再除掉所有data的第i个component的standard deviation;
3.做完以上,所有的dimension的mean就会为0,而variance就会是1
在这里插入图片描述

Formal Derivation:
  取一个点,再取以这个点为圆心的圆,选择这个圆的最低点作为下一个点,以此类推…


补充知识点:
Taylor Series
  任何一个function h(x),如果它在 x = x 0 x = x_{0} x=x0这一点是infinitely differentiable(无限可微),那么可把h(x)写成:
h ( x ) = ∑ k = 0 ∞ h ( k ) ( x 0 ) k ! ( x − x 0 ) k h(x) = \sum_{k = 0}^{\infty }\frac{h^{(k)}(x_0)}{k!}(x-x_0)^{k} h(x)=k=0k!h(k)(x0)(xx0)k

= h ( x 0 ) + h ′ ( x 0 ) ( x − x 0 ) + h ′ ′ ( x 0 ) 2 ! ( x − x 0 ) 2 + . . . =h(x_0) +{h}'(x_0)(x-x_0)+\frac{{h}''(x_0)}{2!}(x-x_0)^{2}+... =h(x0)+h(x0)(xx0)+2!h(x0)(xx0)2+...
  当x接近 x 0 x_0 x0时以上可写成:
h ( x ) ≈ h ( x 0 ) + h ′ ( x 0 ) ( x − x 0 ) h(x)\approx h(x_0) +{h}'(x_0)(x-x_0) h(x)h(x0)+h(x0)(xx0)
  以上只考虑一个variable,如果考虑好几个参数,即Multivariable Taylor Series:
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)\approx 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)+xh(x0,y0)(xx0)+yh(x0,y0)(yy0)


在这里插入图片描述

  根据Multivariable Taylor Series改写loss function:
L ( θ ) ≈ L ( a , b ) + ∂ L ( a , b ) ∂ θ 1 ( θ 1 − a ) + ∂ L ( a , b ) ∂ θ 2 ( θ 2 − b ) L(\theta ) \approx 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)+θ1L(a,b)(θ1a)+θ2L(a,b)(θ2b)
其中s,u,v都是常数,化简为:
在这里插入图片描述

  为了让 L ( θ ) L(\theta) L(θ)最小,应该让 ( Δ θ 1 , Δ θ 2 ) (\Delta \theta _1,\Delta \theta _2) (Δθ1,Δθ2)与(u,v)反向并成正比,即:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  以上验证了gradient descent。

Gradient Descent的限制
a.会卡在local minimum的位置;
b.也可能会卡在不是local minimum的位置,比如saddle point(鞍点),此时的微分也为0;
c.也有可能卡在微分值很小接近于0的位置,此时可能在高原位置


本文是对blibli上李宏毅机器学习2020的总结,如有侵权会立马删除。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部