前言

经过先前对机器学习基本概念的学习,对机器学习已经有了大概的印象,接下来将开始慢慢叩开机器学习算法的大门,正式进入机器学习的世界。第二章主要讲了最基础的算法模型——线性回归。本博客将对这部分内容进行系统记录。博主所看的课程详请参见:吴恩达教授的机器学习课程

线性回归模型描述

image-20210109123716775

以房价预测为例,这里给定了一个训练集(训练模型用的数据集)。其中有些约定俗成的符号需要特别注意:

m:训练集内训练样本的数量;x:输入的数值或特征(自变量);y:输出的数值或目标值(因变量);用(xi,yi)来表示第i个训练样本。

image-20210109124332866

在例子中,我们可以用上图所示的方法来进行对房价数据的预测。其中,h称为假设函数(hypothesis),它给出一个从x(房间大小)到y(预估房价)的关系。

我们本节学习的是线性回归模型,h是一个线性函数的形式,即h应该设为hθ01x。此外,这个h函数只有一个变量,所以称为单变量线性回归。

代价函数

求h函数的思路在于:选定一组合适的θ0和θ1使得hθ(x)的值与训练集中的y值最为接近。吴教授称之为最小化问题(minimize)。对于线性回归模型,可以使用以下公式求最小值:

image-20210109162626255

现在,我们的任务变成了找合适的一组θ0和θ1使上式的值最小。我们定义误差函数J:

image-20210109162544635

故任务在于使函数J值最小。J有时也被称为误差平方函数。

对于线性回归算法,hθ(x)、θ0、θ1、J的关系总结如下图所示:

image-20210109135256769

先来讨论一种简单情况,即当θ0=0时,J(θ1)会如何随着θ1变化而变化。吴教授在这里给了一个特殊的训练集,只有三个数据且它们本身就呈线性分布。当不断调整θ1的数值时,我们可以得到以下图像:

右图中每一个θ1都对应了左图中的一条直线。而寻找一个最小的J(θ1)值的几何意义就在于,寻找一个最能拟合训练集数据直线的直线。

接下来,讨论θ0≠0的情形。吴教授在这里给的是一个房价的训练集。如下图所示:

image-20210109140826504

这种情况下,问题变得复杂了,现在对于J函数有了θ0、θ1两个变量,也就是说J(θ01)函数变成了三维图形:

image-20210109141008553

三维图形尽管直观但增加了定量讨论的难度,为了克服这个问题,吴教授提到了用等高线图来表示J函数:

image-20210109141816222

当(θ01)点取在“碗底”时,显然J可取最小值,且直线最能拟合左图。

梯度下降

应用梯度下降算法,可以优化任意一个代价函数J。它的核心思路是:设任意的θ01,然后一步步的改变θ01以降低J值,最终取在某区域使J值局部最小的θ01作为结果。“下山途中,环顾四周,找最陡的路径下山。”

image-20210109142315178

特别注意:在一些情况下,梯度下降得到的只是局部最优解,最优解与起始点选取有关。如下所示:

image-20210109150707792

梯度下降算法的数学原理,如下所示:

其中,:=是赋值号;α被称为学习率,表示每次优化的幅度,即以多大的速率来更新θ0和θ1(多大步子下山)。当α较小时,梯度下降会较慢,但也更精确;而当α较大时,尽管梯度下降速度快了,但可能导致J最终无法收敛甚至发散。

偏导数的意义即J函数相对于某一自变量(θ0或θ1)的图像在某点的切线斜率,则θ0和θ1将会按照切线方向进行更新,并最终使J无限趋近最小值。

梯度下降算法可以针对有n个参数的代价函数,与二参数代价函数相比,无非是偏导数数量变多而已。

线性回归算法

利用梯度下降的数学原理和线性回归模型的数学定义,我们可以得到以下数学关系:

image-20210109150426953

当使用梯度下降方法后,我们可以得到下图所示的过程:

image-20210109151024574

从图中可以比较清晰地看到,代价函数J在沿一个使其本身的值快速下降的路径不断趋近最小值点,而达到最小值点时,假设函数hθ(x)也到了最能拟合训练集的情形。

此外,吴教授给出了一个定义,Batch梯度算法:每一次梯度下降都遍历了训练集中的所有数据。

总结

本篇博客主要是记录了第二章线性回归算法的相关内容。主要包括了:线性回归模型、假设函数、代价函数、梯度算法等内容。第三章将简单介绍一种利用线性代数来完成梯度下降的方法。

这节课结束后,标志着学习了第一个机器学习算法。当考研复习天天刷题的微积分和线性代数现在能被我复用到新科目的学习中时,还是很快乐的。继续努力啦!

image-20210109151935632