本文是吴恩达《机器学习》视频笔记第11篇,对应第1周第11个视频。
“Linear regression with one variable——Gradient descent intiuition”
01
—
视频
暂缺,明天补上。或者加作者微信索取,添加方式在文末。
02
—
笔记
2.1 概述
上一个视频给出了梯度下降的数学定义,本次视频更深入一下,看看梯度下降到底是干啥的,以及梯度下降算法更新的意义是什么?
上一个视频中梯度下降的数学定义:
关键是这个
表示学习的步长,表示下降的快慢,而这个偏导数项告诉我们下降的方向。看来这两个东西是比较重要的,这次视频就重点研究一下这俩货。
2.2 直观理解
我们通过一个简单的例子来让梯度下降没那么晦涩。和上一笔记中记录的一样,我们把二维的事情先给放到一维的面上来理解。让 ,代价函数就变成了 ,它是二维平面上的一条曲线,我们要找到曲线的最低点。
我们让 在下图的那个点的地方开始出发,找最低点。
按照上一个笔记中所记录的,我们让 逐步变换,根据所在点的导数指引的方向逐步移动。如下图,当然这个例子我们的起始点是在最低点的右边,它的导数是正的,所以每次变换都是向后移了一点。
如果起始点在最低点的左边呢?如下图。
因为此时,所在点的导数是负数,所以在减去一个负数后,这个点是在向前逐步接近最低点的,而接近的快慢和 有关系。
那如果 太大或太小,会发生什么呢?
太小,如下图,很明显梯度下降的会很慢,想要接近我们的目标点需要耗费很多很多步。
太大,步子太大了呢它容易扯着dan。可能一不小心就过了,然后再回来又过了,就可能一直没法达到我们循环结束的条件了。
那如果我们又想快点收敛,又不想扯着dan,该怎么办呢?通过看上面两个图,很自然想到的办法是前面刚开始的时候我们走快点,等快到目的地的时候我们走慢点,就像打高尔夫一样,开始的时候把吃奶的劲都使上挥一杆,然后再微调。如下图,通过下面图这个特例我们还可以看出来,可以根据导数的大小来调整 的值,我们这样做是因为我们相信快到最低点的时候坡度会变缓(当然这也不绝对)。
2.3 还有个问题
到目前为止,我们有意无意的回避了一个非常关键的问题。那就是,如果我们的初始点在寻找最低点的时候,如果找到的不是全局的点,而是局部的最低点它也会停止搜索,那该怎么办呢?就像下面图中所示。
这种情况到底怎么办呢?本次视频并没有讲,继续耐心往下学习吧。