机器学习3——梯度下降法剖析

本文基于吴恩达课程,深入探讨线性模型中梯度下降法的原理,详细解释了房价预测模型中使用的梯度下降法,包括评估函数定义、梯度计算及迭代更新过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文依据吴恩达第2节课程,将详细分析一下线性模型中的梯度下降法原理。对课程中公式来源,推导和问题,一一给出解释。以期望对自己学习总结和对他人有些帮助。

按照上一节的总结,选定房价和房间的面积和朝向成线性关系模型,定义 x0=1 x1 为房价的面积, x2 为房间的朝向;其中 x0=1 表示模型中的常数。

定义房价的预测函数

h(x)=hθ(x)=θ0x0+θ1x1+θ2x2=i=02θixi=θTx

使用最小二乘法定义预测好坏的评估函数

J(θ)=12i=0m(hθ(x(i))y(i))2minJ(θ)

其中上标表示第 i 组数据,等价于

J(θ)=12(hθ(x)y)T(hθ(x)y)

其中 xy 是m维度的列向量;注意与上标 x(i)y(i) 区分开。(矩阵)向量和元素一般都是用大小写进行区分。比如写成矩阵的形式如下:

=12(hθ(X)Y)T(hθ(X)Y)

这只是约定的规则而已,只要能区分开向量或元素,个人觉得这不是关键问题,但是为了达成最大共识,按照通用规则书写:矩阵字母大写,向量以及元素以小写字母加上标或者下标。因此采用公式(1),但是一定要注意上下文,以确定向量还是元素。

对评估函数求得极小值,在几何意义上简单而言其过程即:从曲面的某个起始位置按照特定的方向和步长向曲面的某个谷底走去。下面解释一下其含义。

由高中数学已知函数极小值不一定是函数的最小值,但是函数的最小值一定在其某个极小值点或者区间边界上的函数值取得。给定一个光滑的曲面,它包括多个极小值点和极大值点(否则它就是一张平面了),那么从其三维几何上看就存在多个“山峰”和“谷底”。在曲面给定一个起始点,往下降的方向走,每次下降一小步,逐渐迭代就会到达某个谷底。在这里脑海里一定要反思几个问题:(1)选择什么样的起始点?任意呢还是有特殊要求?比如有好坏之分呢?(2)下降的方向如何选择?站在山顶时,360度个下降方向可以选择(3)下降的步长取多大?步长大小有何区别?(4)一定能到达谷底嘛?为什么?如果你知道这些问题的答案,恭喜你数学学的很牛逼,可以跳过下文了,否则继续。对于问题(1)和(4)放到最后回答,它依赖于另外两个问题。首先回答问题(2)和(3)。

要想回答问题(2)(3),需要方向导数,偏导数和梯度的概念。考验大学微(积)分的时候到了。方向导数:函数在指定的方向(矢量)上的变化率;偏导数:多元函数沿坐标轴方向的方向导数。梯度:标量场的一个向量,表示函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。显然,下降的方向应该选择函数梯度方向,步长设为梯度的模;如此函数值下降的速度最快,到达谷底的步数也最少。换言之,求得极小值迭代计算的次数最少,计算量最小。而其他方向和步长也是可选的,但不是最好的。

因此, J(θ) 梯度

J(θ)=Jθ0Jθ1Jθ2

其中

J(θ)θi=θi12j=0m(hθ(x(j))y(j))2=θi12j=0m(k=02θkx(j)ky(j))2=j=0m(k=02θkx(j)ky(j))x(j)i=j=0m(hθ(x(j))y(j))x(j)i=(hθ(x)y)Txi ;i=0,1,2

其中 xi 是数据矩阵的 X 的列向量,即

xiX=(x0,x1,x2)

定义起始值

θ0=[0,0,0]T

迭代算法

θi+1=θiαJ(θ);i=0,1,2,...

其中 α 是用户输入参数,作用于步长,调节其下降速度。 α[0,1] ,当 α=0 时,原定踏步;当 α=1 最快速度迭代。步长较大较小都不好,步子较小会导致迭代次数增加,计算量上升;步子较大会导致迭代次数减少,但是会跳做极值点。因此这个需要实践经验来具体问题具体确定。

然后回头看看问题(1)和(4)。起始值的选定,也需要一定经验。从0起始固然通用,但是计算量会有一定影响。也就说好的起始点会尽量靠近极值点,以减少不必要的计算。此外,不同的起始点可能会进入不同的函数量场的“谷底”或者进入不到“谷底”,因此不同的起始点可能会有不同的结果。最后问题(4)牵涉到算法收敛的证明。这里不证明了,有兴趣请参考《梯度下降法收敛性证明》.

整个过程可以看到数学的简洁和优雅。这就是数学的力量!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值