常见的神经网络优化算法
1. 引言
在深度学习中,优化算法(Optimizers)用于更新神经网络的权重,以最小化损失函数(Loss Function)。一个高效的优化算法可以加速训练过程,并提高模型的性能和稳定性。本文介绍几种常见的神经网络优化算法,包括随机梯度下降(SGD)、带动量的随机梯度下降(Momentum SGD)、均方根传播算法(RMSProp)以及自适应矩估计(Adam),并提供相应的代码示例。
2. 常见的优化算法
2.1 随机梯度下降(Stochastic Gradient Descent, SGD)
随机梯度下降(SGD)是最基本的优化算法,其更新规则如下:
其中:
- w 代表网络参数(权重);
- α 是学习率(Learning Rate),控制更新步长;
- ∇L(w) 是损失函数相对于权重的梯度。
代码示例(使用 PyTorch 实现 SGD)
import torch
import torch.nn as nn
import torch.optim as optim
# 定义简单的线性模型
model = nn.Linear(1, 1) # 1 个输入特征,1 个输出特征
criterion = nn.MSELoss() # 均方误差损失
optimizer = optim.SGD(model.parameters(), lr=0.01) # 随机梯度下降
# 训练步骤
for epoch in range(100):
optimizer.zero_grad() # 清空梯度
inputs = torch.tensor([[1.0]], requires_grad=True)
targets = torch.tensor([[2.0]])
outputs = model(inputs)
loss = criterion(outputs, targets) # 计算损失
loss.backward() # 反向传播
optimizer.step() # 更新参数
if epoch % 10 == 0:
print(f'Epoch [{epoch}/100], Loss: {loss.item():.4f}')
运行结果
Epoch [0