[机器学习3]参数学习

来源:互联网 发布:红蜘蛛电子教学软件 编辑:程序博客网 时间:2024/04/29 17:44

原文:

1.https://www.coursera.org/learn/machine-learning/supplement/2GnUg/gradient-descent

2.https://www.coursera.org/learn/machine-learning/supplement/QKEdR/gradient-descent-intuition

3.https://www.coursera.org/learn/machine-learning/supplement/U90DX/gradient-descent-for-linear-regression

1.梯度下降

对于一个假设函数,需要一种方法来衡量它如何适应数据。 现在我们需要估计假设函数中的参数。 这就是渐进下降的地方。
想象一下,我们基于它的场θ0和θ1来绘制我们的假设函数(实际上我们将成本函数绘制为参数估计的函数)。 我们不是绘制x和y本身,而是我们的假设函数的参数范围和从选择一组特定参数导致的成本。
我们把θ0放在x轴上,θ1在y轴上,成本函数在垂直z轴上。 我们图上的点将是使用我们的假设与那些特定的θ参数的成本函数的结果。 下图显示了这样的设置。


当我们的成本函数处于图表中最底层的时候,即当其值是最小值时,我们就知道我们已经成功了。红色箭头显示图中的最小点。

 

我们这样做的方式是通过使用我们的成本函数的导数(函数的切线)。切线的斜率是这一点的衍生物,它将给我们一个朝向的方向。我们以最快下降的方向降低成本函数。每个步骤的大小由参数α确定,这被称为学习速率。

例如,上图中的每个“星”之间的距离表示由我们的参数α确定的步长。较小的α将导致较小的步长,较大的α导致较大的步长。采取步骤的方向由J(θ0,θ1)的偏导数确定。根据图表开始的位置,可能会在不同的地方出现。上图显示了两个不同的起点,最终出现在两个不同的地方。

梯度下降算法是:

重复直到收敛:


j = 0,1表示特征索引号。

 

在每次迭代j中,应同时更新参数θ1,θ2...,θn。 在第jth)个迭代之前计算另一个参数之前更新一个特定的参数会导致错误的算法。


2.梯度下降示例

使用一个参数θ1并绘制其成本函数来实现梯度下降的情况的单参数公式是:

重复直到收敛:


不管d /dθ1J(θ1)的斜率符号,θ1最终收敛到其最小值。 下图显示当斜率为负时,θ1的值增加,当为正时,θ1的值减小。


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


梯度下降如何以固定的步长α收敛?

 

收敛背后的直觉是当我们接近凸函数的底部时,d /dθ1J(θ1)接近0。 至少,导数将始终为0,因此我们得到:



3.线性回归的梯度下降

当具体应用于线性回归的情况时,可以推导出一种新形式的梯度下降方程。 我们可以用我们的实际代价函数和我们的实际假设函数来代替:


其中m是训练集的大小,θ0是与θ1同时变化的常数,xiyi是给定训练集(数据)的值。

 

注意,我们将θj的两个情况分离为θ0和θ1的单独方程;而对于θ1,我们由于导数而在结尾处乘以xi。 以下是单个示例的∂/∂θjJ(θ)的推导:


如果我们从猜测我们的假设开始,然后重复应用这些梯度下降方程,我们的假设将变得越来越准确。

 

因此,这只是原始代价函数J的梯度下降。该方法查看每个步骤的整个训练集中的每个示例,称为批量梯度下降。 注意,虽然梯度下降一般可以容易受到局部极小值的限制,但我们在此提出的线性回归的优化问题只有一个全局,没有其他局部最优;因此梯度下降总是收敛(假设学习速率α不是太大)到全局最小值。 的确,J是一个凸二次函数。 这是梯度下降的示例,因为它运行以最小化二次函数。


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