梯度下降算法详解

写在前面

梯度下降算法是机器学习中最重要的“利剑”之一,可能大家已经对于其思想了熟于心了,心想梯度下降不就是先随机初始化一组参数w然后计算损失函数对参数的梯度g再按w_new = w - r*g(其中r是学习率)进行计算就行了鸭。但不知道你有没有想过如下几个问题:
1.为什么要按梯度的反方向进行计算?
2.为什么学习率不能设置太大?
如果你有这些困惑的话,相信你读完这篇文章应该会有所启发,那就现在开始吧!

梯度下降算法的数学支持

首先我们知道梯度下降算法的目的是为了找出一组参数能让损失达到最小,如下所示,我们先随机初始化一个参数θ0,希望经过下一次的计算后可以minL(θ),这里的L是指损失函数。
在这里插入图片描述
当然我们的高数课本曾经教导过我们,这个世界上任何一个在展开点附近任意阶可导函数都可以用泰勒展开式展开:
在这里插入图片描述当(x,y)如果无限逼近(x0,y0)时,函数可以简化为:
在这里插入图片描述
因此对于我们需要解决的损失函数,如果能满足θ无限逼近(a,b)我们就可以把损失函数写成如下形式,而θ无限逼近(a,b)也就是要保证学习率尽可能的小,如果学习率很大离初始点非常远我们就不能保证该简化是正确的。
在这里插入图片描述
对于上式而言s,u,v均可以视为常数,我们令△θ1 =(θ1 -a),△θ2 =(θ2 -b),现在要做的就是找出一组(△θ1,△θ2)使其能让L最小,对于常数s而言我们已经无力回天,那我们只能尽可能让后面两项最小,这时候高等数学又告诉我们了,**只有当(△θ1,△θ2)与(-u,-v)方向相反且长度差不多时,才能让其点乘积最小,**这里控制其长度的就是我们的学习率。

在这里插入图片描述
通过上面的分析可知,只有当(θ1,θ2)=初始点-该点梯度的反方向*学习率时才能使损失函数L达到区域内最小。
在这里插入图片描述
最后,对于梯度下降算法在实际使用中为了能更稳定和快速一般需要从以下几个方面进行改进:

  1. 设置合适的学习率,据我的实践经验来看学习率一般设置为e-3会比较合适,当然了不同的问题肯定设置的方法也是不同的,一般都需要经过多次尝试才能找到比较合适的学习率。
  2. 使用随机梯度下降会更快的找到最优解。
  3. 推荐使用学习率衰减或者Adagrad(针对每一个参数有不同的衰减率)之类的带有学习率衰减的梯度下降算法。
  4. 特征归一化,防止由于特征规模不同产生的影响
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值