上一节中,咱们讲了梯度降低算法,这一节咱们将要将梯度降低和代价函数结合获得线性回归算法。它能够用直线模型来拟合数据。算法
首先咱们来回顾一下以前的知识点。左侧为梯度降低法,右侧为线性回归模型(包括线性假设和平方差代价函数)。机器学习
咱们要作的就是将梯度降低法应用到最小化平方差代价函数。为了应用梯度降低法,咱们要弄清楚公式中的导数项。函数
当咱们计算完后,咱们将它们代回到咱们的梯度降低算法中。咱们就会获得以下所示的式子。学习
这就是咱们的线性回归算法。注意:在实现算法的时候,咱们要同时更新θ0和θ1。 spa
接下来,咱们看一下梯度降低是如何实现的。在咱们以前的例子中,出现过它容易陷入局部最优的问题。以下图,咱们的起始位置不一样会致使咱们获得两个不一样的局部最优解。orm
可是,线性回归的代价函数老是一个以下所示的弓状函数。blog
这个函数的特色就是只有一个全局最优。当你计算这种代价函数的梯度降低,只要你使用的是线性回归,它老是会收敛到全局最优。由于它并无其余的局部最优解。io
如今咱们看一下这个算法的使用。这里有假设函数的曲线和代价函数J的曲线。bfc
咱们在这个值的参数初始化,如何咱们会获得一条线。方法
若是咱们梯度降低一步,咱们会从这个点往左下方移动一点点。以后咱们会获得另一条新的直线。咱们每降低一步,就会获得代价更小的新的直线。随着咱们不断降低,直线看起来也愈来愈好。最后,咱们到了全局的最小值。
显然,此时的直线很好地拟合了数据。这就是梯度降低。
咱们刚刚学习的算法有时候也被称做Batch梯度降低(批量梯度降低法)。它意味着在梯度降低的每一步中,咱们都用到了全部的训练样本,在梯度降低中,在计算微分求导项时,咱们须要进行求和运算,因此,在每个单独的梯度降低中,咱们最终都要计算这样一个东西,这个项须要对全部个训练样本求和。所以,批量梯度降低法这个名字说明了咱们须要考虑全部这一"批"训练样本,而事实上,有时也有其余类型的梯度降低法,不是这种"批量"型的,不考虑整个的训练集,而是每次只关注训练集中的一些小的子集。在后面的课程中,咱们也将介绍这些方法。
将批量梯度算法应用到线性回归中,这就是用于线性回归的梯度降低法。
若是你以前学过线性代数,你应该知道有一种计算代价函数最小值的数值解法,不须要梯度降低这种迭代算法。在后面的课程中,咱们也会谈到这个方法,它能够在不须要多步梯度降低的状况下,也能解出代价函数的最小值,这是另外一种称为正规方程(normal equations)的方法。实际上在数据量较大的状况下,梯度降低法比正规方程要更适用一些。
如今咱们已经掌握了梯度降低,咱们能够在不一样的环境中使用梯度降低法,咱们还将在不一样的机器学习问题中大量地使用它。因此,祝贺你们成功学会你的第一个机器学习算法。