一文理清L1 loss、L2 loss、smooth L1 loss原理与区别
L1 lossL2 losssmooth L1 loss
L1 loss
L1 loss常用别称:
- L1范数损失
- 最小绝对偏差(LAD)
- 平均绝对值误差(MAE)
其中,yi是真实值,f(xi)是预测值,n是样本点个数
优缺点?
- 优点:无论对于什么样的输入值,都有着稳定的梯度,不会导致梯度爆炸问题,具有较为稳健性的解
- 缺点:在中心点是折点,不能求导,梯度下降时要是恰好学习到w=0就没法接着进行了
什么时候使用?
- 回归任务
- 简单模型
- 神经网络通常比较复杂,直接使用L1 loss作为损失函数的非常少
L2 loss
L2 loss常用别称:
- L2范数损失
- 最小均方误差(LSE)
- 均方误差(MSE)
其中,yi是真实值,f(xi)是预测值,n是样本点个数
优缺点?
- 优点:各点都连续光滑,方便求导,具有较为稳定的解
- 缺点:不是特别的稳健,因为当函数的输入值距离真实值较远的时候,对应loss值很大在两侧,则使用梯度下降法求解的时候梯度很大,可能导致梯度爆炸
什么时候使用?
- 回归任务
- 数值特征不大(防止loss太大,继而引起梯度大,梯度爆炸)
- 问题维度不高(loss本身比较简单,高纬度的还是得要更复杂的loss支撑)
Smooth L1 loss
平滑版的L1 loss
分析一下,当预测值f(xi)和真实值yi差别较小的时候(绝对值差小于1),其实使用的是L2 loss;差别大的时候,使用的是L1 loss的平移。因此,Smooth L1 loss其实是L1 loss 和L2 loss的结合,同时拥有两者的部分优点:
- 真实值和预测值差别较小时(绝对值差小于1),梯度也会比较小(损失函数比普通L1 loss在此处更圆滑)
- 真实值和预测值差别较大时,梯度值足够小(普通L2 loss在这种位置梯度值就很大,容易梯度爆炸)
什么时候使用?
- 回归任务
- 特征中有较大数值
- 适合大多数问题(用的最多!)
三者区别
(1)L1 loss在零点不平滑,此处不可导,所以在w=0时没法接着梯度下降了,用的少
(2)L2 loss对离群点比较敏感,离群点处的梯度很大,容易梯度爆炸
(3)smooth L1 loss结合了L1和L2的优点,修改了零点不平滑问题,且比L2 loss对异常值的鲁棒性更强
常见问题解释
一、L1 loss、L1正则、L1范数有何区别?
L1范数:
L1 loss和L1 正则都使用了L1范数,L1 loss是指对预测值和真实值的差值使用L1范数计算生成的一个损失函数;L1正则是指损失函数之后单独加了一项,这一项是对所有的权重参数w进行L1范数的运算。
两者只是使用了同一种运算方式,但并不是同一个东西,L2同理(注意,L2正则项是L2范数的平方)。
二、L1正则为何会引起特征稀疏?
因为L1正则会使得大部分无用特征的权重被置0,这源于公式特性,解释如下:
(1)这是一个L2 loss加上一个L1正则或L2正则
(2)梯度下降法优化时,会这样更新参数
(3)对参数w求导
(4)下面是L1正则、L2正则的原函数图像和求导之后的函数图像
(5)先看L1的,在梯度更新时,无论L1的大小是多少,梯度都是1或者-1,所以每次更新时,它都是固定步长向0前进
(6)再看L2,梯度越靠近0,就会越小
(7)也就是说加了L1正则后,经过一定学习步数后w是有可能变为0的,而L2不可能,因为w = w - αw,每次都是减去的原始w的一个比例,永远不会减到0。L1正则中由于很多无用的w可能变为0,则乘上对应位置特征后,对应位置特征也变成0。
因此说L1会造成特征稀疏!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)