程序员的机器学习笔记-第四篇 梯度下降

        我们在上一篇笔记中使用最小二乘法得到的目标函数是一个形式简单的2次函数,它是一个凸函数,对它的各个参数求偏导并令偏导为0后得到的是一个线性方程组,如果这个线性方程组存在唯一解那么求解这个线性方程组就要求解X转置乘X的逆矩阵,但是在实际中X转置乘X不一定可逆,而且即便逆矩阵存在,当矩阵的维度很高时求解解析解也是极为耗时。另一方面,在其它一些复杂的模型中,目标函数并不是2次函数,那么令偏导为0后得到的方程组可能是非线性方程组,使用计算机并不能很方便地直接求解这个非线性方程组。

        由于上述的原因在机器学习中经常放弃求解解析解,而使用计算机擅长的迭代计算的方式去逐步地逼近目标函数的局部最优解,当目标函数是凸函数时,局部最优解也是全局最优解,在机器学习中目标函数就是损失函数。

        这篇笔记要介绍的梯度下降法就是这样一种迭代算法。所谓函数F(x)在a点的梯度是指F(x)在a点的偏导数组成的向量,例如,如果F是一个二元函数,即F = F(x, y),且F在其定义域内具有一阶连续偏导数,则对于其定义域内每一点(x', y')其梯度∇F(x', y')为:

        梯度是一个向量,向量是有方向的,所以梯度有时也称梯度方向,沿着梯度方向函数值增长最快,沿着负梯度方向(梯度相反方向)函数值下降最快。梯度下降算法的依据是:

        如果函数F(x)在点a处可导,那么F(x)在a点沿着负梯度的方向-∇F(a)下降最快。F(x)在a点沿着负梯度方向前进一小步到达一个新的点再沿着新的点的负梯度方向前进一小步,重复这个步骤,直到到达F(x)的最小值点处。

        下面我们结合线性回归模型来看看梯度下降算法的执行过程。先看看最简单的单变量的情况,在单变量线性回归模型中,模型可以表述如下:

        假设函数:

        为了和参考资料中的标记保持一致,这里使用θ作为参数标记,上一篇笔记中用的是w,实际上标记符号是什么无所谓。

        损失函数:

        损失函数是参数θ0和θ1的函数,是二元的,我们的目标是找到损失函数取最小值时θ0和θ1的值,即:

        目标:

        算法:我们解决这个最优化问题所采用的算法是梯度下降算法,总体步骤为:

        1. 任意给定θ0和θ1的初始值,以及一个给定的步长𝛼;

        2. 朝着负梯度方向不断修改θ0和θ1的值直到达到最优值点(或其附近)。θ0和θ1每次修改的增量是负梯度向量中对应于θ0或θ1的分量与步长𝛼的乘积。

        对于二元的目标函数,上面的步骤可以描述如下:

        repeat until convergence的意思是“重复直到收敛”,也就是重复大括号里的值更新操作直到J(θ)达到最小值。迭代公式中的𝛼为每一次迭代的步长,在机器学习中称为学习率。J(θ0, θ1)对θj的偏导即为梯度向量中对应于θj的分量。

        形象化解释梯度下降:

        我们可以结合下图来形象化地理解梯度下降的过程。下图为任意二元函数J可能的函数图像J(θ0, θ1),我们需要找到这个函数J的一个局部的最小值。首先任意找一个点,比如下图中的黑点:

        选定一个初始点后,朝着这个点的负梯度方向前进一步到达一个新的点,重复这个过程,持续朝负梯度方向前进,最终到达函数J的一个局部最小值,其轨迹可能如下:

        我们可以把这个过程形象地想象成下山的过程,初始点即为你在山上站的初始位置,然后你环顾四周,找到了一个下山最快的方向,然后朝这个方向迈了一步,你一直重复这个过程直到到达山脚下。

        从上面的图我们可以看出下山的路径应该是和初始位置有关的,即,选定不同的初始点,梯度下降法可能会收敛到不同的局部最优值,如下所示:

        一般而言这种情况的确是有可能的,但是对于线性回归中的J(θ0, θ1)来说不会存在不同的局部最优值,因为J(θ0, θ1)是均方误差的形式,它是一个凸函数,只有一个唯一的最优值,其形状如下:

        所以,对于线性回归中的均方误差损失函数来说,无论选取何初始点最终都会收敛到相同的最小值处。

        在这里还要提及两个要点:

        要点一:同时更新

        通过上一篇笔记,我们知道,J(θ0, θ1)对θj的偏导数如下:

        代入到算法中,可得:

        注意到h(x)是θ0和θ1的函数:

        所以,在更新θ0和θ1的值的时候是需要用到更新前的θ0和θ1的值的,需要注意的是,在一次迭代中θ0和θ1的值是同时更新的,θ0和θ1的新值都是基于θ0和θ1的更新前的值来算的,而并不是算完θ0后用新的θ0来计算θ1。

        要点二:学习率

        如果学习率𝛼太小,梯度下降的收敛过程可能会很慢,因为学习率𝛼过小的话梯度下降的迭代次数会增多。

        但是,学习率𝛼也不能太大,如果学习率太大,梯度下降的过程可能会越过最小值,那么梯度下降过程可能无法收敛。

        这两种情况如下图所示:

𝛼的大小对梯度下降过程的影响

        还有一个问题,如果我们设定了一个学习率后,需要随着迭代过程不断调整学习率的大小吗?答案是,不需要。学习率不需要在每次迭代中改变,固定的学习率也可以保证收敛,因为越接近最优值时梯度越小,梯度与学习率的乘积也就越小,对x的更新也就越小。也就是说,接近最优值时,梯度下降会自动地使用较小的增量,如下图所示:

        但是,记住,学习率不能太大,太大的学习率可能导致梯度下降无法收敛。

        最后,对于单变量线性回归的梯度下降,我们来可视化地看看其过程。首先介绍一下等高线图,我们已经知道单变量线性回归中的损失函数J(θ0, θ1)的形状如下:

        想象一下,如果我们用一系列平行于θ0θ1平面的平面沿着纵轴去截函数J(θ0, θ1)的曲面,那么这些平面与函数J(θ0, θ1)的交点为一系列的椭圆曲线,同一个椭圆上的所有点对应的函数值J都相等,而且椭圆越大,对应的函数值J越大,椭圆越小J值越小,我们把这些椭圆曲线垂直投影到θ0θ1平面,得到如下的等高线图,图中同一个椭圆上的所有(θ0, θ1)点对应的J(θ0, θ1)值相同,不同的椭圆上的点的J值不同,椭圆越大J越大,椭圆越小J越小,中心点处J最小:

        现在假设我们要使用线性回归模型来根据房屋面积来预测房价(显然这不是一个很好的模型,这里只是用于说明梯度下降的过程),我们的训练数据集中的样本为(面积,售价)数据对。下面的这些图中,右边的坐标图为J(θ0, θ1)的等高线图,图中的红色x点,为某次迭代中θ0和θ1的取值。左边坐标图的横坐标为面积,纵坐标为售价,图中的散点为训练数据集中的样本点,图中的蓝色直线为θ0和θ1取右图中红色x点的值时对应的h(x)=θ0 +  θ1x的函数图像。

        下面的每个图对应了梯度下降过程中的一次迭代,对于每次迭代,右图确定了一个θ0和θ1,左图显示了对应这个θ0和θ1时的h(x)的图像。从下面这些图我们可以看到,随着梯度下降过程的进行,θ0和θ1不断地朝着J(θ0, θ1)值减小的方向更新,对应的h(x)对训练数据集的拟合程度也越来越好,最后梯度下降收敛在J(θ0, θ1)的最小值处,此时的θ0和θ1为最终的模型参数,得到的h(x)与训练数据拟合度最高,损失最小(训练误差最小)。

第一次迭代,初始θ0和θ1
第二次迭代
第三次迭代
第四次迭代
第五次迭代
第六次迭代
第七次迭代
第八次迭代


第九次迭代

        在这篇笔记中我们了解了梯度下降算法,以及它在线性回归模型中的用途,还可视化地理解了梯度下降及其在单变量线性回归中的执行过程。关于梯度下降还有一些内容没有提及,将放在下一篇笔记中讨论。


参考资料:

Andrew NG 《Machine Learning》课程。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,646评论 4 366
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,979评论 1 301
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,391评论 0 250
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,356评论 0 215
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,740评论 3 293
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,836评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,022评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,764评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,487评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,728评论 2 252
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,200评论 1 263
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,548评论 3 260
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,217评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,134评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,921评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,919评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,766评论 2 274

推荐阅读更多精彩内容