新手入门梯度下降法(从高数角度而不是线代角度)

1、吐糟

笔者也是刚刚接触到机器学习,在b站搜索大佬们讲机器学习的视频,可能他们讲的真的很好,但是对于我来说一上来就是理论(特别是数学杀我),成妾真的听不懂哇!!!经过几天的学习,总算对梯度下降这个知识有点儿自己的理解了,现在分享给大家,有理解不到位的地方,欢迎大家纠正

2、开始学习啦

1、首先,我们要知道梯度下降是线性回归中的一个算法,那么什么是线性回归呢?其实很简单我们高中就学过,举个例子

请添加图片描述
在高中我们学过类似的知识点,给你一堆数据x和y然后让你找到一条合适的y=kx+b来拟合这些数据,想起来啦叭,结果类似于这样
在这里插入图片描述
其实线性回归要做的就是找到这么一个函数来进行数据的拟合,但是这样的直线我们不可能直接找到的又或者说找到一条最合适的(因为可能有很多条)
在这里插入图片描述
那么我们该如何衡量那一条是最合适的呢?很简单用一个损失函数就可以
在这里插入图片描述
别看括号里面那么复杂其实就是y(预测值)-真实值而已,然后平方和除以n,这个结果越小说明拟合的越好,
这个时候可能有同学会很聪明的想到,这还不简单直接把m和b看成变量,然后求导,让倒数等于0不就可以得到让损失函数到达极小值点的m和b的嘛! 确实当时我也疑惑这个问题,但是我们现在这个函数很简单,可以这样,但是如何这个函数在极值点不可以求导呢(倒数不存在),或者这个函数很复杂该怎么办?
所以我们有了梯度下降法来求m和b,记住我们的目标是求m和b,那么梯度下降到底是干什么呢?步骤是啥?

3、 让我们继续学习!!!

首先为了让我们更好的理解,这个我们固定m=0,只看b
在这里插入图片描述
通过上述数据大家可以发现当b增加到241左右时基本就接近了损失函数的极小值点,我们现在可以肉眼看见当b=100的时候我们知道增加b来靠近241这个点,当b=300的时候我们知道,减小b来靠近 241这个点,但是计算机该怎么知道呢?这个时候就要用这个公式来变化b,b=上一次的b 减去 学习率乘以损失函数对b的偏导
为什么是减呢?假如当前b=1,那么这个时候b的偏导等于-488,但是我们想让b往x轴的右边移动(靠近241),所以要减;又假如当前b=361,这个时候偏导等于231,但是我们想让b往x轴的左边移动(靠近241),所以是减
综上是减号
其次为什么要乘一个学习率呢(其实就是一个数来控制下一次的b变化多点还是小点,一般取的比较小,例如这里我们取0.2),假如b=501,这个时候偏导数很大,很显然这个点离极小值点还很远(极小值点附近导师很定接近0),所以我们乘以一个数来控制b的变化更快的接近241,假如b=240,这个时候偏导数已经很接近0了,所以一个很小的数乘以一个很小的数,只会更小,这个时候自然也依然是慢慢的接近241
所以这其实就是梯度下降的思想,慢慢靠近极小值点,我们可以设置一个条件例如偏导数绝对值小于0.5时,对应的b就是我们想要的就可,这样我们就可以得到b啦!

4、接下来我们把m考虑进来

在这里插入图片描述

其实思想是一样的也是对m求偏导,然后迭代更新m=上一次的m 减去 学习率乘以损失函数对m的偏导

可能有同学会说啦,我们这个例子只有房屋面积一个变量丫,要是还有房屋的位置、几室几厅这种影响因子怎么办,其实这个时候我们可以把式子写成y=k1x1+k2x2+k3*x3+b
同样的道理来分别求k1,k2,k3,由于这样子一个一个求k1,k2,k3会慢很多,所有等我慢慢学深入后就会发现都是通过矩阵来计算的直接把k1,k2,k3同时计算出来。
所以说起来挺高大上其实就是求变量而已。

5、结束语、最后就是对于我们刚入门的小白来说,我感觉还是不要一头转进理论和大量的数据,可以敲简单的示例代码和用少量的数据来跑,从而慢慢的理解相应的知识,积累多了后,后面会慢慢的融会贯通,还有就是刚开始学习确实很容易迷茫和被难倒,但是我们不要轻易放弃,慢慢的学,等有感觉后,学起来就顺手啦

让我们一起加油!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值