Datawhale X 李宏毅苹果书 Al夏令营 – Task3 学习笔记
第2章 实践方法论
2.1 模型偏差
-
概念: 模型偏差是指由于模型过于简单,导致其无法有效学习训练数据中的模式,结果是模型在训练集上的损失较高。
-
公式: 设模型为 f θ ( x ) f_{\theta}(x) fθ(x),目标是通过优化参数 θ \theta θ 使得损失函数 L ( f θ ( x ) , y ) L(f_{\theta}(x), y) L(fθ(x),y) 最小化。但由于模型复杂度不够,无法找到使损失最小的 θ \theta θ。
-
问题描述:
- 例如,给定一组输入输出对 ( x i , y i ) (x_i, y_i) (xi,yi),模型 f θ ( x ) f_{\theta}(x) fθ(x) 可能过于简单,无法有效捕捉 y y y 和 x x x 之间的关系。结果即使找到最佳参数 θ ∗ \theta^* θ∗,损失 L ( f θ ∗ ( x ) , y ) L(f_{\theta^*}(x), y) L(fθ∗(x),y) 依然较高。
-
例子:
- 假设要预测未来的观看人数,输入特征只包含前一天的数据,模型无法利用更长时间段的数据,因此预测效果不佳。这种情况下,模型可能过于简单。
-
解决方法:
-
增加模型灵活性: 通过增加输入特征(如引入更长时间段的数据)或者使用更复杂的模型(如深度神经网络)来提高模型的表现。
-
例子: 设 x 1 x_1 x1 为前一天的数据, x 2 x_2 x2 为前两天的数据,可以将输入特征扩展为 x = ( x 1 , x 2 ) x = (x_1, x_2) x=(x1,x2) 以增加模型的灵活性。
-
2.2 优化问题
-
概念: 优化问题指的是在模型训练过程中,由于优化算法(如梯度下降)无法找到全局最优解,模型可能会停留在局部最小值,导致损失无法进一步降低。
-
公式: 梯度下降法更新参数的公式为:
θ t + 1 = θ t − η ∇ θ L ( f θ ( x ) , y ) \theta_{t+1} = \theta_t - \eta \nabla_{\theta} L(f_{\theta}(x), y) θt+1=θt−η∇θL(fθ(x),y)
其中 η \eta η 是学习率。如果梯度 ∇ θ L \nabla_{\theta} L ∇θL 在某点为零(局部最小值),则参数更新将停止,可能导致损失较大。 -
问题描述:
- 梯度下降法在复杂模型(如深层神经网络)中,容易陷入局部最小值,导致模型无法充分训练,损失无法达到最低。
-
例子:
- 研究中对比了20层与56层的残差网络(ResNet),实验发现,虽然56层网络理论上应比20层网络更强大,但实际训练中56层网络的损失更大,这表明56层网络在优化过程中遇到了问题。
-
解决方法:
-
改进优化算法: 采用更先进的优化算法如Adam,其更新公式为:
θ t + 1 = θ t − η m ^ t v ^ t + ϵ \theta_{t+1} = \theta_t - \eta \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} θt+1=θt−ηv^t+ϵm^t
其中 m ^ t \hat{m}_t m^t 和 v ^ t \hat{v}_t v^t 是梯度的一阶和二阶矩估计,能够更好地应对梯度下降法的局部最小值问题。 -
实验比较: 通过对比不同复杂度模型的训练表现,判断问题是否出在优化上。
-
2.3 过拟合
-
概念: 过拟合是指模型在训练数据上表现极佳,但在测试数据上表现不佳,这表明模型过度拟合了训练数据中的噪声。
-
公式: 模型的总误差可以分为训练误差和测试误差。如果模型过拟合,训练误差低,而测试误差高:
总误差 = 训练误差 + 测试误差 \text{总误差} = \text{训练误差} + \text{测试误差} 总误差=训练误差+测试误差 -
问题描述:
- 当模型过于复杂,能够记住训练数据的所有细节,但在面对新数据时无法泛化,表现不佳。
-
极端例子:
- 假设有一个模型,它能够完全记住训练数据中的每一个点,对于每一个输入 x i x_i xi,它输出对应的 y i y_i yi,使得训练损失为零。但对于测试数据,由于模型只记住了训练数据,在新数据上表现很差,损失很高。
-
解决方法:
-
增加训练数据: 通过数据增强(如图像翻转、缩放等)生成更多样本,帮助模型学习到更广泛的模式。
-
限制模型复杂度: 使用正则化方法(如L2正则化)来限制模型的自由度,防止模型过拟合:
L reg = L ( f θ ( x ) , y ) + λ ∥ θ ∥ 2 L_{\text{reg}} = L(f_{\theta}(x), y) + \lambda \|\theta\|^2 Lreg=L(fθ(x),y)+λ∥θ∥2 -
早停法: 在验证集损失开始增大时停止训练,以避免过拟合。
-
2.4 交叉验证
-
概念: 交叉验证是一种评估模型表现的方法,通过将数据集分为多部分,循环进行训练和验证,以更全面地评估模型的泛化能力。
-
方法:
- K折交叉验证: 将数据集分为K份,每次使用其中一份作为验证集,其余作为训练集,重复K次,最终取所有验证结果的平均值。
-
公式:
验证误差 = 1 K ∑ i = 1 K L ( f θ i ( x val i ) , y val i ) \text{验证误差} = \frac{1}{K} \sum_{i=1}^K L(f_{\theta_i}(x_{\text{val}_i}), y_{\text{val}_i}) 验证误差=K1i=1∑KL(fθi(xvali),yvali)
其中 L L L 为损失函数, θ i \theta_i θi 为第 i i i 折训练得到的模型参数。 -
作用:
- 提高可靠性: 通过多次验证,可以有效避免模型对特定数据分割的过拟合。
-
例子:
- 在某个实验中,研究者使用了K折交叉验证来选择最优模型,并发现通过验证误差最低的模型,测试误差也显著减少。
2.5 不匹配
-
概念: 不匹配指的是训练数据和测试数据的分布不同,导致模型在测试集上表现远不如在训练集上的情况。
-
问题描述:
- 当训练数据和测试数据来自不同分布时,即使模型在训练数据上表现良好,也可能在测试数据上表现很差。
-
例子:
- 使用2020年的数据作为训练集,而用2021年的数据作为测试集。由于数据分布不同(如2021年有特殊事件影响),模型无法有效预测2021年的数据。
-
解决方法:
-
理解数据: 通过深入分析数据的背景和分布,判断是否存在不匹配现象。
-
迁移学习: 如果确实存在不匹配现象,可以考虑使用迁移学习等技术来适应不同的数据分布。
-