python拟合反比例函数_基于梯度下降算法的线性回归拟合(附python/matlab/julia代码)...

梯度下降

梯度下降法的原理

梯度下降法(gradient descent)是一种常用的一阶(first-order)优化方法,是求解无约束优化问题最简单、最经典的方法之一。

梯度下降最典型的例子就是从山上往下走,每次都寻找当前位置最陡峭的方向小碎步往下走,最终就会到达山下(暂不考虑有山谷的情况)。

首先来解释什么是梯度?这就要先讲微分。对于微分,相信大家都不陌生,看几个例子就更加熟悉了。

先来看单变量的微分:

2e415ae42ef749e9f0757f524fbe8f22.png

再看多变量的微分:

d1e109b3026ace42626303aefd57ebc3.png

补充:导数和微分的区别

导数是函数在某一点处的斜率,是Δy和Δx的比值;而微分是指函数在某一点处的切线在横坐标取得增量Δx以后,纵坐标取得的增量,一般表示为dy。

梯度就是由微分结果组成的向量,令

8d4e358e86f1542a4805b3ca2ee44484.png

ae4d334becc42a1a966cada8b5ace1ea.png

那么,函数f(x,y,z)在(1,2,3)处的微分为

1da897a485dd9eb48bfea24bd6965fb2.png

因此,函数f(x,y,z)在(1,2,3)处的梯度为(6,11,6)。

梯度是一个向量,对于一元函数,梯度就是该点处的导数,表示切线的斜率。对于多元函数,梯度的方向就是函数在该点上升最快的方向。

梯度下降法就是每次都寻找梯度的反方向,这样就能到达局部的最低点。

那为什么按照梯度的反方向能到达局部的最低点呢?这个问题直观上很容易看出来,但严禁起见,我们还是给出数学证明。

对于连续可微函数f(x),从某个随机点出发,想找到局部最低点,可以通过构造一个序列ef2f165e181ac09ffaf54b884e3d78a5.png,能够满足

cae778fb91e2acbb4ba3bb9b502f3578.png

那么我们就能够不断执行该过程即可收敛到局部极小点,可参考下图。

48e5ef2e0fd175c6871f1dc3ca54359e.png

那么问题就是如何找到下一个点eb90ffaa5fdbefef4a6602bbff74a394.png ,并保证e36c48979be272e995acb4057470de83.png呢?我们以一元函数为例来说明。对于一元函数来说,x是会存在两个方向:要么是正方向(ba3ffc73a876ffb43ad0aebfa14e924b.png ),要么是负方向(6d276734c00fd2018069b7991bdf9543.png ),如何选择每一步的方向,就需要用到大名鼎鼎的泰勒公式,先看一下下面这个泰勒展式:

3f13c27094d3513b7a248dc176f83af8.png

其中882a0d499ad9b9708e1ed045f610ce07.png表示f(x)在x处的导数。

若想3c73442a78c61673cbd8b8ef5fb3addc.png,就需要保证affe73aa80359715afbaa7159dd7a65a.png,令

645f73d1eb3072fbef270225ca1c1ce5.png

步长83290cc99fd403ac3c534d6d353556d7.png是一个较小的正数,从而有

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值