吴恩达机器学习——单变量线性回归(代价函数与梯度下降)
目录
1、声明
本文章所应用材料来源于吴恩达老师的机器学习课资料、黄海广老师的公众号下载的整理资料、本文所有内容为个人学习笔记的整理,并非原创。(因为也不是转载,所以发表标签设置为原创,在此声明)
2、模型描述
假设有一组训练数据:房子的大小与房子的价格,通过已有数据进行线性拟合,以预测任意房子大小的价格。其中有监督学习的思想。
训练数据如下:
所以我们可以给出一个h的表达式
3、 代价函数
3.1、函数解释
我们预测的目的就是为了是预测结果h与实际结果y之间的差最小,所以我们可以使其误差的平方和能够最小。
代价函数也被称作平方误差函数,有时也被称为平方误差代价函数。我们之所以要求出误差的平方和,是因为误差平方代价函数,对于大多数问题,特别是回归问题,都是一个合理的选择。还有其他代价函数也能很好地发挥作用,但是平方误差代价函数可能是解决回归问题最常用的手段了。
3.2、具体表达
我们可以给出代价函数的具体表达式:
其目的使求得,得到代价函数的最小值。(由于不方便输入特殊字符排版,后文将用theta_0,theta_1 代替
)
首先我们假设theta_0 = 0,之所以为零,是为了从二维角度更好的展示代价函数,theta_0 = 0之后,h函数就变成了简单的截距为0的一元一次函数。由此我们可以改变theta_1的值来描绘出代价函数的形状。如下图
由上图可以看出,同理theta_1=0 时,J =2.3; 当theta_1 = 1时,J = 0;....以此类推 。代价函数为一个类似与二次函数的曲线。
然后我们将theta_0考虑进代价函数J,就会得到一个三维的代价函数图,同时将等高线概念带入,可得到二维代价函数图。
此时函数为拱形函数,具有全局最优解。
我们得到代价函数之后,接下来就是如何得到参数theta_0、theta_1的具体值使代价函数具有最优解。其中梯度下降和正规函数常常解决这个问题。本文先介绍梯度下降,正规函数在多变量线性回归中再介绍。
4、梯度下降
4.1、函数解释
梯度下降的思想使随机选择一组参数,计算代价函数,然后寻找下一个可以使代价函数下降的一组参数,直到代价函数达到局部最优解为止,但是由于我们是随机选择的起始参数,所以我们并没有考虑到所有情况,有可能在选择不同的参数起始值时,会有不同的局部最优解。如下图:两条路线都有局部最优解,但最终的值不同。
4.2直观表达
梯度下降的表达式:
其中是学习率 ,它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。
梯度下降要求的是同步更新参数,如下图所示:左边是梯度下降正确的方式,右边由于更新theta_0之后再对theta_1进行计算,违背了同步更新的原则。
(学习率)的选择也是由经验决定,如果学习率过小,则会导致迭代次数过多,运行时间较长;如果学习率过大,则可能出现函数不收敛的情况;如下图
取值过小:
取值过大:
4.3 为何会得到最小值
如下图所示,刚开始在品红的那点开始,对该点进行求导,然后迭代计算,下降到绿色的点,当到达绿色的点时,我们发现绿色点的导数比品红点的导数要小,所以绿色点到红色点的下降的跨度要比品红下降到绿色点跨度要小;之后依次类推,斜率慢慢变小,导致每次下降的跨度也会变小,最终会得到最小值。当达到最小值时,此时的斜率为0,导数为0,所以跨度也为0;这就是为什么没有必要每次迭代改变学习率的大小,就是得到最优解的原因。