在前两篇中我们讨论了线性回归和代价函数,其中大致给出了算法的具体思路,其中最主要的还是通过代价函数来获取假设函数中的θj的值,并以此来确定假设函数。
接下来我们来看梯度下降算法
梯度下降算法
不仅仅局限于线性回归的代价函数,还可以解决更一般的函数J(θ1,θ2……θ(n-1)θ(n)),接下来我们为了方便起见,先来讨论J(θ1,θ2)的情况。
现在我们有一个这样的代价函数的模型:
在梯度下降算法中,我们要做的就是环视当前选定点的周围看看有没有更低的点,让我们尽快走到最低的地方去。
会拿到这样一条路径,如果你向左边偏移一些,你可能会获得另一条不同的路径,我们把这些解称作为局部最优解。这是梯度下降算法的一个特点。
接下来我们来看梯度下降算法的定义:
“:=”是一个赋值操作,我们在这个过程中需要同步更新θ1和θ2的值,就像下面的四个步骤一样
“α”是一个被称为学习效率的数字,你可以理解成每次向下迈步,你的步伐是多大,α越大,你就会越快取到最小的值。
Θ每次都是减去 α乘上代价函数对于θj的偏导数,你可以理解成斜率,没问题。
我们来讨论一个变量,也就是代价函数坐标二维的情况。
我们随机初始化一个点,需注意“α”永远是一个正数,此时斜率是一个正数,在我们循环对θ1进行更新的时候,理所应当会越来越趋向局部最小值所在的方向,并且所采取的步幅也会越来越小。
代价函数和梯度下降结合得到线性回归算法。
我们从最右侧的红点出发,利用公式不断对θj进行更新,那么我们的假设函数也会不断对应的进行修改,当我们的代价函数J越来越接近最优解假设函数h(x)也会更好的拟合训练样本。
称作“batch梯度下降”,每次下降我们都遍历了整个训练集合,因为我们对偏导进行了求解。
总结
在这三篇中,我们讨论了第一个机器学习的算法——线性回归,我们来做一个小结:首先我们确定了我们的训练样本(有监督学习)之后,对数据利用简单函数复合对数据内容提出一个假设函数h(x),h(x)中有多个θj需要我们求解,此时引入代价函数,让代价函数取得最低点的所有θj的取值便是假设函数中θj的值,紧接着我们需要对代价函数利用梯度下降算法步步迭代,最终拿到θj的最小值。
恭喜你学习了第一个机器学习算法。