神经网络基础-神经网络补充概念-49-adam优化算法

概念

Adam(Adaptive Moment Estimation)是一种优化算法,结合了动量梯度下降法和RMSProp的优点,用于在训练神经网络等深度学习模型时自适应地调整学习率。Adam算法在深度学习中广泛应用,通常能够加速收敛并提高模型性能。

Adam算法综合了动量(momentum)和均方梯度的移动平均(RMSProp)来更新模型参数。与传统的梯度下降法不同,Adam维护了一个每个参数的动量变量和均方梯度的移动平均变量,并在每个迭代步骤中使用这些变量来调整学习率。

步骤

1初始化参数:初始化模型的参数。

2初始化动量变量和均方梯度的移动平均:初始化动量变量为零向量,初始化均方梯度的移动平均为零向量。

3计算梯度:计算当前位置的梯度。

4更新动量变量:计算动量变量的移动平均。

python 复制代码
momentum = beta1 * momentum + (1 - beta1) * gradient

其中,beta1 是用于计算动量变量移动平均的超参数。

5更新均方梯度的移动平均:计算均方梯度的移动平均。

python 复制代码
moving_average = beta2 * moving_average + (1 - beta2) * gradient^2

其中,beta2 是用于计算均方梯度的移动平均的超参数

6修正偏差

对动量变量和均方梯度的移动平均进行偏差修正,以减轻初始迭代的影响。

python 复制代码
corrected_momentum = momentum / (1 - beta1^t)
corrected_moving_average = moving_average / (1 - beta2^t)

7更新参数

python 复制代码
parameter = parameter - learning_rate * corrected_momentum / (sqrt(corrected_moving_average) + epsilon)

其中,epsilon 是一个小的常数,防止分母为零。

8重复迭代:重复执行步骤 3 到 7,直到达到预定的迭代次数(epochs)或收敛条件。

代码实现

python 复制代码
import numpy as np
import matplotlib.pyplot as plt

# 生成随机数据
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)

# 添加偏置项
X_b = np.c_[np.ones((100, 1)), X]

# 初始化参数
theta = np.random.randn(2, 1)

# 学习率
learning_rate = 0.1

# Adam参数
beta1 = 0.9
beta2 = 0.999
epsilon = 1e-8
momentum = np.zeros_like(theta)
moving_average = np.zeros_like(theta)

# 迭代次数
n_iterations = 1000

# Adam优化
for iteration in range(n_iterations):
    gradients = 2 / 100 * X_b.T.dot(X_b.dot(theta) - y)
    momentum = beta1 * momentum + (1 - beta1) * gradients
    moving_average = beta2 * moving_average + (1 - beta2) * gradients**2
    corrected_momentum = momentum / (1 - beta1**(iteration+1))
    corrected_moving_average = moving_average / (1 - beta2**(iteration+1))
    theta = theta - learning_rate * corrected_momentum / (np.sqrt(corrected_moving_average) + epsilon)

# 绘制数据和拟合直线
plt.scatter(X, y)
plt.plot(X, X_b.dot(theta), color='red')
plt.xlabel('X')
plt.ylabel('y')
plt.title('Linear Regression
相关推荐
爱写代码的汤二狗4 分钟前
同样用 AI,有人 18 点下班,有人 21 点加班——差在 1 个动作
人工智能·经验分享·ai·claude
zhuiyisuifeng6 分钟前
2026年AI图像生成:色彩语义理解新突破
人工智能·gpt·计算机视觉
地平线开发者7 分钟前
挑战杯“揭榜挂帅”|机器人领域·地平线赛题发布!共探智慧环卫清扫车新未来
人工智能·机器人
小王毕业啦7 分钟前
2013-2023年 银行风险资产占比数据
大数据·人工智能·数据挖掘·数据分析·社科数据
weixin_553654488 分钟前
2026 年,如何构建一套具备自愈能力的 AI Agent 自动化工作流?
大数据·人工智能·自动化
多年小白14 分钟前
2026年5月5日
大数据·人工智能·深度学习·microsoft·机器学习·ai·自动驾驶
Irissgwe14 分钟前
LangChain之核心组件(少样本提示词)
人工智能·langchain·llm·langgraph
AI绘画哇哒哒18 分钟前
RAG 系统中文档切分策略:如何选择合适的 chunk size?| 收藏这份实用指南,小白也能轻松上手大模型学习
人工智能·学习·ai·程序员·大模型·产品经理·转行
2601_9579648720 分钟前
48V系统轻型巡检机器人锂电池完整设计方案要求(工业级智能巡检平台标准)【浩博电池】
人工智能·机器人