194、损失函数设计:L1、L2、感知损失、GAN损失与边缘损失联合调优

📅 2026/7/19 13:20:34
194、损失函数设计:L1、L2、感知损失、GAN损失与边缘损失联合调优
194、损失函数设计:L1、L2、感知损失、GAN损失与边缘损失联合调优上个月调一个4倍超分模型,跑了一周,PSNR涨了0.03dB,视觉上却糊成一团。检查损失函数,发现L2权重设得太高,模型学会了“平均化”所有纹理——高频细节全被抹平了。这种坑我踩了不下十次,今天把损失函数联合调优的实战经验写清楚。从L1和L2的“性格差异”说起L2损失(MSE)有个毛病:它对大误差极度敏感。像素值差10和差20,L2惩罚是4倍差距。这导致模型宁愿把边缘模糊掉,也不愿产生“尖锐但位置偏移”的预测。训练初期你会看到PSNR涨得飞快,但放大看图像,像蒙了一层雾。L1损失就温和得多,它对所有误差一视同仁。换L1后,模型敢去预测锐利边缘了,因为偶尔偏几个像素不会被疯狂惩罚。但L1收敛慢,尤其在高频区域容易震荡。我的经验是:前50个epoch用L1,后面切到L1+L2混合。混合比例我试过很多组合,最终稳定在L1:L2 = 0.8:0.2。别用0.5:0.5,那等于什么都没优化。代码里这样写:# 这里踩过坑:直接用加法会导致梯度尺度失衡l1_loss=F.l1_loss