文档是为记录这块内容的学习思想!如果你对下面的这些方法有一定的了解,那可能理解的会更透彻。不过小白也不用担心,程序员没必要事无巨细的了解每一步的具体计算步骤和原理,但是得知道相关算法的思路和解决的问题,该文档可帮助你将整个梯度下降算法优化模块的思路串起来,提供一个思维引导。如果有用,劳烦点赞,抱拳儿了
在这里强烈安利大家去观看一位大佬的视频:打包理解对梯度下降法的优化。观看梳理清楚思路后可以回到文字部分自己对照复盘整个优化流程和思路!视频中涉及到的开源项目网址在文章最后~
之前我们已经介绍过了梯度下降法,用梯度下降法训练神经网络可以说是最有效的方法了,可是标准的梯度下降法是很难实用的,因为标准的梯度下降法的计算量是非常大的,靠我们现在的计算机是无法承担起这个巨大的计算量的,所以需要对梯度下降法做出优化,让它用更少的计算量来实现差不多的效果。
梯度下降优化的核心目标有两个:一是加快收敛速度,减少迭代次数;二是避免训练震荡或陷入局部最优,让参数稳定逼近较优解。所有优化方法均围绕这两个目标展开。
第一阶段:基础优化——解决“训练能否落地”的问题
此阶段聚焦降低计算成本、初步提升收敛效率,为后续优化奠定基础,核心方法是SGD和牛顿法。
1. SGD(随机 梯度下降)
-
优化背景:批量梯度下降(BGD)需用全量数据计算梯度,大数据场景下计算慢、内存占用高,无法落地。
-
核心思想:每次随机取1个样本计算梯度,用单个样本的梯度方向更新参数,大幅减少单次计算成本,实际在使用过程中我们随机选取的不可能是一个数据,应该是一批次的数据。
-
解决的关键问题:突破大数据场景的计算和内存限制,让训练可执行;但会引入梯度噪声,导致参数更新震荡。
2. 牛顿法
-
优化背景:SGD仅依赖一阶梯度(“坡度方向”),方向选择较“盲目”,收敛过程迭代次数多、速度慢。
-
核心思想:引入泰勒展开式,保留到二阶导数(Hessian矩阵,反映梯度变化率),不仅知道“往哪走”,还能判断“走多快”(其实是把某一点处的切线转换成改点处的切抛物线,走的多快也是直接去求抛物线的极值来确定的,由此可知往哪走,走多快…),直接逼近最优解(最优解处一阶导数为0)。
-
解决的关键问题:利用二阶信息大幅加快收敛速度;但计算Hessian矩阵的逆(或近似)成本极高,高维参数(如深度学习模型)下实用性受限。
第二阶段:动量优化——解决“收敛稳不稳、快不快”的问题
针对SGD的“震荡”和收敛慢问题,引入物理“动量”概念,让参数更新更平稳、更高效,核心方法是动量法和Nesterov。
1. 动量法(Momentum)
-
优化背景:SGD每次更新仅依赖当前梯度,方向波动大(如“忽左忽右”),收敛路径曲折、震荡严重。
-
核心思想:模拟小球下坡的惯性,用系数(如0.9)保留前一次的更新方向,再叠加当前梯度方向,让更新方向更“连贯”。
-
解决的关键问题:减少梯度噪声导致的震荡,让更新路径更平滑;通过惯性“冲过”轻微局部最优,同时加快整体收敛速度。
2. Nesterov(涅斯捷罗夫(俄罗斯数学家)动量法)
有人把这个方法也叫做牛顿冲量法,这和前面的牛顿法没什么关系,不用考虑这些东西,导致自己迷茫
-
优化背景:普通动量法的“惯性”可能过大,导致参数冲过最优解(如小球冲过下坡最低点),后续需回头调整,反而增加迭代。
-
核心思想:“先预判,再修正”——先按之前的动量方向“往前走一步”,在“预判位置”计算梯度,再用该梯度修正最终更新方向,相当于提前“踩刹车”。
-
解决的关键问题:减少“冲过最优解”的情况,让更新方向更精准,进一步降低震荡、提升收敛稳定性。
第三阶段:自适应学习率——解决“参数更新是否‘个性化’”的问题
针对“所有参数用同一学习率”的缺陷,为不同参数设计“个性化”学习率,适配不同参数的更新需求,核心方法是AdaGrad和RMSprop。
1. AdaGrad(自适应梯度)
-
优化背景:SGD、动量法均用固定学习率,无法适配不同参数的需求(如高频更新参数需小学习率防震荡,低频更新参数需大学习率加速)。
-
核心思想:为每个参数单独维护“学习率衰减因子”——累计该参数从训练开始的所有梯度平方和,用全局学习率除以该平方和的平方根,让高频更新参数学习率变小,低频更新参数学习率变大。
-
解决的关键问题:实现参数级“个性化”学习率;但累计平方和持续增大,会导致后期学习率趋近于0,训练提前停止。
2. RMSprop(均方根传播)
-
优化背景:AdaGrad的“累计平方和”持续增长,导致学习率后期衰减至0,参数无法继续更新。
-
核心思想:用“滑动平均”代替“累计求和”——仅保留近期(如最近10次迭代)的梯度平方和,用近期平均结果计算学习率,忽略早期遥远梯度的影响。
-
解决的关键问题:避免学习率后期趋近于0,让参数在训练中后期仍能持续更新;同时保留AdaGrad“个性化”学习率的优势。
第四阶段:融合优化——解决“能否兼顾稳、快、个性化”的问题
此阶段融合前序方法的优势,兼顾“平稳更新、快速收敛、个性化学习率”,核心方法是Adam。
Adam(自适应动量估计)
-
优化背景:动量法有惯性但无个性化学习率,RMSprop有个性化学习率但无惯性,单独使用难以同时满足“稳”和“灵活”的需求。
-
核心思想:融合两大优势——一是像动量法一样,累计梯度的一阶矩(均值,对应惯性方向);二是像RMSprop一样,累计梯度的二阶矩(均方根,对应个性化学习率),用两个矩共同计算参数更新值。
-
解决的关键问题:同时实现“平稳更新”(惯性)、“个性化学习率”(适配)、“快速收敛”(减少无效迭代),成为深度学习中最常用的优化器之一,适配大多数模型和数据场景。
梯度下降优化路线总结
优化路线整体呈现“从单一痛点解决到多目标兼顾”的演进逻辑,核心方向可概括为四点:
-
降成本:从BGD到SGD,突破大数据计算和内存限制;
-
提速度:从SGD到牛顿法、动量法,用一阶/二阶信息或惯性加快收敛;
-
增稳定:从普通动量法到Nesterov,减少冲过最优解的震荡;
-
强适配:从固定学习率到AdaGrad、RMSprop,再到Adam的融合,实现参数个性化更新。
最终从“能训练”走向“高效、稳定、适配性强的训练”,满足复杂深度学习场景的需求。
视频中大佬给出的github博主,如果想自行调试观看各种优化效果,点击访问博主开源项目