深度学习中的正则化技术 - 正则化和欠约束问题篇

序言

在机器学习与深度学习中,正则化是一项至关重要的技术,特别是在处理复杂数据和构建高效模型时。正则化的引入主要为了解决一类常见问题——欠约束问题欠约束问题通常发生在数据分布具有某些特定性质或模型复杂度过高时,导致模型在训练过程中无法稳定收敛,甚至可能出现过拟合现象。正则化作为一种有效的约束手段,通过引入额外的惩罚项来限制模型的复杂度,从而提高模型的泛化能力。

正则化和欠约束问题

  • 在某些情况下,为了正确定义机器学习问题,正则化是必要的
  • 机器学习中许多线性模型,包括线性回归和主成分分析( PCA \text{PCA} PCA),都依赖于求逆矩阵 X ⊤ X \boldsymbol{X}^\top\boldsymbol{X} XX
  • 只要 X ⊤ X \boldsymbol{X}^\top\boldsymbol{X} XX奇异的这就是不可能的。每当数据生成分布的一些方向上确实没有差异时,或因为例子较少(即相对输入特征( X \boldsymbol{X} X的列)来说)而在一些方向没有观察到方差,这个矩阵就是奇异的。
  • 在这种情况下,正则化的许多形式对应于求逆 X ⊤ X + α I \boldsymbol{X}^\top\boldsymbol{X}+\alpha\boldsymbol{I} XX+αI。这个正则化矩阵可以保证是可逆的。
  • 相关矩阵可逆时,这些线性问题有闭式解。没有闭式解的问题也可能是欠定的。
    • 一个例子是应用于线性可分问题的逻辑回归。如果权重向量 w \boldsymbol{w} w能够实现完美分类,那么 2 w 2\boldsymbol{w} 2w也会以较高似然实现完美分类。
    • 类似随机梯度下降的迭代优化算法将持续增加 w \boldsymbol{w} w的大小,理论上永远不会停止。
    • 在实践中,数值实现的梯度下降最终会达到导致数值溢出的超大权重,此时的行为将取决于程序员如何处理这些不是真正数字的值。
  • 大多数形式的正则化能够保证应用于欠定问题的迭代方法收敛。例如,当似然的斜率(slope)等于权重衰减的系数时,权重衰减将阻止梯度下降继续增加权重的大小。
  • 使用正则化解决欠定问题的想法超出了机器学习范畴。同样的想法在几个基本线性代数问题中也非常有用。
  • 正如我们在应用数学与机器学习基础 - 线性代数篇看到,我们可以使用 Moore-Penrose \text{Moore-Penrose} Moore-Penrose求解欠定线性方程。回想 X \boldsymbol{X} X伪逆 X + \boldsymbol{X}^+ X+的一个定义:
    X + = lim ⁡ α → 0 ( X ⊤ X + α I ) − 1 X ⊤ —公式1 \boldsymbol{X}^+=\lim\limits_{\alpha\to0}(\boldsymbol{X}^\top\boldsymbol{X}+\alpha\boldsymbol{I})^{-1}\boldsymbol{X}^\top\quad\textbf{\footnotesize{---公式1}} X+=α0lim(XX+αI)1X公式1
  • 现在我们可以将公式1看作执行具有权重衰减的线性回归。具体来说,当正则化系数趋向 0 0 0公式1是公式 w = ( X ⊤ X + α I ) − 1 X ⊤ y \boldsymbol{w}=(\boldsymbol{X}^\top\boldsymbol{X}+\alpha\boldsymbol{I})^{-1}\boldsymbol{X}^\top\boldsymbol{y} w=(XX+αI)1Xy的极限。
  • 因此,我们可以将伪逆解释为使用正则化来稳定欠定问题。

总结

  • 正则化技术通过向模型的损失函数中添加正则化项,对模型的参数进行约束,使得模型在训练过程中不仅关注于减少训练误差,还考虑到模型参数的复杂性和稳定性。这种策略有效解决了欠约束问题,避免了模型在训练数据上过拟合,从而提高了模型在未见过的测试数据上的表现。
  • 常见的正则化方法包括L1正则化、L2正则化等,它们分别通过不同的方式(如参数向量的绝对值之和或平方和)来惩罚模型的复杂度。
  • 此外,正则化还与其他技术如数据集增强、噪声鲁棒性、多任务学习等相结合,进一步提升了模型的泛化能力和鲁棒性。
  • 总之,正则化是解决机器学习和深度学习中欠约束问题的关键手段,对于构建高效、稳定的模型具有重要意义。

往期重要内容回顾

应用数学与机器学习基础 - 线性代数篇
应用数学与机器学习基础 - 随机梯度下降算法篇

相关推荐

  1. 深度学习技术 - 稀疏表示

    2024-07-10 12:50:07       6 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 12:50:07       4 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 12:50:07       5 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 12:50:07       4 阅读
  4. Python语言-面向对象

    2024-07-10 12:50:07       5 阅读

热门阅读

  1. 小程序的制作费用很贵么

    2024-07-10 12:50:07       8 阅读
  2. c#实现23种常见的设计模式--动态更新

    2024-07-10 12:50:07       6 阅读
  3. 银河麒麟(V10SP1)-arm版交叉编译-qt-5.12.12源码

    2024-07-10 12:50:07       7 阅读
  4. 华为机考真题 -- 游戏分组

    2024-07-10 12:50:07       10 阅读
  5. Linux 期末速成(知识点+例题)

    2024-07-10 12:50:07       10 阅读
  6. 【基础篇】1.8 C语言基础(二)

    2024-07-10 12:50:07       8 阅读
  7. element ui form添加校验规则

    2024-07-10 12:50:07       8 阅读
  8. splice方法的使用#Vue3

    2024-07-10 12:50:07       9 阅读
  9. 使用Dockerfile和ENTRYPOINT运行Python 3脚本

    2024-07-10 12:50:07       9 阅读
  10. 黑龙江等保测评对中小企业成本效益分析

    2024-07-10 12:50:07       9 阅读