详解梯度下降的原理及应用【学不会来打我啊】

1引言

最近在接触深度学习方面的相关知识,但是在学习的过程中,经常碰到这个词【梯度下降】,一开始我是真的没搞明白,但是有感觉这个东西又挺重要的,所以就查了很多资料,但是对于小白来讲,很少有解释清楚的,自己在阅读了一些文献和代码之后,对梯度下降有了一些新的理解,特此分享出来,希望对于一些同学有帮助,也希望看完之后点个赞,赠人一赞,手留知识。

2 正文

梯度下降算法呢,他的作用就是用来求函数的最小值,以 y = x 2 + 1 y= x^2+1 y=x2+1这个函数为例吧,显然我们根据所学的知识一眼就可以看出它在 x = 0 x=0 x=0处有最小值,但是对于计算机来说,他可不知道啊!想一想,在 x = 0 x=0 x=0处,有什么特征呢?或者用我们所学知识可以想到,在某一点的导数等于0时,函数在这个点有极值。
对于 y = x 2 + 1 y= x^2+1 y=x2+1这个函数而言,导数 d y d x = 2 x {dy \over dx }=2x dxdy=2x我们可以先随意取一个x的值,如 x 0 = 8 x_0=8 x0=8,那么在这个点的导数值为16,如果我们想减小导数值的大小,即让导数趋近于0,我们只能减小x的大小,但是计算机怎么知道x到底减小多少才合适呢?所以就需要一个迭代的过程,这里就是 x 1 = x 0 − l r ∗ 2 x 0 x_1=x_0-lr*2x_0 x1=x0lr2x0lr是一个超参数,也就是经常说的学习率,这里就取 l r = 0.1 lr=0.1 lr=0.1吧。那么可以得到 x 1 = 0.64 x_1=0.64 x1=0.64,然后再使用公式 x 2 = x 1 − l r ∗ 2 x 1 x_2=x_1-lr*2x_1 x2=x1lr2x1得到 x 2 = 0.512 x_2=0.512 x2=0.512,看到这里有没有发现 x 0 , x 1 , x 2 x_0,x_1,x_2 x0,x1,x2在依次减小,即向着 x = 0 x=0 x=0靠近,经过多次循环以后,x就变为一个非常接近于0的数,此时,在该点的函数值即为函数的最小值。

这里要强调一下,虽然lr的大小是自己取的,但是也不能太离谱,取值过大,如 l r = 3 lr=3 lr=3,你将会发现x的值越来越震荡,最终趋于无穷。取值过小,迭代的会非常慢,需要迭代很多次才行,严重影响效率。

上面讲的是一元函数的情况,如果是多元函数呢?那么就对函数的自变量求偏导才行,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值