1.1 线性回归
线性回归的基本概念
线性回归基于几个简单的假设
- 假设自变量
和因变量 之间的关系是线性的,也就是说 可以表示为 中元素的加权和; - 假设任何噪声都比较正常,如噪声遵循正太分布;
- 假设自变量
数据集/训练集:对生活中的一些问题进行预测时,收集到的真实数据,称为数据集或训练集;例如通过房屋面积和房龄来预测房屋价格,收集到的所有数据就是数据集。
样本/数据点/数据样本:数据集中的每一个数据项就是一个样本,也就是一个成员的所有相关属性数据;例如一个房屋的面积、年龄、价格,就是一个样本。
标签/目标:需要预测的属性值,例如房屋的价格,在已有的数据集中,我们已知房屋价格,这就是样本的标签,预测时,只知道房屋的面积和年龄,那么价格就是目标;
特征/协变量:进行预测时所依赖的属性,例如房屋的面积和年龄,就是特征。
通常使用 n 来表示样本数,对于索引为 i 的样本,其输入表示为
,对应的标签为 ;
线性模型
线性假设是指目标(房屋价格)可以表示为特征(面积和房龄)的加权和,如下面的式子:
- 式子中的
和 称为权重(weight),权重决定了每个特征对我们预测值的影响。 称为偏置(bias)、偏移量(offset)或截距(intercept)。
- 式子中的
仿射变换:通过加权和对特征进行线性变换(linear transformation), 并通过偏置项来进行平移(translation)。(线性变换和仿射变换的区别在于偏置项,线性变换没有偏置项)
- 严格来说, 上面的式子就是输入特征的一个 仿射变换(affine transformation)。
给定一个数据集,我们的目标是寻找模型的权重
和偏置 , 使得根据模型做出的预测大体符合数据里的真实价格。输出的预测值由输入特征通过线性模型的仿射变换决定,仿射变换由所选权重和偏置确定。
线性模型的向量矩阵表示
机器学习中,通常使用高维数据,在运算过程中使用线性代数表示,当输入包含
个特征时,将对结果 的预测值 表示为 将所有的特征写成一个向量
中,将所有权重放到向量 中,则可以用点积表示上式 上面的式子中,
是一个向量,表示一个样本的特征,现在将所有 个样本的特征组合成一个矩阵 ,矩阵的每一行是一个样本,每一列是一个特征。则预测值 可以按照如下方法表示,这个过程中的求和将使用 广播机制 ; 给定训练数据特征
和对应的已知标签 ,线性回归的目标是找到一组权重向量 和偏置 ,当给定从 的同分布中取样的新样本特征时,这组权重向量和偏置能够使得新样本预测标签的误差尽可能小。
损失函数
在前面我们说过,我们的目的是找到一组权重和偏置让预测值和标签的误差最小,用损失函数(loss function)来表示这个误差的大小;
通常会选择非负数作为损失,且数值越小表示损失越小,完美预测时的损失为 0。
寻找一组参数使得在所有训练样本上的总损失最小,找到的这组参数
即最优参数, 表示使损失函数 最小的参数 ;
平方误差函数
平方误差函数是回归问题中最常用的损失函数;
当样本
的预测值为 ,其相应的真实标签为 时,平方误差可以定义为以下公式: 其中常数
不会带来本质的差别,但这样在形式上稍微简单一些(因为当我们对损失函数求导后常数系数为 1); 所有样本的损失求均值,就得到了模型在整个数据集上的质量,这就是均方误差损失函数:
优化器 Optimizer
随机梯度下降 SDG
线性回归模型的解析解
将偏置和权重进行合并,得到
$$
\begin{aligned}
L(\mathbf{\theta}) &= \frac{1}{2n} \sum_{i=1}^n \left( [\mathbf{X} \mathbf{\theta} - \mathbf{y}]_i \right)^2\
&=\frac{1}{2n}[\mathbf{X} \mathbf{\theta} - \mathbf{y}]^\top[\mathbf{X} \mathbf{\theta} - \mathbf{y}]\
&=\frac{1}{2n}[\mathbf{\theta}^\top\mathbf{X}^\top - \mathbf{y}^\top][\mathbf{X} \mathbf{\theta} - \mathbf{y}]\
&=\frac{1}{2n}[\mathbf{\theta}^\top\mathbf{X}^\top\mathbf{X} \mathbf{\theta}-\mathbf{\theta}^\top\mathbf{X}^\top\mathbf{y}-\mathbf{y}^\top\mathbf{X} \mathbf{\theta}+\mathbf{y}^\top\mathbf{y}]
\end{aligned}
$$
要让损失函数最小,则求损失函数关于参数的极值,对其进行求导可得:
也就是说
线性回归这样的简单问题存在解析解,但并不是所有的问题都存在解析解。 解析解可以进行很好的数学分析,但解析解对问题的限制很严格,导致它无法广泛应用在深度学习里。
在无法得到解析解的情况下,我们需要其他有效方法优化损失函数,梯度下降(gradient descent)是其中一种,这种方法几乎可以优化所有深度学习模型。 它通过不断地在损失函数递减的方向上更新参数来降低误差。
梯度下降算法的思路:
- 计算损失函数关于模型参数的偏导数/梯度,得到一个与模型参数相关的、固定的式子;
- 生成初始一个模型参数,带入偏导数式子中,如果偏导数大于 0,说明此时损失函数随着参数增大而增大,需要减小该参数,偏导数小于 0 同理;
- 用上一步的参数减去将刚才得到的偏导数的固定倍数,对参数进行优化更新;
梯度下降算法每次更新都需要计算新的偏导数值,需要整个数据集的数据参与运算,对这个问题进行优化,提出小批量随机梯度下降(minibatch stochastic gradient descent):在每次迭代中,随机取一小批样本
,计算这批样本的损失函数关于模型参数的导数(梯度); - 其中
表示每个小批量中的样本数,也称为批量大小(batch size)。 表示学习率(learning rate)。 - 批量大小和学习率的值通常是手动预先指定,这些可以调整但不在训练过程中更新的参数称为超参数(hyperparameter)。调参(hyperparameter tuning)是选择超参数的过程。
- 超参数通常是我们根据训练迭代结果来调整的,而训练迭代结果是在独立的验证数据集(validation dataset)上评估得到的。
- 其中
正态分布与均方误差损失函数
正态分布(normal distribution),也称为高斯分布(Gaussian distribution),若随机变量
假设了观测中包含噪声,其中噪声服从正态分布。噪声正态分布如下:
噪声项
- 尽管我们相信给定
预测 的最佳模型会是线性的,但是很难找到包含 个样本的数据集完全形成一条直线,因此加入一个噪声项表示误差;
其中,
根据极大似然估计法选择的估计量称为极大似然估计量, 通过最大化似然对数来简化。由于通常说最小化而不是最大化,因此给式子加一个负号,可以改为最小化负对数似然
现在我们只需要假设
从线性回归到深度网络
采用描述神经网络的方式来描述线性模型,从而把线性模型看作一个神经网络。
我们用“层”符号来重写这个模型:在下面的图将线性回归模型描述为一个神经网络。 需要注意的是,该图只显示连接模式,即只显示每个输入如何连接到输出,隐去了权重和偏置的值。输入为
,因此输入层中的输入数(或称为特征维度,feature dimensionality)为 。
网络的输出为,因此输出层中的输出数是 1。 需要注意的是,输入值都是已经给定的,并且只有一个计算神经元。由于模型重点在发生计算的地方,所以通常我们在计算层数时不考虑输入层。也就是说,图中神经网络的层数为 1。可以将线性回归模型视为仅由单个人工神经元组成的神经网络,或称为单层神经网络。
对于线性回归,每个输入都与每个输出(在本例中只有一个输出)相连,我们将这种变换(图中的输出层)称为全连接层(fully-connected layer)或称为稠密层(dense layer)。
- 标题: 1.1 线性回归
- 作者: HuxJiang
- 创建于 : 2026-02-05 22:29:32
- 更新于 : 2026-06-25 01:28:09
- 链接: https://github.com/HuxJiang/2026/02/05/11-linear-regression-z2dho9f/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。