机器学习笔记——线性拟合及梯度下降

线性拟合

从这里开始,给出dataset,找出一条直线拟合,因为使用一条直线去拟合,所以叫做线性拟合。
在这里插入图片描述
我们要找出这条曲线的表达式来表征这条直线,如下:
这个是我们的假设函数:在这里插入图片描述

在这里插入图片描述
我们最终是要求出上面表达式中的未知数:
在这里插入图片描述

为求出这两个参数,我们构造函数:
如下图,
在这里插入图片描述
其中的:
在这里插入图片描述

就是常说的代价函数。代价函数有很多中,我们这里使用的代价函数,其实就是 最小二乘法。因为使用最小二乘法对于解决回归问题,是最常规的一个手段。

为什么要构造代价函数

(1)从特殊情况:过原点的直线看起,只有一个参数的情况

在这里插入图片描述
上图左图是我们要求的,因为有两个参数,相对复杂,我们就从右边的情况,过原点的直线,只有一个参数,相对简单,看起。
当theta=1时,代价函数的值为0;在这里插入图片描述
当theta=0.5时,代价函数的值约为0.58;
在这里插入图片描述
继续,当theta=0时,代价函数的值约为2.3;
在这里插入图片描述
如果继续给theta赋值,可以得到下面作图的结果,连起来,得到有图的样子,
在这里插入图片描述
可以看到,这个代价函数对应的图像是一个凸函数的形状,图像中可以看到,图像最低值,就是假设函数拟合最好的情况:
在这里插入图片描述
这个时候,其实就是代价函数导数为零的时候。也就是说,在线性拟合中,要使得假设函数拟合图形最好,只需使我们的代价函数导数为零时,取得theta值,即为最合理情况。

我们回头再看一下:
在这里插入图片描述
上图中我们可以看到,左图中不同颜色的直线,在右图中对应的代价函数的值的变化趋势,

(2)从非特殊情况:不过原点的直线看起,有两个参数的情况

如下图:
在这里插入图片描述
此时有两个参数,在二维空间中,代价函数的图像其实也是一个凸函数的形状,
在这里插入图片描述
但是其实这是不完全的,因为有两个参数,在三维空间中的显示是更合理的,如下:
在这里插入图片描述
注意:因为要求两个参数,所以要同时更新这两个参数,注意是同时更新,在后面的梯度下降中这点很重要。
改变两个参数的值,3D图中曲面的高度(就是代价函数的值)也会随之改变
在这里插入图片描述
结合前面的理解,我们要找凸函数的最低点,就找到了假设函数中拟合最佳的未知参数的值,如下:
在这里插入图片描述
我们这里的思路是一样的,找到这个3D空间中曲面的最低点,也就找到了这两个参数的最佳值,也就找到了最佳拟合直线。
我们这里利用等高线来帮助理解:
在这里插入图片描述
右侧等高线图中,如品红色标志的三个坐标点,都在淡绿色的等高线中,等高线中意味着淡绿色的线上的值都是一样的,也就意味着代价函数在这条等高线的值是相同的。在3D图中意味着对应的 theta0 和 theta1是唯一的,在左侧的二维图中,也由theta0 和 theta1对应着唯一的直线。
如图中,theta0约等于800, theta1约等于-0.15,在左图中 ,可以看到个直线就是一条斜率为-0.15,过Y轴上(0,800)的点的直线,这和我们最初要求的假设函数是不是对应起来了?只不过,图上明显可以看出,这个条直线并不是拟合最好的,是吧?
在这里插入图片描述
看到这里,是不是有一点感觉了?好的,让我们继续。

在这里插入图片描述
结合之前说的,在3D图中找到曲面最低点就找到拟合直线的最优解了,在等高线图中,我们就要找中心点了。就是上图右侧中间圆圈的中心了,为什么这么说?我们来看几个例子也许请清楚一些:
示例(a)
在这里插入图片描述

示例(b)
在这里插入图片描述

示例(c)
在这里插入图片描述
从上面的例子中我们可以看出一些苗头:
那就是为了使求出的直线尽可能好的拟合数据点,我们在等高线中就要尽量找到等高线中心得点,如下图?
在这里插入图片描述
但是怎么通过算法能够达到使我们的计算过程趋于等高线中心?
接下来,进入第二个重点:

梯度下降法

从一张图片开始
在这里插入图片描述
上面这张图可以看作是两座相邻的山头,其中一座山头上有个人(图中十字坐标点),这个人想要以最快的速度下山的话,那这个人必然是沿着当前位置在这座山最陡峭的方向往山下走,分解开来就是:第一步,先看周围,哪个方向最陡峭,然后往这个最陡峭的方向走一步,然后在看哪个方向最陡峭,然后再往这个最陡峭的方向走一步,继续看继续走,然后就走到山下了:
在这里插入图片描述
当然了,并不是所有的答案都是一样的,这和这个人最初站的位置有关系,站的位置不一样,结果自然也是不一样的,如下:
在这里插入图片描述
两次的起始点不一样,下山的方向也就不一样。
看看后面的数学含义:

梯度下降法数学含义

在这里插入图片描述
这里涉及到偏导数,涉及到微积分的知识。
先理解一下导数的含义:
对于过原点的直线的情况,就是只有一个未知参数的时候,右侧代价函数的横轴坐标值就是对应曲线上点的斜率,就是切线。
在这里插入图片描述
随着右侧曲线中横坐标的值的变化,对应的左侧的直线的斜率的变化,直到右侧曲线取到最小值(也就是代价函数的导数为零时),此时左侧对应的直线是拟合最好的情况。
那么在代价函数中是如何构造函数达到使更新的直线斜率更好的拟合数据的呢?也就是说,在右侧曲线中,是如何做到使横坐标的取值趋于曲线最低点?

梯度下降法下降方向的选择实现

看下图:
在这里插入图片描述
在曲线右侧时,求得的斜率是正值,theta1减去一个正数,theta1是减小的,下一步theta1就会往左边移动,也就是theta1在往曲线的最低点走;
同样的:
在曲线左侧时,求得的斜率是负值,theta1减去一个负数,theta1是增大的,下一步theta1就会往右边移动,也就是theta1在往曲线的最低点走;
特殊情况:当初始点就在最低点时,是什么情况?
在这里插入图片描述
来看代价函数,最低点时,此时代价函数的导数为零,那么更新的时候,theta1-0=theta1。此时theta1是不变的,这也就说明了,当找到最优点的时候,该算法已经停止计算了,完全符合代价函数设计初衷。
是不是优点豁然开朗的感觉?
有,那就对啦,接下来看最后一个重点,就是,知道了方向,每次要走多大的步子?

梯度下降法的学习率(每一步走多大?)

在这里插入图片描述
如上图:每次走的时候,走多大是和对当前点的斜率(就是导数)有关,因为这个导数值要参与到下一步的步长的计算的,这个过程中,随着theta1的值不断趋于曲线中心,得到的导数值是越来越小的,那么下一步的步长自动就缩小了,这是代价函数收敛的一点原因;
另外,还有一个重要的参数:α,就是学习率,通俗一点就是步长。每次走多大,α小了,到最低点的时间太长,大了,可能就把最低点跨过去了,结果就是可能不收敛(non-convergence)。这个α的值是编程者初始设置的,值得大小直接影响最后的算法效率和结果:如下图
在这里插入图片描述
到了这里,是不是基本明白了梯度下降法的算法?
最后这里要注意的是:
对于过原点的直线的梯度下降法因为只牵扯到一个未知数,直接求导数就可以了;
在这里插入图片描述
对于不过远点的直线呢?
在这里插入图片描述
这个时候是由两个未知数的:
在这里插入图片描述
其实和前面一个参数更新导数的时候思路是一样的,只不过,前面只更新一个导数,而这里要同步更新两个偏导数。如下图:
在这里插入图片描述
这样的话,最后找到使代价函数最小的theta值,那么也就找到了拟合数据点最好的直线了。

批量梯度下降法

最后说明一点,我们这里使用的梯度下降法,因为每一次计算都将所有的数据点参与到了计算中,类似于整批整批的运算,所以这里使用的方法也叫做“批量梯度下降法”。
在这里插入图片描述

所以还有其他的梯度下降法只是取参与运算的数据点的样本的取法不同,有兴趣的可以自己参看。
PS:此学习笔记为学习斯坦福吴恩达机器学习视频笔记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值