深度学习

深度学习(Deep Learning)是一种有着多个层次的表征学习方式,通过简单但非线性的模块,自动地将每个层次的特征(从原始输入开始)转变为更高级抽象的表征形式。它主要通过神经网络来实现。

一. 普世逼近定理

普世逼近定理为神经网络的强大拟合能力提供了数学基础保障。

  • 核心结论:具有至少有一层隐藏层、包含有限数量神经元、且利用诸如 ReLU等非线性激活函数的前馈神经网络,它可以以任意精度逼近任意一个定义在 Rn\mathbb{R}^nRn 的闭集里的连续函数。

二. 训练深度网络的难点与现代解决方案

在深度学习的早期,研究人员遇到了数据、算力、优化等多方面的阻碍,但这些难点在如今都已被针对性的技术逐一化解。

1. 缺乏大数据

  • 历史难点:以前缺乏足够的标注数据来驱动深层网络。
  • 解决方案:现在我们处于“大数据”时代。
    • 图像领域:拥有如 ImageNet(超过千万张图片)等海量数据。
    • 文本领域:拥有如 Wikipedia(数百万篇文章)的无监督语料。
    • 行为领域:如 Criteo Terabyte 用户点击日志推动了推荐系统。众包平台也极大提升了数据清理和标注的效率。

2. 缺乏计算资源

  • 历史难点:传统 CPU 算力不足以支撑极大规模参数的矩阵运算。
  • 解决方案:基于 GPU 和 **HPC(高性能计算)**的普及。
    • GPU 的优势:CPU 优化的是延迟,而 GPU 优化的是带宽,具备大量并行计算核心,极其适合神经网络中的大规模张量运算和矩阵乘法。

3. 梯度消失与梯度爆炸

  • 历史难点:层数越深,距离输出层越远的层越容易出现梯度消失(梯度值在某层变为0,使得训练无进展)或梯度爆炸(梯度值变为无穷大)。
  • 解决方案
    • 更换激活函数:使用 ReLU 代替传统的 Sigmoid/Tanh。
    • 网络结构改进:采用 批标准化 (Batch Normalization)残差网络 (ResNet)。ResNet 的残差构造块(引入 F(x)+xF(x) + xF(x)+x 的跳跃连接)使得超深层网络的训练成为可能。

4. 容易陷入局部最小值

  • 历史难点:深度学习面临的是复杂的非凸优化问题,寻找全局最优解极其困难。
  • 解决方案
    • 预训练 (Pre-training):如利用限制玻尔兹曼机(RBM)或深度信念网络(DBN)进行无监督学习,找到一个良好的初始化参数,然后再利用有标签数据微调。
    • 现代优化器:使用 Adam优化器。它结合了动量梯度下降法(引入动量项减少震荡)和均方根传递 RMSProp(独立调整学习率)的优点,加速并稳定了收敛过程。

5. 正则化(防止过拟合)

  • 历史难点:传统的正则化方法在非凸曲面上处理可能十分危险且效果有限。
  • 解决方案:使用 Dropout 方法
    • 原理:在每个小批量训练时,随机禁用(Drop)网络中的一部分节点连接,使得模型不再重度依赖于某几个特定的特征权重,从而提高了模型的泛化能力。

更多推荐