梯度下降

梯度下降最小化函数J

使用一个函数J(θ0, θ1),这是一个线性回归的代价函数也许是一些其他函数要使其最小化我们需要用一个算法来最小化函数J(θ0, θ1) 就像刚才说的,事实证明梯度下降算法可应用于多种多样的函数求解所以想象一下如果你有一个函数J(θ0, θ1, θ2, ...,θn )

 你希望可以通过最小化 θ0θn 来最小化此代价函数J(θ0 θn)nθ是为了证明梯度下降算法可以解决更一般的问题但为了简洁起见为了简化符号在接下来的视频中我只用两个参数θ0,θ1,寻找最近的下山方向

 

寻找局部最优解

梯度下降算法定义:

注: :=是复制运算符,a :=a+1将a的值加上1,这里的α 被称为学习速率,在梯度下降中它控制了我们下山买多大的步子,α值很大—下山迈的步子会很大,

是微分项,持续更新。梯度下降算法的核心是重复直到收敛

(后面会说积分公式的推导)

 

梯度下降过程更新:

梯度下降算法:

α代表学习率,控制以多大的幅度更新这个参数θj.第二部分是导数项,

用一个稍微简单的例子 比如我们想最小化的那个函数只有一个参数的情形 所以假如我们有一个代价函数J只有一个参数 θ1,那么可以画出一维的曲线看起来很简单。为什么梯度下降法会在这个函数上起作用?所以假如这是我的函数关于θ1的函数J θ1是一个实数现在已经对这个点上用于梯度下降法的θ1 进行了初始化,想象一下在我的函数图像上从那个点出发那么梯度下降要做的事情是不断更新 θ1等于θ1减α倍的d/dθ1J(θ1)这个项对吧这是一个偏导数这是一个导数这取决于函数J的参数数量我们要计算这个导数,对于这个问题求导的目的 基本上可以说取这一点的切线 就是这样一条红色的直线刚好与函数相切于这一点 让我们看看这条红色直线的斜率其实这就是导数 也就是说 直线的斜率 也就是这条刚好与函数曲线相切的这条直线 这条直线的斜率正好是这个高度除以这个水平长度 现在 这条线有一个正斜率 也就是说它有正导数 因此 我得到的新的θ,θ1更新后等于θ1减去一个正数乘以α.α 也就是学习速率也是一个正数 所以我要使θ1减去一个东西所以相当于我将θ1向左移 使θ1变小了 我们可以看到这么做是对的 因为实际上我往这个方向移动确实让我更接近那边的最低点 所以梯度下降到目前为止似乎是在做正确的事

 

用同样的函数同样画出函数θ1图像,此时斜率为负θ1更新之后会增加,从这个图看出,增加θ1之后,让我更接近最小值,这就是导数项的意义。

学习率α,越大下一次迭代移动步数越大,但是

从公式可以知道,当达到最优解的时候导数为0,θ1:=θ1+α*0,θ1不会再发生改变。α特别小的时候梯度下降很慢,α特别大的时候,会迈出一大步,实际上α值越大会导致无法收敛,甚至发散。

当它到了局部最优解的时候,导数为0,θ1:=θ1+α*0,θ1不会发生变化,梯度下降到达局部最优点。

梯度下降的过程详细介绍:


从最上面红点开始往下降低,导数比较大,相当陡,更新以不梯度下降之后到了绿点,会发现倒数也就是斜率没那么陡了,随着接近最低点,倒数趋向于0,知道最终移动幅度特别的小,所以梯度下降会采取更小的幅度不需要减小α,最终到达局部最低点,最小化任何代价函数。

梯度下降应用-具体拟合直线




偏导项可以简化成

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值