关于连续值目标优化loss选择

669次阅读
没有评论

如果模型的label为连续的概率值,选择什么loss 函数进行学习。抛出这个问题,因为现在在做一个视频推荐的项目,其中一个指标就是完播率,这个是一个介于[0,1]之间的数值,是个连续值。本质上应该还是个回归问题,一般回归的时候我们都会用mse作为loss来优化。

1、cross entropy
首先在直觉上,用CE预估连续值,似乎有问题,因为当pred(预估值)=label的时候,loss本身大于0,

比如 pred=0.6 的时候

loss=-(0.6_log0.6+0.4_log0.4)>0

对比正常的二分类目标而言,此时是有问题的,因为如果预估值与标签一样的话,那么它的loss是为0 ,反向传播梯度也是0,这样才符合认知。

而当连续值预估的时候,loss>0则梯度“应该”也不为0。

但是实际推导一下,假设真实概率p,预估概率q,则loss对q的导数为-p/q + (1-p)/(1-q),实际上当p=q的时候,loss的gradient也为0,由链式法则可得,对输出一层偏导也会为0。

描述到这里,感觉好像也没啥问题。

2、MSE

MSE通常用于回归问题,其假设误差遵循 Normal Distribution

其实当输入为Sigmoid激活时,不能使用mse做loss,这样会导致梯度弥散,可以参考gradient vanishing/explode 中的数值分析中的第六点

当然,这里还有个问题是,如果使用sigmoid激活。对于朴素的Logistic Regression来说,优化问题是convex的,而对于MSE loss就不是convex的了。

对于DNN状况,则大部分就是梯度问题,具体可见:https://stats.stackexchange.com/questions/326350/what-is-happening-here-when-i-use-squared-loss-in-logistic-regression-setting

3、对比

角度1:先说结论,CE在距离最优值一定距离的点上梯度比MSE更大,但是在极值(靠近0,1)附近的gradient非常大,所以训练的时候可能需要对gradient做额外的处理。

第一张图是loss曲线

关于连续值目标优化loss选择

第二张图是梯度曲线

关于连续值目标优化loss选择

对于ce优化,边缘的梯度变化过于大,需要做适当的裁剪防止更新梯度异常。

角度2:这个可能跟业务相关,如果把完播率作为ce来优化,那么就是看作“是否完播”的优化目标,如果使用mse来优化,那就是“会播放到什么样的程度,完成度时是多少”,在我们自己的实践中发现使用ce来优化取得的效果是正向。

参考:https://www.jianshu.com/p/048255b3d29b

admin
版权声明:本站原创文章,由 admin 2022-01-07发表,共计1108字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)