深度学习:常用优化器Optimizer简介

深度学习:常用优化器Optimizer简介

随机梯度下降SGD

梯度下降算法是使权重参数沿着整个训练集的梯度方向下降,但往往深度学习的训练集规模很大,计算整个训练集的梯度需要很大的计算量,为了减少计算量加速训练,在此基础上演化出随机梯度下降算法(SGD),沿着随机选取的小批量数据的梯度方向下降。

假设权重记作 w w w,学习率为 α \alpha α,随机选取小批量样本计算梯度 d w dw dw,模型在更新权重的公式如下:
w t + 1 = w t − α × d w t w_{t+1} = w_t - \alpha \times dw_t wt+1=wt−α×dwt

带动量的随机梯度下降SGD-Momentum

虽然随机梯度下降是一种很受欢迎的优化方法,但其学习过程有时比较慢,引入动量momentum旨在提高收敛速度收敛精确度 ,特别是处理高曲率、小但一致的梯度,或是带噪声的梯度。

动量是深度学习训练中,一个用于更新模型参数的超参数,假设记作mu,则引入动量的随机梯度下降算法公式为:
v t = m u × v t − 1 − α t × d w t v_t = mu \times v_{t-1} - \alpha_t \times dw_t vt=mu×vt−1−αt×dwt
w t + 1 = w t + v t w_{t+1} = w_t + v_t wt+1=wt+vt

其中,v初始化为0,mu一般的取值为0.5、0.9、0.99等。

要是当前时刻的梯度与历史时刻梯度方向相似,这种趋势在当前时刻则会加强;要是不同,则当前时刻的梯度方向减弱。前者能够加速收敛,后者能够减小摆动,提高收敛精确度。

SGDW

weight decay(权值衰减)的使用既不是为了提高收敛精确度也不是为了提高收敛速度,其最终目的是防止过拟合。在损失函数中,weight decay是放在正则项(regularization)前面的一个系数,正则项一般指示模型的复杂度,所以weight decay的作用是调节模型复杂度防止过拟合,若weight decay很大,则复杂的模型损失函数的值也就大。

SGDW 即 SGD+ Weight decate。SGDW直接将正则项的梯度加入反向传播的公式中,而不是loss函数。

详细算法可参照:

Adam

Adam是一种自适应优化器,对超参数的选择较为鲁棒。SGD-Momentum在SGD基础上增加了一阶动量,AdaGrad和AdaDelta在SGD基础上增加了二阶动量。Adam则是把一阶动量和二阶动量都用起来了。

一阶动量:
m t = β 1 × m t − 1 + ( 1 − β 1 ) × d w t m_t = \beta_1 \times m_{t-1} + (1-\beta_1) \times dw_t mt=β1×mt−1+(1−β1)×dwt

二阶动量:
v t = β 2 × v t − 1 + ( 1 − β 2 ) × d 2 w t v_t = \beta_2 \times v_{t-1} + (1-\beta_2) \times d^2w_t vt=β2×vt−1+(1−β2)×d2wt
β 1 \beta_1 β1和 β 2 \beta_2 β2是Adam的两个超参数。

详细算法可参照Adam原始论文:

AdamW

AdamW在Adam的基础上发展而来的一种自适应优化器。AdamW 即 Adam + Weight decate ,效果与 Adam + L2正则化相同,但是计算效率更高,因为L2正则化需要在loss中加入正则项,之后再算梯度,最后在反向传播,而AdamW直接将正则项的梯度加入反向传播的公式中,省去了手动在loss中加正则项这一步。

详细算法可参照AdamW原始论文:

相关推荐
Risk Actuary34 分钟前
手动示例解释机器学习中 GBDT 算法原理
人工智能·算法·机器学习
火山引擎开发者社区4 小时前
Doubao-Seed-Evolving升级:1M上下文来了!
人工智能
曾响铃6 小时前
千台量产前夜,具身智能竞争已沉到底层基建
人工智能
血色橄榄枝7 小时前
基于用户注册信息的关键词检测挑战赛「Datawhale AI 夏令营」
人工智能·算法·机器学习
A hao7 小时前
高对比度在XR虚拟背景中的作用
大数据·图像处理·人工智能·xr·广告
小二·7 小时前
2026年AI Agent框架横评:OpenClaw vs LangGraph vs CrewAI vs Superpowers,选型指南
人工智能
tyqtyq227 小时前
旅行打包清单 App — HarmonyOS AI 应用开发技术博客
人工智能·学习·华为·生活·harmonyos
guo_xiao_xiao_7 小时前
YOLOv11道路桥梁裂缝与坑洼目标检测数据集
人工智能·yolo·目标检测
邵宇然7 小时前
Rust Unsafe 代码规范:不安全块要小到能被审查
人工智能