PyTorch中Adam优化器的最优定义方式及分参数配置效果差异原因
分组配置Adam优化器效果更优的核心原因
这个优化方案本质是针对卷积层参数的特性做了超参数差异化适配,恰好匹配了Unet做图像重建/恢复类任务(PSNR为核心指标)的需求,核心优势来自三点:
- 偏置参数取消权重衰减,避免过度正则
卷积层的bias参数每层就几个标量,参数量极小,几乎不会引发过拟合。之前全局加weight_decay的写法会给bias也加L2正则,反而限制了bias拟合数据整体偏移的能力。尤其PSNR是像素级误差敏感的指标,哪怕一点整体亮度偏移都会直接拉低分数,取消bias的权重衰减后,偏置可以自由拟合数据的偏移特征,直接提分。 - 偏置参数调高学习率,匹配参数更新节奏
卷积核权重是高维张量,梯度的整体范数远大于bias的梯度范数,两类参数用相同学习率的话,bias的更新步长会过小,收敛速度远慢于权重。给bias设置2倍学习率后,两类参数的更新幅度更匹配,不会出现权重已经收敛但bias还未拟合到位的情况,最终收敛效果更好。 - 参数拆分逻辑适配卷积类网络结构
用到的get_parameters函数仅对Conv2d的bias做特殊处理,Conv2d、ConvTranspose2d的权重仍然沿用默认的学习率和权重衰减策略,既保留了对权重的正则效果避免过拟合,又针对性优化了bias的更新策略,刚好适配Unet这类全卷积为主的网络结构。
实测1.5dB的PSNR提升在图像恢复类任务中属于非常显著的效果,这类参数分组策略也被广泛用在超分辨率、去噪、去模糊等CV任务的训练配置中。
内容的提问来源于stack exchange,提问作者Mohit Lamba
相关产品推荐
相关产品推荐

