深度学习中优化器的SGD with Weight Decay原理与权重衰减机制
字数 1122 2025-11-01 15:29:06
深度学习中优化器的SGD with Weight Decay原理与权重衰减机制
题目描述:
权重衰减(Weight Decay)是深度学习中广泛使用的正则化技术,通过向损失函数添加L2正则化项来防止模型过拟合。SGD with Weight Decay将标准随机梯度下降与权重衰减机制结合,在参数更新时显式地减小权重值。本题要求深入理解权重衰减的数学原理、与L2正则化的等价关系,以及其在SGD优化器中的具体实现方式。
解题过程:
-
权重衰减的基本概念
权重衰减的核心思想是通过惩罚较大的权重值来控制模型复杂度。在损失函数中加入L2正则化项:
J_reg(θ) = J(θ) + (λ/2) * ||θ||²
其中λ是衰减系数,||θ||²是权重的L2范数平方。这样训练时优化器会同时最小化原始损失和权重幅度。 -
数学推导
对正则化后的损失函数求梯度:
∇J_reg(θ) = ∇J(θ) + λθ
标准SGD更新规则变为:
θ_{t+1} = θ_t - η[∇J(θ_t) + λθ_t]
= θ_t - η∇J(θ_t) - ηλθ_t
= (1 - ηλ)θ_t - η∇J(θ_t)
这里(1-ηλ)就是权重衰减因子,每次更新前会先将权重缩小一定比例。
- 与L2正则化的等价性
虽然权重衰减在形式上与L2正则化等价,但实现时有细微差别:
- L2正则化:修改损失函数,影响梯度计算
- 权重衰减:直接修改优化器更新规则
在标准SGD中两者数学等价,但在自适应优化器(如Adam)中不等价。
-
算法实现步骤
参数:学习率η,衰减系数λ
初始化:参数θ,迭代次数T
For t=1 to T:
采样小批量数据
计算梯度g_t = ∇J(θ_t)
更新参数:θ_{t+1} = (1 - ηλ)θ_t - ηg_t -
权重衰减的作用机制
- 防止过拟合:限制权重增长,降低模型复杂度
- 改善泛化:通过控制权重幅度提高模型在测试集的表现
- 数值稳定性:避免权重值过大导致的数值计算问题
- 超参数选择策略
- λ通常设为10⁻⁴到10⁻²之间
- 需要与学习率η协同调优
- 对于不同层可使用不同的衰减系数(如全连接层比卷积层需要更强正则化)
- 实际实现注意事项
在PyTorch等框架中,通常在优化器参数中直接设置weight_decay:
optimizer = torch.optim.SGD(model.parameters(),
lr=0.01,
weight_decay=0.001)
- 与Dropout的配合使用
权重衰减常与Dropout等正则化技术结合:
- Dropout:训练时随机失活神经元
- 权重衰减:控制参数幅度
两者从不同角度防止过拟合,可叠加使用。
关键理解点:权重衰减通过显式缩小权重值实现正则化,其效果取决于学习率与衰减系数的乘积ηλ,需要仔细平衡优化速度与正则化强度。