浅谈线性回归

线性回归即 y = wx + b ,是深度学习中的最基本组成元件。

线性回归

回归(regression) 即通过建模某个或多个自变量与因变量之间关系,预测某一数值的问题。回归问题预测的数值是连续的;分类则是预测离散数值。

线性回归则是假设自变量 x\mathbf{x} 与因变量 yy 之间具有线性关系,且观测数据噪声遵循正态分布。一般地,我们把试图预测的目标成为标签(label)目标(target),预测所依据的自变量(数据)称为特征(feature)协变量(covariate)。一般使用 nn 表示数据集样本容量,对于索引为 ii 的样本,其输入表示为 x(i)=[x1(i),x2(i),]\mathbf{x}^{(i)} = [x_1^{(i)},x_2^{(i)}, \cdots]^{\top} ,对应标签为 y(i)y^{(i)}

线性模型

首先,给出线性模型的一般定义式:

y^=wx+b. \hat{y} = \mathbf{w}^{\top}\mathbf{x} + b.
其中 w\mathbf{w} 表示模型权重(weight)bb 表示偏置(bias)x\mathbf{x} 表示单个数据样本的特征。对于特征矩阵 XRn×d\mathbf{X} \in \R^{n \times d} ,我们同样有:
y^=Xw+b. \hat{\mathbf{y}} = \mathbf{Xw} + b.
线性模型中,偏置项的意义在于提升模型的表达能力,其物理意义即为当所有特征取值都为 0 时,预测值应该为多少。上述二式即代表对于输入特征的仿射变换(affine transformation),即通过加权对特征进行线性变换(linear transformation),并通过偏置项进行平移(translation)

矩阵乘法即对于张空间内的向量进行变换。

我们的任务就是对于给定的特征数据集,找到一组最优的 w,b\mathbf{w}, b 来拟合给定的标签,即寻找最优模型参数。

损失函数

损失函数(loss function)能够量化目标的实际值与预测值之间的差距。通常我们有损失 0\geq 0 ,且数值越小损失越小,完美预测时损失为 0 。回归问题中最常用的损失函数为平方损失函数(Square Error Function)

l(i)(w,b)=12(y^(i)y(i))2. l^{(i)}(\mathbf{w}, b) = \frac{1}{2}(\hat{y}^{(i)} - {y}^{(i)})^2.
常数 12\frac{1}{2} 的意义在于使 ll 的导数常数系数为 1 。对于整个数据集,我们有:
L(w,b)=1ni=1nl(i)(w,b)=1ni=1n12(wx(i)+by(i))2. L(\mathbf{w}, b) = \frac{1}{n} \sum^n_{i = 1}l^{(i)}(\mathbf{w}, b) = \frac{1}{n}\sum^{n}_{i = 1}\frac{1}{2}(\mathbf{w}^{\top}\mathbf{x}^{(i)} + b - y^{(i)})^2 .

随机梯度下降

尽管对于线性回归,我们可以通过最小化 yXw2\Vert\mathbf{y} - \mathbf{Xw}\Vert^2 求出其解析解 w=(XX)1Xy\mathbf{w}^* = (\mathbf{X}^{\top}\mathbf{X})^{-1}\mathbf{X}^{\top}\mathbf{y} ,但在大部分深度学习模型中,我们无法简单通过解析解来获得最优参数。**梯度下降(gradient descent)**正是一中可以通过不断地在损失函数递减的方向上更新参数来降低误差的方法。

梯度下降的一般定义即是在迭代时计算损失函数均值关于模型参数的偏导数(通过链式法则,也称梯度),但效率极低。为了避免在每一次更新时遍历一遍数据集,我们通常会在每次需要更新的时候随机抽取一小批样本,即小批量随机梯度下降(minibatch stochastic gradient descent)

在每次迭代时,我们首先随机抽样一个容量固定的小批量 B\mathcal{B} ,并计算小批量的平均损失关于模型参数的偏导数。最后,我们将梯度乘以一个预先确定的正数 η\eta学习率,learning rate),并从当前参数的值中减掉。

形式化地,对于每次迭代,我们有:

(w,b)(w,b)ηBiB(w,b)l(i)(w,b). (\mathbf{w}, b) \larr (\mathbf{w}, b) - \frac{\eta}{\vert\mathcal{B}\vert} \sum_{i \in \mathcal{B}}\partial_{(\mathbf{w}, b)}l^{(i)}(\mathbf{w}, b) .
对于类似 η\etaB\vert\mathcal{B}\vert批次大小,batch size) 的可以调整但是不在训练过程中的参数我们成为超参数(hyperparameter)。**调参(hyperparameter tuning)**即选择超参数的过程。

需要注意的是,即便函数完全遵循线性回归且无噪声,模型参数 w^\hat{\mathbf{w}}b^\hat{b} 也不会达到实际最小值,而是无限接近最小值。对于较为复杂的深度神经网络,损失平面通常包含多个最小值。实践上一般不会追求训练集上的最小损失,而是追求能在陌生数据上实现较小损失。这一过程即泛化(generalization)

噪声与正态分布

若随机变量 xx 具有均值 μ\mu 和方差 σ2\sigma^2 ,其正态分布概率密度函数如下:

p(x)=12πσ2exp(12σ2(xμ)2). p(x) = \frac{1}{\sqrt{2\pi\sigma^2}}\exp(-\frac{1}{2\sigma^2}(x - \mu)^2) .
改变均值会产生沿 xx 轴的偏移,增加方差会分散分布、降低峰值。

而均方误差损失函数可以用于线性回归的原因之一是我们假设了观测中包含噪声,而噪声服从正态分布:

y=wx+b+ϵ. y = \mathbf{w}^{\top}\mathbf{x} + b + \epsilon.
通过给定的 x\mathbf{x} 观测到特定 yy 的**似然(likelihood)**为:
p(yx)=12πσ2exp(12σ2(ywxb)2). p(y \mid \mathbf{x}) = \frac{1}{\sqrt{2\pi\sigma^2}}\exp(-\frac{1}{2\sigma^2}(y - \mathbf{w}^{\top}\mathbf{x} - b)^2) .
对于整个数据集的似然,即为:
P(yX)=i=1np(y(i)x(i)). P(\mathbf{y} \mid \mathbf{X}) = \prod^n_{i = 1}p(y^{(i)}\mid \mathbf{x}^{(i)}) .
通过最小化负对数似然,得:
logP(yX)=i=1n12log(2πσ2)+12σ2(y(i)wx(i)b)2. -\log P(\mathbf{y} \mid \mathbf{X}) = \sum^n_{i = 1}\frac{1}{2}\log(2\pi\sigma^2) + \frac{1}{2\sigma^2}(y^{(i)} - \mathbf{w}^{\top}\mathbf{x}^{(i)} - b)^2 .
剔除式中常数项,该式即等价于最小化均方误差。