1.2.2 回归
现在假设我们想要预测一个实值数量 ( y \in \mathbb{R} ) 而不是一个类别标签 ( y \in {1, \ldots, C} );这被称为回归。例如,在鸢尾花的情况下,( y ) 可能是花被吃后的毒性程度,或者是植物的平均高度。
回归
回归与分类非常相似。然而,由于输出是实值,我们需要使用不同的损失函数。对于回归,最常见的选择是使用二次损失或 ( \ell_2 ) 损失:
[ \ell_2(y, \hat{y}) = (y - \hat{y})^2 ]
这惩罚大的残差 (y - \hat{y}) 比小的残差更多。4 使用二次损失时的经验风险等于均方误差或 MSE:
[ \text{MSE}(\theta) = \frac{1}{N} \sum_{n=1}^{N} (y_n - f(x_n; \theta))^2 ]
根据第1.2.1.5节的讨论,我们还应该对我们的预测建模不确定性。在回归问题中,通常假设输出分布是高斯分布。正如我们在第2.6节中解释的那样,这个分布由以下定义:
[ \mathcal{N}(y|\mu, \sigma^2) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{1}{2\sigma2}(y-\mu)2\right) ]
其中 (\mu) 是均值,(\sigma^2) 是方差,(\sqrt{2\pi\sigma^2}) 是归一化常数,以确保密度积分为1。在回归的上下文中,我们可以通过定义 (\mu = f(x; \theta)) 使均值依赖于输入。因此,我们得到以下条件概率分布:
[ p(y|x; \theta) = \mathcal{N}(y|f(x; \theta), \sigma^2) ]
如果我们假设方差 (\sigma^2) 是固定的(为了简单起见),相应的平均(每个样本)负对数似然变为
[ \text{NLL}(\theta) = -\frac{1}{N} \sum_{n=1}^{N} \log\left(\frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{1}{2\sigma^2}(y_n - f(x_n; \theta))^2\right)\right) ]
[ = \frac{1}{2\sigma^2} \text{MSE}(\theta) + \text{const} ]
我们看到负对数似然与 MSE 成正比。因此,计算参数的最大似然估计将导致最小化平方误差,这似乎是拟合模型的合理方法。
1.2.2.1 线性回归
作为回归模型的一个例子,考虑图1.5a中的1维数据。我们可以使用以下简单的线性回归模型来拟合这些数据:
[ f(x; \theta) = b + w \cdot x ]
图1.5:(a)对一些1维数据进行线性回归。(b)垂直线表示每个输入的观察输出值(蓝色圆圈)与其预测值(红色叉)之间的残差。最小二乘回归的目标是选择一条最小化残差平方和的直线。由lin-reg_residuals_plot.ipynb生成。
其中 (w) 是斜率,(b) 是偏移,(\theta = (w, b)) 是模型的所有参数。通过调整 (\theta),我们可以最小化图1.5b中垂直线所示的残差平方和,直至找到最小二乘解:
[ \hat{\theta} = \text{argmin}_\theta \text{MSE}(\theta) ]
有关详细信息,请参阅第11.2.2.1节。
如果我们有多个输入特征,我们可以写成
[ f(x; \theta) = b + w_1x_1 + \ldots + w_Dx_D = b + \mathbf{w}^\top \mathbf{x} ]
其中 (\theta = (\mathbf{w}, b))。这被称为多元线性回归。
例如,考虑作为 2D 位置的函数预测温度的任务。图1.6(a)绘制了以下线性模型的结果:
[ f(x; \theta) = b + w_1x_1 + w_2x_2 ]
我们可以扩展该模型以使用 (D > 2) 个输入特征(如一天中的时间),但这样做会变得更难以可视化。
1.2.2.2 多项式回归
图1.5a中的性模型显然不太适合数据。我们可以通过使用阶数 (D) 的多项式回归模型来改善拟合。其形式为 (f(x; w) = w^\top \phi(x)),其中 (\phi(x)) 是从输入派生出的特征向量,其具有以下形式:
[ \phi(x) = [1, x, x^2, \ldots, x^D] ]
图1.6: 应用于2D数据的线性和多项式回归。纵轴是温度,横轴是房间内的位置。数据由英特尔伯克利实验室的一些远程感测器采集(数据由Romain Thibaux提供)。(a) 拟合平面具有 (f
ˆ(x) = w_0 + w_1x_1 + w_2x_2) 的形式。(b) 温度数据拟合了一个二次多项式,其形式为 (f
ˆ(x) = w_0 + w_1x_1 + w_2x_2 + w_3x2_1 + w_4x_2_2)。由linreg_2d_surface_demo.ipynb生成。
图1.7: 应用于1D数据的多项式回归。纵轴是输出,横轴是输入。数据由一个由Romain Thibaux收集的Intel实验室的远程传感器中的某个子集提供。 (a) 对于 (D=2) 的情况,拟合效果更好。 (b) 增加 (D) 的值,直到 (D=N−1)。在这种情况下,我们每个数据点都有一个参数,因此我们可以完美地插值数据。 © (D=N−1) 时的拟合效果更好。由linreg_1d.ipynb生成。
深度神经网络: 在图1.7c中,我们展示了在 (D=N−1) 的情况下拟合1D数据的多项式回归模型。尽管它在训练集上达到了零MSE,但它对于新的输入可能不是一个好的预测器,因为它太“摆动”了。我们将在第1.2.3节中详细讨论这一点。
深度神经网络: 在第1.2.2.2节中,我们手动指定了输入特征的转换,即多项式展开,(\phi(x) = [1, x_1, x_2, x_2^1, x_2^2, . . .])。通过学习自动执行这种非线性特征提取,我们可以创建更强大的模型。如果我们让 (\phi(x)) 有它自己的参数集,比如 (V),那么整体模型的形式为
[f(x; w, V) = w^T\phi(x; V)]
这里 (w) 是权重,(V) 是 (\phi(x)) 的参数。
在深度学习中,我们通常使用神经网络来拟合数据。神经网络由多个层组成,每一层包含多个神经元。每个神经元与上一层的所有神经元相连,具有权重。通过将神经元的权重与输入相加,然后通过激活函数进行非线性变换,神经网络可以捕捉数据中的复杂关系。在训练过程中,通过调整权重,网络尝试最小化损失函数,使其预测尽可能接近实际观测值。这种端到端的学习方式允许神经网络自动学习输入特征的表示,而无需手动设计特征转换。
图1.7显示了在21个数据点上拟合的不同阶数的多项式。在图中,(a)是2次多项式,(b)是14次多项式,©是20次多项式。可以观察到,随着多项式阶数的增加,模型对训练数据的拟合程度逐渐提高。然而,当多项式的阶数过高时,模型可能会过度拟合训练数据,导致在新的数据上表现不佳。图中的子图(d)显示了均方误差(MSE)随多项式阶数的变化情况。这强调了过度拟合问题,因为在某个点之后,MSE开始增加,而不是减小。这表明模型在训练集上表现很好,但在测试集上性能较差。这是一个例子,说明在选择模型时需要权衡模型的复杂性和泛化性能。
上述描述介绍了深度神经网络(DNNs)的关键思想。DNN是由多个嵌套函数组成的模型,每个函数对输入进行一些变换,最终通过一系列这样的变换得到最终的预测。这些模型的层数和参数可以根据数据和任务的特点进行调整,从而使其适应各种复杂的输入输出关系。
DNN的一些常见变体包括卷积神经网络(CNNs),主要用于图像处理,以及循环神经网络(RNNs),主要用于序列数据。这些网络在不同的领域取得了显著的成就,因为它们能够自动学习特征表示,从而在处理复杂数据时更加灵活和有效。
1.2.3 过拟合和泛化
我们可以以以下等效的方式重写方程(1.4)中的经验风险:
L(θ; Dtrain) = 1 / |Dtrain| Σ (x, y) ∈ Dtrain (y, f(x; θ)) (1.30)
其中,|Dtrain| 是训练集 Dtrain 的大小。这个表述很有用,因为它明确了损失函数在哪个数据集上进行评估。
通过使用适当灵活的模型,我们可以将训练损失驱动到零(假设没有标签噪声),通过简单地记住每个输入的正确输出。例如,图1.7©完美地插值了训练数据(除了最右边的最后一个点)。但是,我们关心的是在新数据上的预测准确性,这可能不是训练集的一部分。一个完全拟合训练数据但过于复杂的模型被称为过拟合。
要检测模型是否过拟合,让我们假设(目前)我们可以访问用于生成训练集的真实(但未知)分布 p∗(x, y)。然后,我们计算理论期望损失或总体风险 L(θ; p∗),即 Ep∗(x,y)[`(y, f(x; θ))] (1.31)
L(θ; p∗) − L(θ; Dtrain) 被称为泛化差距。如果模型具有较大的泛化差距(即,低经验风险但高总体风险),这表明它过拟合。
在实践中,我们不知道 p∗。然而,我们可以将我们拥有的数据划分为两个子集,即训练集和测试集。然后,我们可以使用测试风险来近似总体风险:
L(θ; Dtest) = 1 / |Dtest| Σ (x, y) ∈ Dtest (y, f(x; θ)) (1.32)
例如,在图1.7d中,我们绘制了多项式回归的训练误差和测试误差作为度数 D 的函数。我们看到随着模型变得更复杂,训练误差趋近于0。然而,测试误差具有特征性的U形曲线:在左侧,当 D = 1 时,模型欠拟合;在右侧,当 D 1 时,模型过拟合;当 D = 2 时,模型复杂度是“刚刚好”的。
我们如何选择合适复杂度的模型?如果我们使用训练集来评估不同的模型,我们将始终选择最复杂的模型,因为它将具有最多的自由度,因此将具有最小的损失。因此,我们应该选择具有最小测试损失的模型。
在实践中,我们需要将数据划分为三个集合,即训练集、测试集和验证集;后者用于模型选择,我们仅使用测试集来估计未来性能(总体风险),即测试集不用于模型拟合或模型选择。有关更多详细信息,请参阅第4.5.4节。
1.2.4 没有免费午餐定理
所有模型都是错误的,但有些模型是有用的。— George Box [BD87, p424].5
鉴于文献中存在各种各样的模型,人们自然会想知道哪一个是最好的。不幸的是,没有单一的最佳模型可以在所有问题上都表现得最优 — 这有时被称为没有免费午餐定理 [Wol96]。原因在于,在一个领域中表现良好的一组假设(也称为归纳偏见)可能在另一个领域中表现不佳。选择合适的模型的最佳方法是基于领域知识和/或试错(即使用模型选择技术,如交叉验证(第4.5.4节)或贝叶斯方法(第5.2.2节和第5.2.6节)。因此,拥有多个模型和算法技术是很重要的,以供选择。