机器学习、深度学习任务中经常提到L1和L2损失的概念,在这里简单介绍一下它们的基础概念以及区别。
基础概念
- L1损失函数又称为MAE(mean abs error),即平均绝对误差,也就是预测值和真实值之间差值的绝对值。
- L2损失函数又称为MSE(mean square error),即平均平方误差,也就是预测值和真实值之间差值的平方。
相同点
- 因为计算的方式类似,只有一个平方的差异,因此使用的场合都很相近,通常用于回归任务中。
差异
- L2没有L1鲁棒,直观来说,L2会将误差平方,如果误差大于1,则误差会被放大很多,因此模型会对异常样本更敏感,这样会牺牲许多正常的样本。当训练集中含有更多异常值的时候,L1会更有效。
- 如果是图像重建任务,如超分辨率、深度估计、视频插帧等,L2会更加有效,这是由任务特性决定了,图像重建任务中通常预测值和真实值之间的差异不大,因此需要用L2损失来放大差异,进而指导模型的优化。
- L1的问题在于它的梯度在极值点会发生跃变,并且很小的差异也会带来很大的梯度,不利于学习,因此在使用时通常会设定学习率衰减策略。而L2作为损失函数的时候本身由于其函数的特性,自身就会对梯度进行缩放,因此有的任务在使用L2时甚至不会调整学习率,不过随着现在的行业认知,学习率衰减策略在很多场景中依然是获得更优模型的手段。
变体
- 最近也有很多场景中出现了加权的L1和L2,即两者的加权求和