一.前言
最近几天跟随李沐老师的步伐也是成功进入线性代数的学习,不得不说,沐神的讲解确实厉害。作为深度学习的一个基础模型,线性回归有着重要的分量,学习好线性回归是相当有必要的。
二.线性回归
1.线性回归的基本元素
以买房为例:我们希望根据房屋的面积(平方英尺)和房龄(年)来估算房屋价格(美元)。 为了开发一个能预测房价的模型,我们需要收集一个真实的数据集。 这个数据集包括了房屋的销售价格、面积和房龄。
对应机器学习的术语为:
数据集——训练数据集(training data set)/训练集(training set)
每行数据——样本(sample)/数据点(data point)/数据样本(data instance)
价格(预测的目标)——标签(label)/目标(target)
面积和房龄(自变量)——特征(feature)/协变量(covariate)
2.线性回归模型
线性回归基于几个简单的假设:
1.假设自变量x和因变量y之间的关系是线性的, 即y可以表示为x中元素的加权和,这里通常允许包含观测值的一些噪声。
2.假设任何噪声都比较正常,如噪声遵循正态分布。
于是我们可以得到线性假设:目标(房屋价格)可以表示为特征(面积和房龄)的加权和
price=warea⋅area+wage⋅age+b. (1)
其中,warea 是权重,b是偏置(bias)/偏移量(offset),偏移量可以增强我们模型的表达能力,使其能够拟合更多的模型。
在机器学习领域,我们通常使用的是高维的数据集,因此采用线性代数的方式来建模会很方便。我们将所有的特征放在向量x ∈ Rd中,并将所有权重放在向量w ∈ Rd 中,其中d是特征维度,并用y^来表示模型的预测结果,从而我们可以用点积形式来简洁地表达模型:
y^=wTx+b. (2)
在公式(2)中,向量x对应单个数据样本的特征,此时我们用矩阵w ∈ Rn×d来引用整个数据集的n个样本的特征,X的每一行是一个样本,每一列是一种特征。
那么对于特征集合X,预测值y^ ∈ Rn可以通过矩阵-向量乘法来表示:
y^=Xw+b. (3)
预测房价模型的公式就可以用(3)来进行表示,我们通过该模型就可以根据面积和房龄等信息来预测房价,但问题在于我们无法确定w和b的值,线性回归就是寻找出一组权重w和偏置b,当给定来自X中取样的独立同分布的新样本特征时,这组权重和偏置可以使得最终的预测值y^与真实值y yy之间的误差尽可能小。
3.损失函数
在回归问题中,常使用最小二乘法来衡量模型的质量,其定义为:
L(i)(w,b)=1/2(y^(i)−y(i))2. (4)
这就是该模型的损失函数,其中i代表第i个样本,L(i)(w,b)就是第i个样本的预测误差。
上述只是对于每一条样本的预测误差,而我们最终的目的是为了去拟合整个数据集上的样本,因此为了度量模型在整个数据集上的质量,我们需要计算在训练集n nn个样本上的损失均值:
(5)
训练模型也就是去寻找一组参数(w*,b*)来最小化在所有训练样本上总损失的过程:
(6)
5.梯度下降
将(5)继续化简:
可以从(7)得出:损失函数是关于b的二次函数。
我们的目标是找到损失函数的极小值(最优值),但直接求最优解是一件很难的事情,并且只有线性回归模型才能最有值,在其他复杂的模型中,我们都只能无限逼近最优解,因此我们换一种思路来求解:
我们求当前损失函数L对b的偏导,就可以得出函数值的变化趋势。导数为正,则代表函数值呈上升趋势;导数为负,则代表函数值呈下降趋势。我们需要求函数的最小值,因此沿着导数的反方向就能逐渐靠近最优值:
(8)中的ϵ是学习率,可以理解为沿着当前方向走多少“步”。
由上可推,w的更新与b类似,因此: