adam算法

本文解析了Adam算法的原理,它是Momentum和RMSprop两种优化算法的结合,旨在解决mini-batch训练过程中的抖动问题,并通过修正偏差进一步提高模型训练效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Momentum是为了对冲mini-batch带来的抖动。

RMSprop是为了对hyper-parameter进行归一,均方根反向传播(RMSProp)

这两个加起来就是Adam

看原始的RMSProp算法: 
这里写图片描述

再看算法:其实就是Momentum+RMSProp的结合,然后再修正其偏差。 
这里写图片描述

 

### ADAM优化算法的实现原理 ADAM(Adaptive Moment Estimation)是一种用于训练深度学习模型的高效优化算法,因其快速收敛性和良好的泛化能力而受到广泛关注。以下是关于ADAM算法的核心概念及其在机器学习中的实现原理。 #### 1. 核心思想 ADAM结合了Momentum和RMSProp两种方法的优点[^1]。具体来说,它利用一阶矩估计(即动量项)来加速梯度下降过程,并通过二阶矩估计(类似于RMSProp的方法)动态调整每个参数的学习率。这种组合使ADAM能够在复杂的损失曲面上表现出色。 #### 2. 数学公式 假设目标函数为 \( f(\theta) \),其中 \( \theta \) 是待优化的参数向量,则ADAM更新规则如下: - **初始化** 初始化时刻步数 \( t=0 \),以及初始参数 \( m_0 = 0, v_0 = 0 \) (分别表示偏置修正的一阶矩和二阶矩)。设定超参数:学习率 \( \alpha \),指数衰减率 \( \beta_1, \beta_2 \),以及数值稳定常数 \( \epsilon \)[^3]。 - **计算梯度** 对于当前时间步 \( t \),计算梯度 \( g_t = \nabla_\theta J(\theta_{t-1}) \) ,其中 \( J(\theta) \) 表示损失函数。 - **更新一阶矩估计** 计算偏差校正后的移动平均值作为梯度的一阶矩估计: \[ m_t = \beta_1 m_{t-1} + (1-\beta_1)g_t \] - **更新二阶矩估计** 类似地,计算梯度平方的加权移动平均值作为二阶矩估计: \[ v_t = \beta_2 v_{t-1} + (1-\beta_2)(g_t)^2 \] - **偏差校正** 由于初期阶段 \( m_t \) 和 \( v_t \) 的累积不足可能导致低估,因此引入偏差校正因子: \[ \hat{m}_t = \frac{m_t}{1-(\beta_1)^t}, \quad \hat{v}_t = \frac{v_t}{1-(\beta_2)^t} \] - **参数更新** 使用校正后的一阶和二阶矩估计更新参数: \[ \theta_t = \theta_{t-1} - \alpha \cdot \frac{\hat{m}_t}{\sqrt{\hat{v}_t}+\epsilon} \][^4] #### 3. Python代码实现 下面是一个基于TensorFlow/Keras框架下使用ADAM优化器的例子: ```python import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense # 构建简单神经网络模型 model = Sequential([ Dense(64, activation='relu', input_shape=(784,)), Dense(10, activation='softmax') ]) # 编译模型并指定ADAM优化器 optimizer = tf.keras.optimizers.Adam( learning_rate=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-07 ) model.compile(optimizer=optimizer, loss='sparse_categorical_crossentropy', metrics=['accuracy']) # 假设已有数据集X_train, y_train # model.fit(X_train, y_train, epochs=10, batch_size=32) ``` 此代码片段展示了如何定义一个简单的全连接神经网络,并配置ADAM优化器进行训练。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值