2.单变量线性回归和梯度下降(Linear Regression with One Variable and Gradient Desce
2.1 模型表示
线性回归算法,根据不同房屋尺寸预测住房价格,如果房子是1250平方尺大小,这房子能卖多少钱?首先可以构建一个模型,可能是条直线,从这个数据模型上来看,大约220000(美元)左右的价格可以卖掉这个房子。
对于每个数据来说,我们给出了“正确的答案”,这是一个回归问题,即根据之前的数据预测出一个准确的输出值,对于这个例子就是价格。
在监督学习中的数据集被称训练集。‘
以房价预测问题为例,回归问题的训练集(Training Set)如下表所示:
这就是监督学习算法的工作方式,可以看到训练集里的房屋价格把它给学习算法计算了,然后输出一个函数,通常表示为小写
对于房价预测问题,该如何表达
2.2代价函数
接下来要做的便是为模型选择合适的参数(parameters)
参数的选择决定了得到的直线相对于训练集的准确程度,模型所预测的值与训练集中实际值之间的差距(下图中蓝线所指)就是建模误差(modeling error)。
目标是选择出可以使得建模误差的平方和能够最小的模型参数。
即使得代价函数 最小
绘制一个等高线图,三个坐标分别为、
和
可以看出在三维空间中存在一个使得最小的点
对于代价函数的直观理解
代价函数也被称作平方误差函数,也被称为平方误差代价函数
为什么是除以
无论除以还是
,代价函数最优化的结果
都是相同的。利用梯度下降法对
求导,如果是
,求导结果为:
这里正好除以,便于计算。
2.3 梯度下降
梯度下降是用来求函数最小值的算法,使用梯度下降算法来求出代价函数 的最小值。
梯度下降背后的思想是:开始时随机选择一个参数的组合来计算代价函数,然后寻找下一个能让代价函数值下降最多的参数组合。持续这么做直到找到一个局部最小值(local minimum),因为并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否是
全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。
批量梯度下降(batch gradient descent)算法的公式:
其中
在梯度下降中,我们要更新和
,当
或者
时更新,所以将更新
和)J(θ_1)。实现梯度下降算法的微妙之处是在这个表达式中,如果要更新这个等式,需要同时更新
和
,需要这样更新:
和
。
实现方法:计算出和
的值,然后同时更新
和
2.4 梯度下降的直观理解
梯度下降算法是做什么的,梯度下降算法的更新过程有什么意义?
梯度下降算法:
对 赋值,使得
按梯度下降最快方向进行,一直迭代下去,最终得到局部最小值
取该曲线在红点的切线,这条红色直线的斜率正好是这个三角形的高度除以这个水平长度,这条线有一个正斜率,也就是说它有正导数,因此,可以得到的新的
这就是梯度下降法的更新规则:
如果
太小或
太大会出现什么情况?
- 如果
太小,即学习速率太小,结果就是只能一点点地挪动,可能会很慢,需要很多步才能到达全局最低点。
- 如果
太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,下一次迭代又移动了一大步,越过一次,又越过一次,一次次越过最低点,直到发现离最低点越来越远,所以,
太大会导致无法收敛,甚至发散。
如果初始化在局部最低点,结果是局部最优点的导数将等于零,它使得
的值不再改变,也就是新的
等于原来的
如果参数已经处于局部最低点,那么其实梯度下降法更新什么都没做,它不会改变参数的值。这也解释了为什么即使学习速率保持不变时,梯度下降也可以收敛到局部最低点。
在梯度下降法中,当接近局部最低点时,梯度下降法会自动采取更小的幅度,这是因为在局部最低点时导数等于零,所以当我们接近局部最低时,导数值会变得越来越小,所以梯度下降会自动采取较小的幅度,所以并没有必要再另外减小。
梯度下降的线性回归
梯度下降算法和线性回归算法的比较
对比之前的线性回归问题运用梯度下降法,关键在于求出代价函数的导数,即:
时:
时:
则算法改写成:
Repeat {
}
这种算法,也被叫为批量梯度下降,指的是在梯度下降的每一步中,都用到了所有的训练样本,在梯度下降过程中,计算微分求导项时,需要进行求和运算,所以在每一个单独的梯度下降中,最终都要对所有个训练样本求和。因此,批量梯度下降法这个名字说明了需要考虑所有这一"批"训练样本。