深度学习
深度学习(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)网络中的一部分节点连接,使得模型不再重度依赖于某几个特定的特征权重,从而提高了模型的泛化能力。