0. 前言
以下内容是根据coursera上《机器学习》课程所做的学习笔记,笔记中摘录了课程上的部分图片,也加入了自己的理解,为了能更好的的让自己回顾所学内容并且和大家分享,以中文形式进行阐述。
本篇文章仅供学习交流使用,需要获取更多信息还请大家登录官方网站https://www.coursera.org/。
由于是初次写博客,其中必然有很多地方考虑不到的地方,我会在之后做出修改,还请大家包涵。
1. 线性回归的模型表示
- 使用x(i)表示输入变量,也叫“输入特征”; 使用y(i)表示输出变量,也叫“目标变量”
- 一个(x(i), y(i))对称为一个训练样例
- 我们用来训练的数据集是一个训练样本列表(x(i), y(i)), i = 1,...,m
- 我们使用X,Y分别表示输入变量和输出变量的取值范围
2. 对于supervised learning的正式表述
给出一个训练数据集,我们要找到这样一个函数h:X → Y使得h称为对于输出的一个好的预判,这个函数称为hypothesis,记为hθ
3. 成本函数cost function
为了评价hypothesis方程的精确性,定义一个cost function
我们可以看到成本函数与统计学上计算样本的方差较为类似。
4. 对cost function 的直观理解
只有一个参数的cost function有两个参数的cost function(用等值线图表示)
5. 梯度下降法(gradient descent)
5.1 梯度下降法的表述
由于我们已经有了评价hypothesis方程适应数据程度的方法(cost function), 那么接下来的任务就是如何找到cost function 的最小值, 梯度下降算法是其中的一个方法.
给定一组训练数据集,我们根据采用不同的θ0, θ1得到不同的hypothesis方程hθ(θ0, θ1),并计算出了它的cost function Jθ(θ0, θ1), 综合所有的θ0, θ1绘制成下图
我们的目标是找到Jθ(θ0, θ1)的最小值,也就是图中的最低点。那么如何找到这个最低点呢?
假如我们站在图中的任何一点,假设是A点。梯度下降法的做法是“环顾四周,找到一个方向使得我沿着这个方向走一小步下降的距离最大”,于是我环顾四周,找到B点。 然后我重复上述过程,找到C点,然后继续重复上述过程...,最终我来到了箭头所示的最低点。总体上来看,我通过“梯度下降法”来到了图中的一个局部极小值点。
那么这个方法的正式表述是什么呢?
梯度下降法的规范表述这个方法有几个需要注意的地方
1.α的含义
α称为learning rate,它表现了梯度下降的速率,也就是我们每一步的“大小”,我们会在接下来对它详细的介绍
2.":="的含义
在接下来的讨论中,我们使用符号":="表示先计算右侧的值,再将它赋给左侧(类似于C++的=)。而"="的含义是表示两侧是否相等(类似于C++的==)
3. 同时更新
由于我们要更新的θ值有很多个,在每一次梯度下降时要注意“同时更新”,即将:=右侧的值都算出来后,再同时对左侧赋值。
5.2 对梯度下降法的直观理解
对于梯度下降法的某一个变量,如下图是J(θ1)关于θ1变化的曲线,这个曲线是一个凹函数,有最小值。
由梯度下降公式
[图片上传失败...(image-27f54c-1529201544341)])
当θ1位于右侧时,导数那一项是大于零的,我们一般将learning rate 设置成正数,因此相当于θ1减去一个正数再对θ1进行更新,结果是使θ1减小,也就是使得θ1的值向左移动。
当θ1位于左侧时,导数那一项是小于零的,因此相当于θ1减去一个负数再对θ1进行更新,结果是使θ1增大,也就是使得θ1的值向右移动。
通过这样一步一步的对参数θ进行更新,在保证learning rate α的合理取值的情况下,我们就可以最终获得使得cost function J(θ0, θ1)取得最小值的参数集合。
但是这里存在两个疑问
问题1:如何才算对α的合理取值?
这个需要通过具体的实验一步步的确定,但是我们可以肯定的是,learning rate取值过小或者取值过大都会对算法造成不利的影响。
如下图,是α取值过小的情况,我们可以看到每一步迈出的距离都特别小,造成了对于时间的大量损耗。
而下图则是α 取值过大的情况,我们可以看到,假设我们一开始在A点,此时更新的结果应该是θ1向右移动,但是由于learing rate 过大,导致更新之后的θ1越过了最小值点,直接来到了B点;不幸的是,由于learning rate 还是过大,B点更新后直接越过最小值来到C点,如此这般,使得θ1 非但没有收敛,反而变得发散,这是我们不愿见到的。
α 取值过大
问题2:α的值在梯度下降过程中是变化的吗?
答案是否定的,如下图,如果α的值在一个合理的范围内,导数项是随着更新过程逐渐减小并趋向于零的,也就是会逐渐趋向于最小值,而不是直接越过它
α的值是固定的
5.3 线性回归的梯度下降法(gradient descent for linear regression)
我们结合线性回归的cost function的表述
得到线性回归的梯度下降法的规范表述
这个结果可以通过简单的代入求导得到,对于没有学过微积分的同学,请自行查阅相关书籍。
由于这样的梯度下降法使用了所有的训练用例,机器学习界通常也将它称为batch gradient descent
网友评论