Skip to content

7.模型选择,欠拟合与过拟合,权重衰减 和 丢弃法

内容概述:

  • 模型选择
    • 训练误差和泛化误差
    • K 折交叉验证
  • 欠拟合与过拟合
    • 模型复杂度
    • VC 维度
  • 权重衰减
  • 丢弃法

7.1模型选择

7.1.1训练误差和泛化误差

  • 训练误差:出自于训练数据
  • 泛化误差:出自于新数据
  • 示例:使用历年考试真题准备将来的考试:在历年考试真题取得好成绩(训练误差)并不能保证未来考试成绩好(泛化误差),学生 A 通过死记硬背学习在历年考试真题取得0错误,学生 B 理解并给出答案的解释,学生 B 的泛化误差可能会高一些。

7.1.2 验证数据集和测试数据集

  • 验证数据集:用于评估模型的数据集 例如:取出50%的训练数据、不应与训练数据混在一起(#1 常见错误)
  • 测试数据集:只可以使用一次数据集,例如未来的考试、我买的房子售价、Kaggle的私人排行榜中使用的数据集

7.1.2 K 折交叉验证

在没有足够的数据时非常有用

算法:

  • 将训练数据划分为 K 个部分
  • 对于 i = 1,...,K
  • 使用第 i 部分作为验证集,其余部分用于训练
  • 报告 K 个部分在验证时的平均错误

常见 K 值选择:5 - 10

7.2欠拟合与过拟合

  • 欠拟合:模型过于简单,无法捕捉数据中的模式
  • 过拟合:模型过于复杂,捕捉了数据中的噪声和异常值

1770377447290

7.2.1 模型复杂度

  • 模型复杂度:模型能够拟合数据的能力
  • 复杂度过低:欠拟合
  • 复杂度过高:过拟合

1770377515818

估计模型复杂度的方法:

1770377608118

复杂度:d+1

1770377637448 复杂度:(d+1)m+(m+1)k

很难比较不同算法之间的复杂度:树的深度、神经网络的层数和每层的神经元数量等 给定算法族,两个主要因素很重要:参数个数、每个参数采用的值

7.2.2 VC 维度

VC 维度:衡量模型复杂度的标准

对于分类模型,VC维度等于这个数据集的大小,无论我们如何分配标签,都存在一个模型来完美地对它进行分类.

7.3 权重衰减

通过限制参数值范围来降低模型复杂性\( \min_{w,b}\ \ell(w,b) \quad \text{subject to} \quad \|w\|^2 \leq \theta \)

  • 通常不限制偏差参数 b
  • 做或不做在实践中几乎没有区别
  • 小 θ 意味着更多的正则化

平方正则化作为软约束

对于每一个 θ,我们都可以找到 λ 将硬约束版本重写为\( \min_{w,b}\ \ell(w,b) + \lambda/2 \|w\|^2 \)

参数 λ 控制正则化的重要性:

  • λ=0: 没有效果
  • λ→∞: 强烈正则化,所有权重都趋向于0

更新规则

  • 计算梯度

在t时刻,权重更新为: \(\begin{aligned}\frac{\partial}{\partial w} \left( \ell(w,b) + \frac{\lambda}{2} \|w\|^2 \right) = \frac{\partial \ell(w,b)}{\partial w} + \lambda w\end{aligned}\)

  • 更新权重 \(\begin{aligned}w \leftarrow w - \alpha \left( \frac{\partial \ell(w,b)}{\partial w} + \lambda w \right) = (1 - \alpha \lambda) w - \alpha \frac{\partial \ell(w,b)}{\partial w}\end{aligned}\)

通常 λ 很小,所以权重衰减项 (1 - α λ) 接近于 1

权重衰减的效果:每次迭代都会将权重乘以一个小于 1 的数,从而逐渐减小权重的值。这有助于防止过拟合,因为它限制了模型的复杂度,防止模型记住训练数据中的噪声和异常值。

7.4暂退法

在输入的适度变化下,一个好的模型应该是稳定的,用输入噪声训练相当于 Tikhonov 正则化,丢弃法:将噪音注入内部隐藏层,每次训练迭代时,随机丢弃一部分隐藏层的输出

添加没有偏差的噪声

1.将噪声添加到 x 中以获得 x‘: \(\begin{aligned}x' = x + \epsilon\end{aligned}\)

  • 例如:ε ~ N(0, σ^2 I),其中 I 是单位矩阵

噪声的引入不会改变输入的期望 \(\begin{aligned}E[x'] = E[x + \epsilon] = E[x] + E[\epsilon] = x\end{aligned}\)

2.丢弃法将噪声添加到每一个元素 x_i 中: \(\begin{aligned}x_i' = \begin{cases} 0 & \text{with probability } p \\ x_i/(1-p) & \text{otherwise} \end{cases}\end{aligned}\)

丢弃法的训练

  • 每次训练迭代时,随机丢弃一部分隐藏层的输出
  • 例如:丢弃率 p=0.5,意味着每个隐藏层输出有 50% 的概率被丢弃

1770379748108

\(h=\sigma(Wx+b)\)

\(\tilde{h}=dropout(h)\)

\(o=\sigma(W'\tilde{h}+b')\)

\(y=softmax(o)\)

丢弃法的推断

正规化仅用于模型训练

丢弃法在推断中用于:\(h^′=dropout(h)\)

保证确定性结果:在推断时,每个隐藏层的输出都被归一化,以确保模型的输出是确定的,而不是随机的。