优化深度神经网络训练 | AI生成和翻译
第八章:深度模型训练的优化
本章节源自Ian Goodfellow、Yoshua Bengio和Aaron Courville合著的《深度学习》,重点探讨适用于深度神经网络训练的梯度优化方法。它在第四章基础概念之上展开,强调通过最小化代价函数 \( J(\theta) \) 来寻找最优参数 \( \theta \),其中 \( J(\theta) \) 通常包含训练数据上的损失项和正则化项。目标在于逼近真实风险 \( J^*(\theta) = \mathbb{E}{(x,y) \sim p{data}} L(f(x;\theta), y) \),但实践中通过训练集上的经验风险实现。
学习与纯优化的差异
机器学习优化的核心并非直接最小化代价函数,而是间接提升在未见数据(如测试集)上的性能。主要差异包括:
- 间接目标:代价函数 \( J(\theta) \) 是对不可解度量(如0-1损失)的代理。使用替代损失(如分类中的负对数似然)是因为真实损失常缺乏有效梯度。
- 可分解性:\( J(\theta) \) 对样本取平均,支持经验风险最小化(ERM):\( J(\theta) \approx \frac{1}{m} \sum_{i=1}^m L(f(x^{(i)};\theta), y^{(i)}) \)。
- 过拟合风险:高容量模型可能记忆训练数据,因此即使训练损失持续下降,基于验证集性能的早停策略至关重要。
- 批处理策略:
- 批量方法:使用完整数据集计算精确梯度(确定性但大数据集下速度慢)。
- 随机梯度下降(SGD):使用单样本(更新快速但噪声大)。
- 小批量方法:二者平衡,深度学习中常用(批量大小32–256)。小批量的噪声具有正则化效果;数据打乱可避免偏差。
在线学习(流数据)无需重复数据即可逼近真实风险梯度。
深度学习优化的挑战
深度模型训练计算密集(集群上需数天至数月),且比传统优化更困难,原因包括:
- 难解性:ERM中存在不可微损失和过拟合问题。
- 规模问题:大数据集使全批量梯度不可行;采样引入方差(误差按 \( 1/\sqrt{n} \) 缩放)。
- 数据问题:冗余性、相关性(通过打乱修正)和重采样偏差。
- 硬件限制:批量大小受内存约束;异步并行可提升效率但可能引发不一致性。
- 神经网络特有障碍(后续详述):病态条件、局部极小值、平坦区、梯度消失/爆炸。
一阶方法(仅用梯度)比二阶方法(基于Hessian矩阵)更耐受噪声,后者会放大小批量中的误差。
优化算法
本章回顾了最小化 \( J(\theta) \) 的算法,从经典SGD扩展到其变体:
- 随机梯度下降(SGD):核心小批量更新 \( \theta \leftarrow \theta - \epsilon \hat{g} \),其中 \( \hat{g} \) 为小批量梯度估计值,\( \epsilon \) 为学习率。因噪声有助于逃离不良局部极小点,收敛速度优于批量方法。
- 动量法及变体:引入速度项以加速穿越平坦区域并抑制振荡。
- 自适应方法:调整每个参数的学习率(如AdaGrad、RMSProp、Adam),以处理稀疏梯度和尺度差异。
- 二阶近似:利用曲率信息(如共轭梯度法、自然梯度法)改善条件数,但计算成本高。
- 坐标下降法等:适用于特定架构。
实践技巧包括学习率调度、参数初始化(如Xavier初始化)及方法组合(如预条件处理)。
其他重要内容
- 参数初始化:对避免梯度消失至关重要;讨论对称/正交初始化及分层预训练。
- 权衡策略:平衡收敛速度、稳定性和泛化能力;强调基于验证集的调参。
- 高级主题:涵盖异步环境中的延迟梯度、分布式优化及与进化算法的关联。
总体而言,本章强调没有单一算法能适用于所有场景——成功依赖于针对具体问题的调参,其中SGD及其扩展方法是深度学习的核心工具。