Adam 优化器是深度学习中常用的一个优化算法,它结合了 AdaGrad 和 RMSProp 优化器的优点,适用于大规模的稀疏数据。

Adam 优化器简介

Adam 优化器是基于矩估计(MOM)的方法,它通过计算梯度的一阶矩估计(即均值)和二阶矩估计(即未中心化的方差)来更新参数。这种优化器适用于任何凸函数,并且在很多情况下比 SGD 更快地收敛。

Adam 优化器参数

  • β1:过去梯度的指数衰减率。
  • β2:过去梯度的平方的指数衰减率。
  • ε:一个很小的常数,用于防止除以零。

Adam 优化器步骤

  1. 初始化动量(v)和平方梯度的估计(s)为 0。
  2. 对于每个参数的梯度 g,更新动量 v:
    • v = β1 * v + (1 - β1) * g
  3. 更新平方梯度的估计 s:
    • s = β2 * s + (1 - β2) * g^2
  4. 计算校正后的动量和平方梯度:
    • v_hat = v / (1 - β1^t)
    • s_hat = s / (1 - β2^t)
  5. 更新参数:
    • θ = θ - 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 优化器示例图