3. 参数学习

本人在学习斯坦福大学的机器学习课程,特记录课程概要内容。课程地址: Andrew Ng机器学习课程

梯度下降算法

前面课程我们有了一种方法来衡量假设函数如何拟合数据。现在我们需要估计假设函数中的参数,这就需要梯度下降方法。
想象一下,我们基于 θ0 和 θ1 绘制假设函数(实际上我们将代价函数绘制为参数估计的函数)。我们不是绘制x和y,而是绘制假设函数的参数范围和一组特定参数计算出的代价函数。
我们将θ0放在x轴上,θ1放在y轴上,代价函数结果则在z轴上。所以图上的点是我们使用假设函数和一些特定的 θ
参数计算的代价函数的结果。下图显示了这样的结果集。

代价函数结果集

我们可以知道当代价函数处于图中凹坑的最底部时,即当其值是最小值时,假设函数对数据集的拟合度是最高的。图中红色箭头指示了最小点。
而我们获得最小点的方式是通过计算代价函数的导数(函数切线)。切线的斜率是在切点的导数,它可以给我们指定一个移动的方向。使得我们以最快的下降方向降低代价函数值。每个下降幅度由参数α确定,我们称之为学习速率。
例如,上图中的每个“星”之间的距离表示由参数α确定的步长。较小的α将导致较小的步长,较大的α导致较大的步长。下降的方向则由 J(θ0, θ1) 的偏导数决定。从图上的哪一个点开始,可能会在不同的地方结束。上图显示了两个不同的起点,最终得到两个不同的地方。
梯度下降算法为:
*重复以下步骤直到收敛: *

(j=0,1表示特征值索引)
在每次迭代 j 中,应同时更新参数 θ1, θ2, ..., θn 。在第 j(th) 次迭代计算另一个参数之前更新特定的参数会导致错误。

梯度下降算法 - 解析

我们先讨论一个参数 θ1 的梯度下降情况。公式是:
重复直到收敛:


无论斜率
是多少,θ1 最终都会收敛到其最小值。下图显示当斜率为负时,θ1 的值增加,为正时,θ1 的值减小。

另外,我们应该调整参数α,以确保梯度下降算法在合理的时间内收敛。无法收敛或花太多时间来获得最小值意味着我们的步长是错误的。

梯度下降算法如何以固定的步长α收敛呢?
收敛的结果就是当我们接近函数最底部时,
接近为0,并且最终导数将始终为0。因此我们可以得到:

线性回归的梯度下降算法

当具体应用于线性回归的情况时,可以导出梯度下降方程的新形式。 我们可以用实际代价函数和实际假设函数来代替:
*重复直到收敛: * {

}
其中 m 是训练集的大小,θ0 是与 θ1 同时变化的常数,xi,yi 是给定训练集(数据)的值。
注意,我们将 θj 分为 θ0 和 θ1 的单独方程; 并且对于 θ1 ,由于导数而在结尾处乘以 xi 。以下是单个θ的推导:

如果我们从一个猜测点的假设函数开始,然后重复应用梯度下降方程,那么我们的假设函数将会越来越准确。
这是简单的代价函数J的梯度下降方程。该方法根据整个训练集的实例的计算每个步骤,称为批量梯度下降。请注意,虽然梯度下降一般容易受局部极小值的限制,但我们在此提出的线性回归的优化问题只有一个全局的最小值,没有其他的局部最优;因此梯度下降总是收敛(假设学习速率α不是太大)到全局最小值,因为J是一个二次函数。 这个梯度下降的示例会趋向最小化二次函数。

上图所示的椭圆是二次函数的轮廓图。还显示了由(48, 30)初始化的梯度下降所采取的轨迹。图中的x轴(由直线连接)标记了梯度下降过程中经过的 θ 逐渐收敛到最小值的连续值。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容