Adam 优化器是深度学习中常用的一个优化算法,它结合了 AdaGrad 和 RMSProp 优化器的优点,适用于大规模的稀疏数据。
Adam 优化器简介
Adam 优化器是基于矩估计(MOM)的方法,它通过计算梯度的一阶矩估计(即均值)和二阶矩估计(即未中心化的方差)来更新参数。这种优化器适用于任何凸函数,并且在很多情况下比 SGD 更快地收敛。
Adam 优化器参数
- β1:过去梯度的指数衰减率。
- β2:过去梯度的平方的指数衰减率。
- ε:一个很小的常数,用于防止除以零。
Adam 优化器步骤
- 初始化动量(v)和平方梯度的估计(s)为 0。
- 对于每个参数的梯度 g,更新动量 v:
- v = β1 * v + (1 - β1) * g
- 更新平方梯度的估计 s:
- s = β2 * s + (1 - β2) * g^2
- 计算校正后的动量和平方梯度:
- v_hat = v / (1 - β1^t)
- s_hat = s / (1 - β2^t)
- 更新参数:
- θ = θ - learning_rate * v_hat / (sqrt(s_hat) + ε)
实践案例
下面是一个使用 Adam 优化器训练神经网络的简单例子:
import tensorflow as tf
# 创建一个简单的神经网络模型
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(64, activation='relu', input_shape=(784,)),
tf.keras.layers.Dense(10, activation='softmax')
])
# 编译模型
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# 训练模型
model.fit(x_train, y_train, epochs=5)
更多关于 TensorFlow 的教程,请访问TensorFlow 教程。
Adam 优化器示例图