
2.1 回归问题算法
回归问题算法通常是利用一系列属性来预测一个值,预测的值是连续的。例如给出一套房子的一些特征数据,如面积、卧室数等来预测房价,利用最近一周的气温变化和卫星云图来预测未来的气温情况等。如果一套房子实际价格为500万元,通过回归分析的预测值为499万元,则认为这是一个比较好的回归分析。在机器学习问题中,常见的回归分析有线性回归(Linear Regression)、多项式回归(Polynomial Regression)、逻辑回归(Logistic Regression)等。本节重点介绍线性回归算法,逻辑回归将在2.3节重点阐述。
线性回归是一个很简单的回归算法,使用它可以快速地了解很多关于深度学习的基础知识。首先看一个只有一个特征值的线性回归问题,给定数据如表2.1所示。
表2.1 给定数据

这些给定的数据也叫作数据集(Dataset),把每组数据记作(x(i),y(i)),一共有m组数据。目标就是给出一个模型,根据新给定的x值预测y的值。对于线性回归,使用的模型是一个线性函数,公式如下:

式中,w0,w1——最终需要训练得到的参数。
这个模型也叫作假设(Hypothesis),线性回归的目标就是找到一组最优的w0和w1,使假设贴近表2.1中的数据集。如图2.1所示,希望训练得到的w0和w1能够尽可能拟合所给定的数据集。

图2.1 线性回归模型
那么如何得到最优的w0和w1呢?将训练的目标转换为最小化下面的函数:

这个需要被最小化的函数就叫作损失函数(Loss Function),损失函数类型可以有很多种,上面用的这种叫作均方误差(Mean Square Error),常用于解决回归问题,此外交叉熵误差(Cross Entropy Loss)函数常被用于解决分类问题,即:

可以看到,最终的优化目标就是最小化预测值h(x(i))与训练数据中实际的标签y(i)的误差。
在上述情景中,为了便于理解,输入数据x只有一条属性,实际应用中往往会涉及n个属性(n≥1),此时需要训练得到n+1个参数w,w=[w0,w1,…,wn],其中w0为偏置(Bias),wi(i=1,2,…,n)为第i条属性的权重(weight)。综上,可以把回归问题统一表示为以下形式:
(1)数据集

(2)参数

(3)假设

(4)损失函数

为方便表达,把数据集表示为一个m×(n+1)的矩阵X,其中每一行的第一个元素恒为1,其后为x(i)的n个属性,即:

同时,把目标值也记为向量形式y=(y(1);y(2);…;y(m)),则线性回归问题可以表示为:

为了求解极值w*,对w求梯度得到:

当XTX为满秩矩阵或正定矩阵时,令梯度,可得:

式中,(XTX)-1——矩阵XTX的逆矩阵。
在解得w*之后,对于任意的样本x,令,则可以预测其回归值为:

然而,在现实应用之中,往往很难使XTX满足满秩或者正定矩阵的条件。例如在一些任务中,可能遇到大量的属性,其数目甚至超过样本个数m,即n≥m,导致样本矩阵X的列数明显多于行数,此时XTX将不会满秩。
此外,尽管在线性回归问题中,令可以得到最优参数w*的解析解,但对于更复杂一些的模型或损失函数,通常不存在解析解。2.2节将介绍在机器学习领域中运用更为广泛的梯度下降算法,该算法通过最小化损失函数,训练得到所要求解的参数w*。