当前位置: 首页 > news >正文

深度学习:Adam 优化器实战(Adam Optimizer)

关键词解释: Adam(Adaptive Moment Estimation)优化算法

💡 Adam = Momentum + RMSprop + 偏差修正
它结合了动量的加速能力和自适应学习率的稳定性,是当前深度学习的“默认优化器”。


✅ 一、Adam 的核心思想

Adam 同时维护两个关于梯度的统计量:

  • 一阶矩(均值):类似动量,记录梯度的历史平均方向;
  • 二阶矩(未中心化的方差):类似 RMSprop,记录梯度的平方历史,用于自适应缩放学习率。

并通过 偏差修正 解决初期估计偏差问题。


✅ 二、数学公式

对于第 ( t ) 步迭代:

1. 更新移动平均(指数加权)

2. 偏差修正(因初始为 0,早期估计偏低)

3. 参数更新

\theta_{t+1} = \theta_t - \alpha \cdot \frac{\hat{v}_t}{\sqrt{\hat{s}_t} + \epsilon}

其中:

  • ( \alpha ):学习率(如 0.001);
  • ( \beta_1 = 0.9 ):一阶矩衰减率;
  • ( \beta_2 = 0.999 ):二阶矩衰减率;
  • ( \epsilon = 10^{-8} ):防止除零的小常数。

✅ 三、代码实现详解

3.1 初始化 Adam 状态

def initialize_adam(parameters):L = len(parameters) // 2v = {}  # 一阶矩(动量)s = {}  # 二阶矩(平方梯度)for l in range(L):v["dW" + str(l + 1)] = np.zeros_like(parameters["W" + str(l + 1)])v["db" + str(l + 1)] = np.zeros_like(parameters["b" + str(l + 1)])s["dW" + str(l + 1)] = np.zeros_like(parameters["W" + str(l + 1)])s["db" + str(l + 1)] = np.zeros_like(parameters["b" + str(l + 1)])return v, s

✅ 作用:为每层权重和偏置初始化 vs 为零矩阵。


3.2 Adam 参数更新函数

def update_parameters_with_adam(parameters, grads, v, s, t, learning_rate=0.01,beta1=0.9, beta2=0.999, epsilon=1e-8):L = len(parameters) // 2v_corrected = {}s_corrected = {}for l in range(L):# 1. 更新一阶矩(动量)v["dW" + str(l + 1)] = beta1 * v["dW" + str(l + 1)] + (1 - beta1) * grads['dW' + str(l + 1)]v["db" + str(l + 1)] = beta1 * v["db" + str(l + 1)] + (1 - beta1) * grads['db' + str(l + 1)]# 2. 偏差修正(一阶矩)v_corrected["dW" + str(l + 1)] = v["dW" + str(l + 1)] / (1 - np.power(beta1, t))v_corrected["db" + str(l + 1)] = v["db" + str(l + 1)] / (1 - np.power(beta1, t))# 3. 更新二阶矩(平方梯度)s["dW" + str(l + 1)] = beta2 * s["dW" + str(l + 1)] + (1 - beta2) * np.square(grads['dW' + str(l + 1)])s["db" + str(l + 1)] = beta2 * s["db" + str(l + 1)] + (1 - beta2) * np.square(grads['db' + str(l + 1)])# 4. 偏差修正(二阶矩)s_corrected["dW" + str(l + 1)] = s["dW" + str(l + 1)] / (1 - np.power(beta2, t))s_corrected["db" + str(l + 1)] = s["db" + str(l + 1)] / (1 - np.power(beta2, t))# 5. 更新参数parameters["W" + str(l + 1)] -= learning_rate * v_corrected["dW" + str(l + 1)] / (np.sqrt(s_corrected["dW" + str(l + 1)]) + epsilon)parameters["b" + str(l + 1)] -= learning_rate * v_corrected["db" + str(l + 1)] / (np.sqrt(s_corrected["db" + str(l + 1)]) + epsilon)return parameters, v, s

✅ 关键点:

  • 使用 np.square()**2 计算梯度平方;
  • 必须传入当前迭代步数 t(从 1 开始计数);
  • 所有操作按层进行,W 对应 dWb 对应 db

✅ 四、测试与输出

parameters, grads, v, s = update_parameters_with_adam_test_case()
parameters, v, s = update_parameters_with_adam(parameters, grads, v, s, t=2)print("W1 =", parameters["W1"])
print("b1 =", parameters["b1"])
print("W2 =", parameters["W2"])
print("b2 =", parameters["b2"])
print("v['dW1'] =", v["dW1"])
print("v['db1'] =", v["db1"])
print("s['dW1'] =", s["dW1"])
print("s['db1'] =", s["db1"])

预期行为

  • 所有值均为合理浮点数;
  • v 接近梯度的加权平均;
  • s 接近梯度平方的加权平均;
  • 参数更新幅度受 sqrt(s) + ε 自适应调节。

✅ 五、超参数推荐值(Kingma & Ba, 2015)

超参数默认值说明
learning_rate (α)0.001最关键!常需调参
β₁0.9动量衰减率
β₂0.999方差衰减率
ε1e-8数值稳定常数

💡 注意

  • 学习率是 Adam 中唯一需要重点调参的超参数;
  • β₁、β₂ 通常无需修改;
  • 若训练不稳定,可尝试减小学习率或增大 ε。

✅ 六、Adam 的优势与局限

✅ 优势

  • 自适应学习率,对不同参数自动调整;
  • 收敛速度快,适合稀疏梯度(如 NLP);
  • 对超参数不敏感(除学习率外);
  • 广泛适用于 CNN、RNN、Transformer 等架构。

⚠️ 局限

  • 内存占用略高(需存储 vs);
  • 在某些凸优化问题上可能不如 SGD + 动量泛化好;
  • 初期可能收敛过快导致跳过最优解(可通过 warmup 缓解)。

✅ 七、总结

Adam 是现代深度学习的“瑞士军刀” —— 简单、高效、鲁棒。

既知道往哪走(动量),又知道走多快(自适应学习率),还懂得起步时要补一补(偏差校正)。

http://www.dtcms.com/a/614961.html

相关文章:

  • 建个网站需要多少钱网站备份查询
  • NetApp FAS8200 控制器启动报错-PCIe device missing
  • 找个人做网站的做的好的音乐网站的特点
  • 网站设计的简称河南中国建设厅官方网站
  • 唐山自助建站福州如何做百度的网站推广
  • 政务网站建设建议湖南广告优化
  • 网站建设排名北京郑州市主城区
  • 做网站为什么要建站点海口网站制作设计
  • 淄博市住房和城乡建设局网站怎样在潇湘书院网站做兼职
  • STL容器
  • 北京网站建设企业网站制作益阳seo网站建设
  • 天猫网站建设目的小学最好的网站建设
  • JavaWeb(前端实战)
  • 新网站多久收录内页4399任天堂
  • 买网站做网站设计怎么学
  • Qt Core 模块中的函数详解
  • 网站备案检验单网站搭建免费
  • 设置网站模板免费的app软件下载安装
  • 滁州 来安县建设局网站建设局是做什么的
  • 异常的介绍
  • [LivePortrait] LivePortraitPipeline
  • 织梦wap网站模版wordpress的注册文件在哪儿
  • 汝州住房和城乡建设局新网站网站编辑做多久可以升职
  • 做淘宝网站宝安中心区
  • 36_FastMCP 2.x 中文文档之FastMCP客户端高级功能:接收并处理服务端进度报告详解
  • 手机网站 制作技术百度seo官网
  • 上海个人网站建做的最好的紫砂网站
  • 前端工程化面试题
  • 武安市网站建设费用成都网站建设_创新互联
  • 关于 mariadb开源数据库忘记密码 的解决方法