机器学习-算法理论

预估连续值概率的loss function选择

2019-05-22  本文已影响0人  shudaxu

如果模型的label为连续的概率值,选择什么loss fuc进行学习。
本质为regression问题

1、cross entropy
首先在直觉上,用CE预估连续值,似乎有问题,因为当pred=label的时候,loss本身大于0,而在分类的时候,pred=label时loss为0,而离散交叉熵本身非负,0一定是最小值,所以此时梯度也为0,非常符合认知。而当连续值预估的时候,loss>0则梯度“应该”也不为0。
但是实际推导一下,假设真实概率p,预估概率q,则loss对q的导数为-p/q + (1-p)/(1-q),实际上当p=q的时候,loss的gradient也为0,由chain rule可得,对输出前一层的neuron的偏导也会为0。
以下会用更直观的图像来表示

2、MSE
MSE通常用于regression,其假设误差遵循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、对比
先说结论,CE在距离最优值一定距离的点上梯度比MSE更大,但是在极值(靠近0,1)附近的gradient非常大,所以训练的时候可能需要对gradient做额外的处理。如gradient clipping

通过loss和gradient更直观地观察:下图中,label p=0.4

Loss函数值


loss值,蓝色为CE,红色为MSE

由于边缘的gradient过大,所以这里CE的梯度只取了0.1~0.9范围内的


gradient值,蓝色为CE,红色为MSE

CE完整的梯度


cross entropy的gradient

针对不同label值的gradient曲线:


绿0.2,蓝0.4,红0.6

REFER
http://fa.bianp.net/blog/2014/surrogate-loss-functions-in-machine-learning/
mmse

上一篇 下一篇

猜你喜欢

热点阅读