吴恩达《机器学习》学习笔记二——单变量线性回归
- 一、 模型描述
- 二、 代价函数
- 1.代价函数和目标函数的引出
- 2.代价函数的理解(单变量)
- 3.代价函数的理解(两个参数)
- 三、 梯度下降——求解最优参数
- 1.梯度下降的步骤
- 2.梯度下降的数学表达
- 四、 用梯度下降法求解的线性回归
课程链接: https://www.bilibili.com/video/BV164411b7dx?from=search&seid=5329376196520099118
第二次笔记主要针对机器学习第一个模型——线性回归,首先给出模型的描述,理清楚各个变量都是什么含义;然后介绍代价函数以及目标函数,并详细生动地解释了参数优化的过程,也就是梯度下降方法。
一、 模型描述
首先回顾一下笔记一的房价预测模型,这是监督学习里回归问题最经典的例子,如下图所示。后面就会依据这个问题来进行线性回归模型的学习。
监督学习有一个带标注的数据集,为后面分析问题的方便,先定义一下几个变量,如下图所示。
图中那个两列的表格即为房价预测数据集。数据集样本的数量用m表示,假如此处有47条数据样本,则m=47;第一列是数据的面积属性(输入变量),用x来表示;第二列是价格(输出变量),用y来表示。那么一个数据样本就可以用(x,y)来表示,第i个样本就可以用(x(i), y(i))来表示,需要注意的是,这里的上标不是指幂次,而是指代第i个样本,如x(1) = 2104,x(2) = 1416。。。。。。
下面看一下房价预测这个问题的解决思路,如下图所示。
简单来说,就是将数据集送入学习算法进行训练,用训练好的模型对输入x(房屋面积)进行预测,得到预测的输出y(房价)。而这个被训练和用于预测的关键模型就被称为假设函数。在训练阶段需要利用数据集对假设函数的参数进行不断更新,在预测阶段假设函数就是做x到y的一个映射。
在房价预测这个问题中,我们选择的模型形式是单变量一次线性函数形式:
也可以简写为h(x)。需要说明一下,房价预测的模型可以有很多种,除了这种一次线性模型以外,如二次、指数、对数等复杂模型都有可能适用这个问题。但是这里为了方便讲解求解目标函数的过程,选择了最简单的单变量一次线性函数来作为假设函数,便于解释原理。
二、 代价函数
1.代价函数和目标函数的引出
用数据集对假设函数进行训练的过程,其实就是求模型参数θ_0和θ_1的值的过程,不同的值表示不同的假设函数,取何值可以最拟合数据集是模型优化的目标。
我们可以这样理解,当假设函数与数据集最拟合的时候,就是所有数据样本到假设函数的距离平均值最小的时候。那么反之,所有数据样本到假设函数的距离平均值最小的时候,就是最拟合的时候,所以我们要求假设函数的参数,可以这样定义:
其中,求和符号后的部分是各样本点与假设函数的平方距离,求和之后取平均,然后求使得该表达式最小的θ_0,θ_1的值,即为最合适的假设函数。需要注意的是求平均时不是1/m,而是1/2m,主要是为了后续梯度下降法求最小值时求导方便,这点后面会提到。
在这里,令
并称其为代价函数(也称为平方误差函数),则目标函数可以简写为
总结一下:
2.代价函数的理解(单变量)
首先为了简化理解,我们假设θ_0为0,即只包含θ_1一个变量,如下图所示。
下面我们来看一下假设函数h(x)与代价函数J(θ)之间的关系,三个数据样本为(1,1)、(2,2)、(3,3)。
(1)θ_1=1,h(x)正好经过三个数据样本,代价函数计算下来为0。
(2)θ_1=0.5
(3)θ_1=0
以此类推,通过改变θ_1的值,可以绘制出代价函数J(θ)的曲线,如下图。
可以观察到,当θ_1=1时,代价函数最小,此时假设函数也是最拟合数据集的,所以利用最小化平方误差函数(代价函数)来求假设函数的参数是正确的。但这是针对只有一个参数的情况,下面将对含有θ_0,θ_1两个参数的情况进行理解。
3.代价函数的理解(两个参数)
当考虑两个参数时,代价函数已经不能用二维坐标来绘制了,因为多了一个变量,所以可以用三维坐标绘制,如下图所示,有了单个参数的经验,这个也不难理解,当改变θ_0,θ_1两个参数的值时,代价函数J(θ_0,θ_1)也会随之改变。
在课中,因为三维坐标不便演示变化的过程,故引入了等高线图的概念,即将相同高度的J(θ_0,θ_1)画成一个椭圆,在同一椭圆上的J(θ_0,θ_1)值都相同,不同椭圆上的J(θ_0,θ_1)值都不同,仅为方便演示。而所有椭圆的中心就是J(θ_0,θ_1)值最小的地方。
我们来看一些举例:图中红色的×代表对应的θ_0,θ_1取值及其相应的J(θ_0,θ_1),椭圆的中心为J(θ_0,θ_1)值最小的地方,两者的距离就是差的多少。
综上,选择合适的参数,可以最好的拟合数据是问题的求解目标,而目前还停留在一组一组数据的尝试,这显然是不科学的,下面将介绍一种自动求解最优参数解的方法——梯度下降。
三、 梯度下降——求解最优参数
梯度下降是求解最优参数很常用的一种方法,不仅可以使用在线性回归中,后续很多模型的求解都可以使用。
1.梯度下降的步骤
其大致的思路如下所示,代价函数J(θ_0,θ_1),目标是求其最小时的θ_0,θ_1参数值,首先给定θ_0,θ_1一组初始值(可以是任意的,比如都设为0),然后按照一定的规则去小小地改变θ_0,θ_1的值使得代价函数J(θ_0,θ_1)的值变小,直到其最小(很可能是局部最小,而不是全局最小),此时的θ_0,θ_1值就是待求的。显然,其中的关键,就是按照什么规则去改变参数值。
下面用可视化图来演示一下梯度下降的上述过程:
(1) 首先选择一个初始点
(2) 然后每次朝下降最快的方向下降一小步,每次都独立地寻找下降方向。
需要注意的是,因为初始位置选择的不确定性,下降的路径可能完全不一样,如下图所示,是从另一个初始位置开始下降,最终下降到了不同的最优点。这两个最优点可能是全局最优点,可能是局部最优点,无法保证一定是全局最优。
2.梯度下降的数学表达
上面提到,梯度下降方法最关键的是按照什么规则改变参数值,也就是可视化图中朝着哪个方向下降一小步,它的数学表达式如下所示。
(1):=是赋值的意思,将计算后的值赋给θ_j。当不止一个参数需要更新的时候,注意要使用同步更新的方法,就是将每个参数的新值用旧值计算好后,一次性全部赋值,而错误的做法是,计算更新了一个参数,然后用更新的值去计算更新别的参数,这样就没有做到同步更新。
(2)表达式中的α称为学习率,它决定了参数更新的大小,它越大,每次更新的变化就越大,反之则越小。如果学习率太小,可能导致梯度下降收敛速度很慢;如果学习率太大,可能导致无法收敛甚至是发散,如下图所示。
(3)偏导数项我们用单变量函数J(θ)来说明一下原理。
若J(θ)是一个如下图所示的函数,在红色点位置,J(θ)的导数为正数,θ将减去一个正数,即减小,从图中可见,θ减小正是朝着使得J(θ)减小的方向变化。
再考虑如下红色点位置,J(θ)的导数为负数,θ将减去一个负数,即增大,从图中可见,θ增大正是朝着使得J(θ)减小的方向变化。
推广到多参数的情况,虽然不方便可视化,但原理是一样的,减去这个偏导数项,就是朝着使得J(θ)减小的方向变化。
如果已经下降到局部最优点,那么导数将等于0,参数将不再更新。
四、 用梯度下降法求解的线性回归
主要就是将梯度下降法中的代价函数具体为线性回归的表达式。
对
求偏导。
所以梯度下降表达式可表示为如下
下面用可视化图来演示参数变化的过程,先给出初始位置。
补充:梯度下降有时也称为Batch梯度下降,就是参数每次更新都用到了整个数据集的数据样本。相应的还有随机梯度下降,每次更新只用随机一个数据样本,mini-batch梯度下降,每次使用一部分数据样本进行更新。