Coursera 机器学习 -- Gradient Descent 笔记【第一周】

Gradient Descent(梯度下降算法)

————————本章讲的是数学上的定义———————————-
首先来看一张图:

这里写图片描述

可以把这个图看成一个山,如果我想要下山,我的小碎步应该从那个方向下山?看看周围,会自己找到下山的最佳路线,重复以上动作,你会以最快的速度下山。直到局部最低点。这则是梯度下降的生动比喻。

这种算法有个有趣的点,如果我们初始化的时候向右边移动一点点,会发现另一条路线。如下图:

这里写图片描述
以上就是梯度下降的一个特点。初始化位置不同,局部最优解也不一样。

下面来说下梯度下降的算法公式(字幕忽略):

这里写图片描述

:= ,学过编程的同学都比较好理解,就是和+=类似的原理。
a是一个数字,被称为学习速率,它控制了梯度下降下降中,下山的步子大小。
a后面的函数项是一个微分项,后面会讲到如何推到出来的。
需要注意的一点是:
梯度下降要同时更新θ0和θ1,更自然的说法是同步更新。
这里temp0,temp1是临时变量,为了暂存用的,目的是为了同时更新θ0和θ1,每次更新将temp0和temp1同时赋值给θ0和θ1。

如下图,则是另一种算法,而不是人们所指的梯度下降算法,因为他没有同步更新:
这里写图片描述

Gradient Descent Intuition(梯度下降知识)

如图所示:

这里写图片描述

a代表的是学习速率,后面粉框标记的是导数项

下面这张图讲的是导数项的意义:

这里写图片描述
上图上半部分表示:
关于J(θ1)的函数
假设从θ1,已经对它进行了初始化,从这个点出发,梯度下降要做的是不断更新
θ1:=θ1-a*d/dθ1J(θ1)
d/dθ1J(θ1)这一项是导数,与θ1这个点曲线相切,红色直线的斜率就是这个导数项。斜率可以从图中看到是正数,所以导数项大于等于0,有了下面的公式:
θ1:=θ1-a*(positive number)
θ1减去一个正值,所以θ1会不断减小。
结论:θ1作为x轴坐标是不断向左移动,直到最低点。

而上图下半部分表示:
d/dθ1J(θ1)这个导数项也就是红色线的斜率是负值,导数项小于等于0,所以教授简写成了:
θ1:=θ1-a*(negative number)
θ1减去一个负值,所以θ1会不断增大。
结论:θ1作为x轴坐标是不断向右移动,直到最低点。
以上很直观的解释了导数项的意义。

下面讲解a的理解,如下图:

这里写图片描述
上图上半部分:
如果a(学习速率)太小,梯度下降会变得很慢,就像上半部分的图中一样,可以想象成下山,小碎步下山,要很多部才能到达山下。

上图下半部分:
如果a(学习速率)太大,梯度下降可能会越过最低点,甚至可能无法收敛。可以看下半部分的中,直接从左边跨到了右边,又从右边跨到了左边,以此循环,离最低点越来越远,导致无法收敛,甚至分散。就是跳过了最低点。

如果我们把θ1放在局部最低点,会怎么样呢?
如下图:

这里写图片描述

θ1在最低点:θ1:=θ1-a*0,因为最低点时,与点相切的斜率是0,这意味着新的θ1等于原来的θ1,因此如果你的参数已经处于局部最低点,那么梯度下降更新其实什么都没做,它不会改变参数的值。

下面的图例解释了为什么即使学习速率a保持不变时,梯度下降也可以收敛到局部最低点。
这里写图片描述

上图是一个代价函数J(θ)
首先,找到它的最小值,需要先初始化梯度下降算法,从右边品红色的点开始,如果更新一步梯度下降,它会走到绿色的点,因为这个点的导数是相当陡的,现在绿色的点在更新一步,你会发现导数,即斜率没有那么陡了,因为相对于品红色的点来说,绿色更接近最低点,导数也越来越接近0,梯度下降一步后,导数项就会变小一点点。最终每一步梯度下降,θ1的幅度也会越来越小,最终收敛到局部极小值。
结论:梯度下降算法更新步伐的同时,越接近局部最低,导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度。实际上没有必要在另外减小a了。梯度下降算法可以最小化任何代价函数J,不只是线性回归中的代价函数J。

Gradient Descent For LinearRegression(线性回归的梯度下降)

本章将Gradient Descent(梯度下降)与Cost Funciton(代价函数)相结合。
下图展示了,用梯度下降的方法最小化平方误差函数(Cost Function):

这里写图片描述

通过上图,我们用梯度下降的方法来最小化平法误差代价函数,将右边的代价函数J(θ0,θ1)公式带入到左边红框的公式中,其中在最早的时候我们说过Hypothesis函数hθ(x)=θ0+θ1X^(i),也将他带入到公式中,得到下面教授手写的图:

这里写图片描述

我们要弄清楚这里的偏导数项是什么?如下图所示:

这里写图片描述

再来一个高清的机打图:

这里写图片描述

从下面图可以了解到,当θ=0时,第一行的公式蓝色框的原导数便是a*J(θ0,θ1)/aθ0
当θ=1时,粉红框对应的原导数项也是下面写的,需要同时更新θ0和θ1.

这里写图片描述

在上一次的博客笔记中,也讲到过下面这个图,是关于代价函数与假设函数对应关系图,左侧Hypothesis函数,右侧Cost Funciton的弓形图,通过右侧的θ0,θ1坐标可以画出Hypothesis函数的直线。

这里写图片描述

 -------分割线------

这里写图片描述

最终,随着梯度下降自动改变参数,右侧的图会越来越找到最适应的点,也就是最小值,来达到使hypothesis接近拟合数据集。就如左侧的房价-平米图一样.


以上,便是梯度下降对于线性回归的使用方式!这也是第一个在机器学习中学习到的算法,线性回归。

总结

梯度下降在线性回归方程中,求的是线性回归方程中的θ0,θ1的最小值,一定要同时更新这两个参数来进行梯度下降,而在梯度下降算法中的偏导数前面的a学习速率来说,不一定修改它的值,梯度下降也可以自动去进行最小化求解。而下面这个公式是梯度下降的核心:
这里写图片描述
其实这里本身还是有些不太明白的,θ0的后面的求导可以理解,因为是讲2次幂与原来的CostFunciton的1/2进行了相乘,所以消去了2,同时2次幂减一得到θ0的梯度下降式子,但是θ1的梯度下降式子后面的那个x^(i)并没有想明白是怎么来的。。。这里还需要后续在查阅相关资料才行!大学学的高数都还给老师了….╮(╯▽╰)╭

展望结语

希望自己能坚持下去把。。今日打卡,滴滴滴!下一次的博客是线性代数的复习笔记!
             已经在奔往机器学习的路上——!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值