梯度下降算法

UTF8gbsn

梯度

什么是梯度?

  • 梯度和导数有关但是梯度却不是导数.

  • 直观的解释是把梯度看做是一个向量.这个向量指向函数值增长最快的方向.它的摸长就是增长的比率.

某一个点 x 0 \mathbf{x_0} x0的梯度的数学定义如下.
∇ f ( x 0 ) = ( ∂ f ∂ x 1 ( x 0 ) , ∂ f ∂ x 2 ( x 0 ) , ⋯   , ∂ f ∂ x n ( x 0 ) ) \nabla f(\mathbf{x_0})=(\frac{\partial f}{\partial x_1}(\mathbf{x_0}), \frac{\partial f}{\partial x_2}(\mathbf{x_0}), \cdots, \frac{\partial f}{\partial x_n}(\mathbf{x_0})) f(x0)=(x1f(x0),x2f(x0),,xnf(x0))

画出梯度的图象

比如我们来画出函数 f ( x , y ) = s i n ( x + y 2 ) f(x,y)=sin(x+y^2) f(x,y)=sin(x+y2) 的图象.
在这里插入图片描述
\newpage
它的梯度
在这里插入图片描述

  • 箭头方向就是梯度的方向.

  • 箭头的长度就是梯度的增量幅度.

我们画出函数的登高线让大家和梯度比较起来观察更为方便.

在这里插入图片描述

梯度下降

对梯度有了直观的认识,那么梯度下降算法就很简单了.线来看看梯度下降算法的描述.
梯度下降算法就是从某个点 x 0 \mathbf{x_0} x0出发,按照梯度的反方向,去找到函数的一个局部最小值.如果是凸函数,则可以得到全局最优解.我们就讨论一下一般情况局部最有解的情况.

简单的函数

f ( x , y ) = x 2 + y 2 f(x,y)=x^2+y^2 f(x,y)=x2+y2

这个函数的极小值出现在 ( 0 , 0 ) (0,0) (0,0)点.画出图象如下

在这里插入图片描述

并且我们画出它的梯度图象为.

在这里插入图片描述

假如我们的出发点位于(1,1).

  • 求出这个点的梯度 ( 2 x , 2 y ) = ( 2 , 2 ) (2x, 2y)=(2,2) (2x,2y)=(2,2)

  • 设置我们的移动步长比如 s = 0.05 s=0.05 s=0.05

  • 那么第一次迭代 ( x 1 , y 1 ) = ( x 0 , y 0 ) − s ∇ f ( x 0 , y 0 ) (x_1,y_1)=(x_0,y_0)-s\nabla f(x_0,y_0) (x1,y1)=(x0,y0)sf(x0,y0)
    用在例子上就是 ( x 1 , y 1 ) = ( 1 , 1 ) − 0.05 ( 2 , 2 ) = ( 0.9 , 0.9 ) (x_1,y_1)=(1,1)-0.05(2,2)=(0.9, 0.9) (x1,y1)=(1,1)0.05(2,2)=(0.9,0.9)

  • 第二次迭代. ( x 2 , y 2 ) = ( x 1 , y 1 ) − s ∇ f ( x 1 , y 1 ) (x_2,y_2)=(x_1,y_1)-s\nabla f(x_1,y_1) (x2,y2)=(x1,y1)sf(x1,y1) 用在列子上是
    ( x 2 , y 2 ) = ( 0.9 , 0.9 ) − 0.05 ( 1.8 , 1.8 ) = ( 0.81 , 0.81 ) (x_2,y_2)=(0.9,0.9)-0.05(1.8,1.8)=(0.81,0.81) (x2,y2)=(0.9,0.9)0.05(1.8,1.8)=(0.81,0.81)

如果你反复运行100次.你会得到
( x 100 , y 100 ) = ( 2.65614 e − 05 , 2.65614 e − 05 ) (x_{100}, y_{100})=(2.65614e-05, 2.65614e-05) (x100,y100)=(2.65614e05,2.65614e05)

这个点已经很接近(0,0)了.可见梯度下降算法的确找到了这个局部最有解.当然我们给出的函数实际上是一个凸函数.所以你可以很容易的得出.这个局部最优解就是全局最优解.当然梯度下降算法的停止条件是两次迭代之间的误差小于某个范围.那么我们来看看迭代的时候点的轨迹运动是怎么回事?

在这里插入图片描述

我们再看一个稍微复杂一点的函数.这个函数图象为 f ( x , y ) = C o s ( y ) S i n ( x ) f(x,y)=Cos(y)Sin(x) f(x,y)=Cos(y)Sin(x)

我们出发点为(1.0,0.5)
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值