1、模型表示
- 在监督学习中我们有一个数据集,这个数据集被称训练集(Training Set)
- 符号定义:
m表示训练样本的数量
x表示输入变量/特征
y表示输出变量/预测的目标变量
(x,y)表示一个训练样本
(x(i), y(i))表示第i个训练样本(i指的是索引,表示第i个训练样本)
ℎ 代表学习算法的解决方案或函数也称为假设(hypothesis) - 一种可能的表达方式为:ℎ????(????) = ????0 + ????1????,只含有一个特征/输入变量,这样的问题叫作单变量线性回归问题。
- 监督学习算法的工作方式:
将训练集“喂”给学习算法,进而学习得到一个假设ℎ,然后将要预测的房屋的尺寸作为输入变量输入给ℎ,预测出该房屋的交易价格作为输出变量输出为结果。
2、代价函数
1)建模误差:
参数(parameters)????0 和 ????1 ,决定得到的直线相对于训练集的准确程度,模型所预测的值与训练集中实际值之间的差距就是建模误差(modeling error)。
2)代价函数:
我们的目标是选择出可以使得建模误差的平方和能够最小的模型参数,即代价误差函数最小。
定义代价函数:
- 也称为平方误差函数,有时称为平方误差代价函数。
- 平方误差代价函数是解决回归问题最常用的手段。
3)代价函数的直观理解
令 ????0 = 0, ????1 变化 :
此时学习算法的优化目标是通过 θ1 选择获得最小的J(θ1),minimizeJ(θ1)就是线性回归的目标函数,找到一条最符合数据的直线。
令 ????0 , ????1 都变化 :
- 横轴为θ0和θ1,纵轴为 J(θ0,θ1)的值。
- 这个类似碗的形状就是代价函数的形状。
- 可以看出在三维空间中存在一个使得????(????0,????1)最小的点。
等高线图
- 同一椭圆上的点代价函数相同
- 左图每条直线对应于右图椭圆上的一点
- 代价函数最小值位于中心处
3、梯度下降
梯度下降是一种可以将代价函数J最小化的算法,它不仅被用在线性回归上,还被广泛应用于机器学习的众多领域。
1)实现过程:
- 开始时随机选择一个参数的组合(????0,????1,…,????????),通常将他们初始设为0,计算代价函数。
- 寻找下一个能让代价函数值下降最多的参数组合。
- 持续这么做直到一个局部最小值(local minimum)。
- 因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum)。
- 选择不同的初始参数组合,可能会找到不同的局部最小值。
类似于下山,每次在一点环顾四周,沿最陡峭的方向向下走。如果起始点偏移了一些,会得到完全不同的局部最优解,这就是梯度下降算法的一个特点。
2)算法公式:
- :=符号表示赋值运算符
- ????是学习率(learning rate),决定了我们沿着能让代价函数下降程度最大的方向
向下迈出的步子有多大。 - 在批量梯度下降中,每一次都同时让所有的参数减去学习速率乘以代价函数的导数。
注意:同步更新θ0和θ1,这是正确的实现方法。
3)梯度下降的直观理解
设θ0=0,代价函数图像如下:
- 求导的目的,基本上可以说取这个红点的切线,这条红色直线的斜率。
- 上图中,这条线有一个正斜率,也就是说它有正导数,因此,得到的????1更新后等于原????1减去一个正数乘以α。
- 反之,????1更新后等于原????1减去一个负数乘以α。
如果α太小或α太大会出现什么情况
- 如果α(学习速率)太小,则梯度下降法会收敛的很慢。
- 如果α太大,则梯度下降法每次下降很快,可能会越过最小值,最终会导致无法收敛甚至发散。
- 如果已经在局部最优点,导数等于零,θ1不再改变,那么梯度下降法更新其实什么都没做,它不会改变参数的值。这也解释了为什么即使学习速率α保持不变时,梯度下降也可以收敛到局部最低点。
- 当接近局部最低点时,梯度下降法会自动采取更小的幅度,这是因为当接近局部最低时,导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度,这就是梯度下降的做法,所以没有必要再另外减小α。
- 梯度下降算法可以用来最小化任何代价函数 ????,不只是线性回归中的代价函数 ????。
4、第一个机器学习算法——梯度下降的线性回归算法
将梯度下降和代价函数结合,并将此算法应用于具体的拟合直线的线性回归算法里。
梯度下降算法和线性回归算法比较如图:
算法的关键在于求出代价函数的导数
- 该算法有时也称为批量梯度下降。指的是在梯度下降的每一步中,我们都用到了
所有的训练样本。 - 该算法都是凸函数,有全局最优值。
- 有的算法可以在不需要多步梯度下降的情况下,也能解出代价函数????的最小值,比如正规方程(normal equations)的方法。
- 实际上在数据量较大的情况下,梯度下降法比正规方程要更适用一些。