吴恩达机器学习课程笔记+代码实现(2)单变量线性回归和梯度下降(Linear Regression with One Variable and Gradient Descent)

2.单变量线性回归和梯度下降(Linear Regression with One Variable and Gradient Desce

2.1 模型表示

线性回归算法,根据不同房屋尺寸预测住房价格,如果房子是1250平方尺大小,这房子能卖多少钱?首先可以构建一个模型,可能是条直线,从这个数据模型上来看,大约220000(美元)左右的价格可以卖掉这个房子。

吴恩达机器学习课程笔记+代码实现(2)单变量线性回归和梯度下降(Linear Regression with One Variable and Gradient Descent)_第1张图片

对于每个数据来说,我们给出了“正确的答案”,这是一个回归问题,即根据之前的数据预测出一个准确的输出值,对于这个例子就是价格。
在监督学习中的数据集被称 训练集。

以房价预测问题为例,回归问题的训练集(Training Set)如下表所示:

吴恩达机器学习课程笔记+代码实现(2)单变量线性回归和梯度下降(Linear Regression with One Variable and Gradient Descent)_第2张图片

代表训练集中实例的数量
代表特征/输入变量
代表目标变量/输出变量
代表训练集中的实例
代表第 个观察实例

吴恩达机器学习课程笔记+代码实现(2)单变量线性回归和梯度下降(Linear Regression with One Variable and Gradient Descent)_第3张图片

  这就是监督学习算法的工作方式,可以看到训练集里的房屋价格把它给学习算法计算了,然后输出一个函数,通常表示为小写 表示。 代表hypothesis(假设), 输入是房屋尺寸大小,输出是对应房子的价格,因此 是一个从 到 的函数映射。
  对于房价预测问题,该如何表达 ?
   ,只含有一个特征/输入变量,因此这样的问题叫作 单变量线性回归问题

2.2代价函数

吴恩达机器学习课程笔记+代码实现(2)单变量线性回归和梯度下降(Linear Regression with One Variable and Gradient Descent)_第4张图片

  接下来要做的便是为模型选择合适的参数(parameters) 和 ,在房价问题例子中便是直线的斜率和在 轴上的截距。

  参数的选择决定了得到的直线相对于训练集的准确程度,模型所预测的值与训练集中实际值之间的差距(下图中蓝线所指)就是建模误差(modeling error)。


吴恩达机器学习课程笔记+代码实现(2)单变量线性回归和梯度下降(Linear Regression with One Variable and Gradient Descent)_第5张图片

目标是选择出可以使得建模误差的平方和能够最小的模型参数。
即使得代价函数 最小

  绘制一个等高线图,三个坐标分别为、和

吴恩达机器学习课程笔记+代码实现(2)单变量线性回归和梯度下降(Linear Regression with One Variable and Gradient Descent)_第6张图片

  可以看出在三维空间中存在一个使得最小的点
  对于代价函数的直观理解

吴恩达机器学习课程笔记+代码实现(2)单变量线性回归和梯度下降(Linear Regression with One Variable and Gradient Descent)_第7张图片

  代价函数也被称作平方误差函数,也被称为平方误差代价函数

为什么是除以

无论除以还是,代价函数最优化的结果都是相同的。利用梯度下降法对求导,如果是,求导结果为:


这里正好除以,便于计算。

2.3 梯度下降

  梯度下降是用来求函数最小值的算法,使用梯度下降算法来求出代价函数 的最小值。
   梯度下降背后的思想是:开始时随机选择一个参数的组合来计算代价函数,然后寻找下一个能让代价函数值下降最多的参数组合。持续这么做直到找到一个局部最小值(local minimum),因为并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否是
全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。

吴恩达机器学习课程笔记+代码实现(2)单变量线性回归和梯度下降(Linear Regression with One Variable and Gradient Descent)_第8张图片

吴恩达机器学习课程笔记+代码实现(2)单变量线性回归和梯度下降(Linear Regression with One Variable and Gradient Descent)_第9张图片

  批量梯度下降(batch gradient descent)算法的公式:

吴恩达机器学习课程笔记+代码实现(2)单变量线性回归和梯度下降(Linear Regression with One Variable and Gradient Descent)_第10张图片

  其中 是学习率(learning rate),决定了沿着能让代价函数下降程度最大的方向向下迈的步子有多大,在批量梯度下降中,每一次都同时让所有的参数减去学习速率乘以代价函数的导数。

  在梯度下降中,我们要更新和,当 或者时更新,所以将更新和)J(θ_1)。实现梯度下降算法的微妙之处是在这个表达式中,如果要更新这个等式,需要同时更新和,需要这样更新:
和。
  实现方法:计算出和的值,然后同时更新和

吴恩达机器学习课程笔记+代码实现(2)单变量线性回归和梯度下降(Linear Regression with One Variable and Gradient Descent)_第11张图片

2.4 梯度下降的直观理解

  梯度下降算法是做什么的,梯度下降算法的更新过程有什么意义?
梯度下降算法:
  对 赋值,使得按梯度下降最快方向进行,一直迭代下去,最终得到局部最小值

吴恩达机器学习课程笔记+代码实现(2)单变量线性回归和梯度下降(Linear Regression with One Variable and Gradient Descent)_第12张图片

  取该曲线在红点的切线,这条红色直线的斜率正好是这个三角形的高度除以这个水平长度,这条线有一个正斜率,也就是说它有正导数,因此,可以得到的新的 , 更新后等于 减去一个正数乘以

  这就是梯度下降法的更新规则:

如果太小或太大会出现什么情况?
  • 如果太小,即学习速率太小,结果就是只能一点点地挪动,可能会很慢,需要很多步才能到达全局最低点。
  • 如果太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,下一次迭代又移动了一大步,越过一次,又越过一次,一次次越过最低点,直到发现离最低点越来越远,所以,太大会导致无法收敛,甚至发散。

  如果初始化在局部最低点,结果是局部最优点的导数将等于零,它使得的值不再改变,也就是新的等于原来的
  如果参数已经处于局部最低点,那么其实梯度下降法更新什么都没做,它不会改变参数的值。这也解释了为什么即使学习速率保持不变时,梯度下降也可以收敛到局部最低点。

  在梯度下降法中,当接近局部最低点时,梯度下降法会自动采取更小的幅度,这是因为在局部最低点时导数等于零,所以当我们接近局部最低时,导数值会变得越来越小,所以梯度下降会自动采取较小的幅度,所以并没有必要再另外减小。

梯度下降的线性回归

梯度下降算法和线性回归算法的比较

吴恩达机器学习课程笔记+代码实现(2)单变量线性回归和梯度下降(Linear Regression with One Variable and Gradient Descent)_第13张图片

对比之前的线性回归问题运用梯度下降法,关键在于求出代价函数的导数,即:
\frac{\partial }{\partial {{\theta }_{j}}}J({{\theta }_{0}},{{\theta }_{1}})=\frac{\partial }{\partial {{\theta }_{j}}}\frac{1}{2m}{{\sum\limits_{i=1}^{m}{\left( {{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)}}^{2}}

时:

时:\frac{\partial }{\partial {{\theta }_{1}}}J({{\theta }_{0}},{{\theta }_{1}})=\frac{1}{m}\sum\limits_{i=1}^{m}{\left( \left( {{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)\cdot {{x}^{(i)}} \right)}

则算法改写成:
Repeat {
  
  
}
  这种算法,也被叫为批量梯度下降,指的是在梯度下降的每一步中,都用到了所有的训练样本,在梯度下降过程中,计算微分求导项时,需要进行求和运算,所以在每一个单独的梯度下降中,最终都要对所有个训练样本求和。因此,批量梯度下降法这个名字说明了需要考虑所有这一"批"训练样本。

你可能感兴趣的:(吴恩达机器学习课程笔记+代码实现(2)单变量线性回归和梯度下降(Linear Regression with One Variable and Gradient Descent))