您的位置:首页 > 其它

吴恩达《机器学习》学习笔记二——单变量线性回归

2020-07-04 23:00 85 查看

吴恩达《机器学习》学习笔记二——单变量线性回归

  • 三、 梯度下降——求解最优参数
  • 四、 用梯度下降法求解的线性回归

  • 课程链接: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梯度下降,每次使用一部分数据样本进行更新。

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: