优化算法是寻找数学优化问题最佳解的系统性程序,涉及从可用备选方案中选择一个元素以最小化或最大化目标函数。在机器学习中,这些算法对于训练模型至关重要,通过迭代调整参数以降低损失函数,该函数量化了预测输出与实际输出之间的差异。该领域涵盖从梯度下降等经典方法到Adam等先进自适应优化器,每种方法在导航搜索空间时采用不同的策略。
优化的核心在于定义一个带有目标函数(在机器学习中也称为损失或成本函数)的问题,以及一个可行解的搜索空间。目标是找到函数的全局最小值(或最大值),但在实践中,许多问题是非凸的,意味着它们包含多个局部最小值。因此,优化算法必须平衡探索与开发,以避免陷入次优区域。这些算法的发展一直是应用数学和计算机科学的核心主题,对训练深度神经网络具有重大意义。
历史发展
对优化的正式研究可以追溯到几个世纪前,早期由像艾萨克·牛顿和约瑟夫-路易斯·拉格朗日这样的数学家做出贡献,他们开发了寻找函数极值的方法。在20世纪,线性规划成为一种关键技术,1947年乔治·丹齐格提出的简朴算法为求解线性优化问题提供了一种实用方法。计算机的出现使得优化能够应用于复杂的工程与经济问题,催生了非线性与随机方法的发展。
在机器学习背景下,1958年弗兰克·罗森布拉特提出的感知机标志了迭代优化的早期应用,尽管它仅适用于线性模型。在1980年代由大卫·鲁梅尔哈特、杰弗里·辛顿和罗纳德·威廉姆斯推广的反向传播算法,通过高效计算梯度实现了多层神经网络的训练,为基于梯度的优化铺平了道路。随后2010年代深度学习的兴起,由计算能力和数据可得性的提升所驱动,催生了专门针对高维、非凸损失景观的定制优化器。
梯度下降及其变体
梯度下降是机器学习的基石优化算法。它通过在梯度负方向上迭代更新参数,步长由学习率控制。基本形式,批次梯度下降,计算的是整个数据集上的梯度,这可能对于大型数据集来说计算代价高昂。随机梯度下降通过每次更新仅使用一个随机样本来解决这个问题,引入噪声有助于局部极小值的逃逸,但也导致高方差。
小批次梯度下降在每次更新中使用小规模随机子集,既降低了方差又保持了计算效率。SGD的变体引入了动量机制,通过累积速度向量来平滑更新并有助于穿越狭窄地形,从而加速收敛。Nesterov加速梯度(NAG)改进动量机制,通过预测未来位置提前评估梯度,在许多情况下实现更快收敛。
这些方法广泛用于训练 神经网络,是 深度学习 框架的基础。然而,它们需要仔细调整学习率,这促使自适应方法的发展。
自适应优化器:AdaGrad、RMSProp与Adam
自适应优化算法根据历史梯度信息,为每个参数单独调整学习率。AdaGrad,由约翰·杜奇、埃拉德·哈桑和尤里·辛格于2011年引入,将学习率与梯度平方和的平方根成反比缩放,实现对不频繁参数的较大更新和频繁参数的较小更新。然而,AdaGrad累积的梯度平方可能导致学习率过快地缩小,过早停止训练。
RMSProp,由杰弗里·辛顿在2012年讲座笔记中开发,通过使用指数衰减的梯度平方平均来防止学习率消失,从而允许在非凸设置中持续学习。Adam优化器,于2015年由Diederik Kingma和Jimmy Ba引入,通过维护梯度的第一矩(均值)与第二矩(非中心化方差)并加上偏差校正,有效结合了动量和RMSProp。由于其稳健性和快速收敛性,Adam已成为许多深度学习任务的默认优化器。
凭借其自适应学习率,Adam的流行程度已扩展到训练 大型语言模型 和 transformer 以及类似模型,能够有效处理稀疏梯度和噪声较大的损失表面。变体如AdamW(解耦权重衰减)进一步提高了泛化能力,应用于如由 OpenAI 和 Anthropic 开发的模型。
二阶方法
二阶优化方法利用曲率信息(通常是Hessian矩阵)来指导更新。牛顿法,通过计算Hessian的逆矩阵,可在更少迭代次数内收敛,但由于计算和存储的高复杂度(O(n^2) 内存和 O(n^3) 时间),不适合高维模型。拟牛顿方法,如BFGS和L-BFGS,使用梯度差异近似Hessian,在计算成本与收敛速度之间取得平衡。
在机器学习中,由于参数规模巨大,通常用于训练深度网络的二阶方法相对较少,但在较小规模问题中或特定模型精调时仍有其价值。自然梯度下降使用Fisher信息矩阵,具有理论优势,但同样计算密集。近期研究集中于如K-FAC等近似方法,以期实际应用二阶方法。
深度学习中的优化
深度学习对优化提出了独特挑战,主要包括高度非凸的损失表面、众多局部极小值和鞍点。深度网络的损失表面通常呈现平台期与沟壑状态,使得基于梯度的方法容易陷入收敛、慢收敛或卡住。如 批次归一化 和 层归一化 等技巧通过标准化激活,可以使训练更稳定,改善优化动态。
学习率调度 对于有效训练至关重要,常采用逐步衰减、指数衰减和余弦退火等策略调节学习率。梯度裁剪 用于防止梯度爆炸,尤其在深度及Transformer中尤为重要。此外,权重初始化 方法如Xavier和He初始化,能设置初始参数以提升梯度流。
优化器选择会显著影响模型性能,如 残差网络 和 U-Net。通常Adam因其自适应学习率而备受青睐,但在某些计算机视觉任务中,SGD配合动量可能提供更好的泛化能力。如Lion和Sophia等新优化器的研究仍在不断提升效率和鲁棒性。
大规模训练的专用优化器
如是 大型语言模型 等数十亿参数的训练,其性能需求更需高效的优化算法、扩展性训练分布。量化和分布式技术,如zero优化器(将优化器状态划分至各个设备),与模型和数据的并行相结合,最小化通信开销。
硬件特定优化也十分重要。诸如 Google DeepMind 和 NVIDIA 等公司开发了定制硬件加速器,影响优化器的设计,以适配特定计算模式。而技术如混合精度训练(例如在较低精度中进行计算)要求优化器能保持数值稳定性。
框架如 TensorFlow 和 PyTorch 提供了内置的不同优化器实现,使得研究人员能够轻松尝试不同算法。因此在训练过程中,优化器的选择不仅影响收敛速度,也会对最终模型质量产生明显影响。
理论视角与挑战
优化理论为我们理解算法工作原理及其局限性。对于凸问题,基于梯度的方法可保证收敛到全局最优值,然而深度学习通常是高度非凸的,其损失景观的研究揭示了许多局部极小值,在值上相似,鞍点比局部最小值更内在,这些都促使我们开发出SGD 或带动量的方法来逃离鞍点。
另一挑战是泛化差距,即优化可能找到一个训练损失低但测试性能不佳的解。如 dropout 和 数据增强 这类技术用于提高泛化,但优化与泛化之间的交互仍是一个活跃研究领域,类似 迈克尔·乔丹 和 阿尼玛·阿南德库马尔 等研究者,也为理解这些性能做出贡献。
自2020年代初,目前还没有某个单一的优化器可以主导所有任务,选择往往取决于具体的架构和数据集。受生物学习或量子计算启发的类优化器,将持续推动 人工智能 训练的边界。
结论
优化算法是机器学习的基石,从简单线性回归到复杂深度网络,都通过训练模型实现。从基础梯度下降到Adam等纯熟的优化方法,它们已经演进满足规模和复杂性的挑战。理解它们的优劣,对于从业人员这至关重要,因为选择适当的优化器可以显着影响模型性能。随着领域的发展,将出现新的挑战,例如针对能量效率进行优化,并处理非可微目标,这些都会推动优化进一步创新。