Coursera机器学习笔记 第1周 第二章 单变量线性回归(二)

第二章 单变量线性回归(二)

第2节 参数学习(Parameter Learning)

2.5 梯度下降

参考视频 : 2 - 5 - Gradient Descent (11 min).mkv

梯度下降(batch gradient descent)是一个用来求函数最小值的算法,可以通过它来求出代价函数J(θ0,θ1)的最小值。梯度下降算法的思想是:开始时随机选择一个参数组合(θ0,θ1,...,θn),计算代价函数函数值,然后根据代价函数值下降最快的方向(导数)趋势计算出下一个参数组合,持续这么做直到找到一个局部最小值(local minimum)。因为并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值,最终找到全局最小值。如下图,
Coursera机器学习笔记 第1周 第二章 单变量线性回归(二)

梯度下降算法与下山问题:想象一下你站在山上一点,想用小碎步最快下山。首先旋转360度看看周围,找到最佳的下山方向(下降最快的方向)迈了一步,然后停下来再看看周围,找最佳的下山方向,持续这么做,直到达到一个周围都是平地的地方停下(因为周围已经没有可以继续下降的方向了)。

梯度下降算法(Gradient descent algorithm):
repeat until convergence {θj:=θjαθjJ(θ0,θ1)(for j=0 and j=1 update simultaneously) }

其中α是学习率(learning rate),它决定了我们沿着梯度下降最快的方向迈出的步子有多大。另外在梯度下降算法中,一个需要注意的问题是,我们需要同时更新θ0,θ1,如下所示:

Update simultaneously:
temp0:=θ0αθ0J(θ0,θ1)
temp1:=θ1αθ1J(θ0,θ1)
θ0:=temp0
θ1:=temp1

如何同步更新:先计算公式右边的偏导数项,然后计算出θ0θ1的值,最后同时更新二者。如果你不熟悉微积分或者导数的话,回去学习一下吧!

2.6 梯度下降的直观理解

参考视频 : 2 - 6 - Gradient Descent Intuition (12 min).mkv

梯度下降算法:θj:=θjαθjJ(θ)
描述:对θ赋值,使得J(θ)按函数值下降最快的方向进行,一直迭代下去,最终得到局部最小值。其中α是学习率(learning rate),它决定了我们沿着梯度下降最快的方向迈出的步子有多大。

以二次函数为例:
Coursera机器学习笔记 第1周 第二章 单变量线性回归(二)

在上图中曲线θ1处,求此处导数或者说取此点的切线,即是下降最快的方向;再乘以学习率α,得到步子的大小。注意:如果学习率太小,需要很多步才能到达最低点(迭代次数过多,费时);如果学习率太大,步子太大可能会越过最低点,导致无法收敛。

另外,当逐渐接近最低点时,步子会越来越小,因为导数值越来越小。移动幅度越来越小,直到最终收敛到局部最小值。所以在接近最低点时,梯度下降会自动采取越来越小的幅度,所以实际上没有必要另外再减小α梯度下降算法可以用来最小化任何代价函数J,不只是线性回归中的代价函数。

2.7 梯度下降的线性回归

参考视频 : 2 - 7 - GradientDescentForLinearRegression (6 min).mkv

结合梯度下降和线性回归模型中的平方误差代价函数。二者如下图:
Coursera机器学习笔记 第1周 第二章 单变量线性回归(二)

对于之前的线性回归问题运动梯度下降法,关键在于求出代价函数的导数、导数、导数,求导过程中用到了高数中的复合求导。
Coursera机器学习笔记 第1周 第二章 单变量线性回归(二)

则算法写成:
Repeat{θ0:=θ0α1mi=1m(hθ(x(i))y(i))θ1:=θ1α1mi=1m((hθ(x(i))y(i))x(i))}

刚刚使用的算法也称为批量梯度下降算法。因为在梯度下降的每一步中,我们都用到了所有训练样本。在每一个单独的梯度下降中,我们都需要对所有m个样本求和。不过也有其他类型的梯度下降法,不是“批量型”的,不考虑整个训练集,而只关注训练集中的一些子集。

另外,线性代数中有一种方法,在不需要多步梯度下降的情况下,也能解出代价函数J的最小值。这种方法叫做正规方程(Normal equations)。不过,实际上在数据量较大的情况下,梯度下降法比正规方程更适用一些。

最后,祝贺大家学到你的第一个机器学习算法!

2.8 接下来的内容

参考视频 : 2 - 8 - What_’s Next (6 min).mkv

接下来会快速回顾一下线性代数,复习一下向量、矩阵等内容。通过它们,你可以实现更强大的线性回归模型。事实上,线性代数不仅仅在线性回归中应用广泛,它还有助于实现其它机器学习模型,并在计算上更有效率。正是因为线性代数中的向量和矩阵提供了一种有效的方式来组织大量的数据,特别是处理巨大的数据集时。为了实现机器学习算法,我们只需要一些非常非常基础的线性代数知识。请继续往下看吧!