单变量线性回归
本文以单变量线性回归为例,且变量为一次方,多变量只需要增加变量x1,x2······的个数,变量x也可以有更高的次方。
h代表假设函数
theta代表参数
x代表输入变量
y代表标签
J代表损失函数
目标即为通过改变参数theta的值,最小化损失函数,即要使假设函数h的输出尽可能接近标签y。
例如预测房价问题,令输入x为房子的尺寸(m^2),y为已知的对应x的房价(万元),则要通过监督学习,使假设函数h对其他没有见过的x,预测出最接近真实房价y的值,用一个二维平面图来表示,x轴为房子的尺寸,y为房价,(x,y)对应的点就是一个样本点,h就是一条最佳拟合所有样本点并能将来泛化,为输入的没有见过的x预测出最可能的y的一条曲线。
如下图的左边,直线h就是一条尝试拟合样本点的假设函数的对应曲线。
梯度下降
对应的代价函数J在三维空间中会有一个点(theta0,theta1)对应着最小的J值,这个点就是我们要寻找的最优参数。
如下图,最低的那点对应着上图右侧部分标注出来的那一点,上图右侧是将下图压缩成二维平面图的结果,一圈圈线代表着等高线,同一圈上的所有点对应着相同的J值,越往中心收缩,J值越小,直至收缩成一个点。
开始时,我们会随机选择参数theta,然后计算代价函数J,然后再根据当前的J,分别对参数theta0,theta1求偏导,更新参数,再计算J,循环往复,直至theta0,theta1逐渐接近上图中的最低点,我们称之为全局最小值(global minimum),但很多时候我们有可能找到不同的局部最小值(local minimum),如下图
因为初始化的不同,两者最终下降到了不同的最小值点。
梯度下降的算法公式为
更新参数,注意要同步更新!
这里因为只有两个参数,所以j只等于0和1,若有多个theta,则要遍历所有。
其中alpha是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大,在梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。
记住,我们必须同时更新theta0和theta1!
学习率大小的选择
需要补充强调的是如果学习率太小了,结果就是只能一点点地挪动,去努力接近最低点,这样就需要很多步才能到达最低点,所以如果太小的话,可能会很慢,它会需要很多步才能到达全局最低点。
如果太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,下一次迭代又移动了一大步,越过一次,又越过一次,一次次越过最低点,直到你发现实际上离最低点越来越远,所以,如果太大,它会导致无法收敛,甚至发散。
我在另一篇博客里更多讨论了学习率衰减的问题。学习率衰减(learning rate decay)
参考资料:吴恩达 机器学习