关于为什么分类问题不能使用MSE

分类问题使用的损失函数为:交叉熵
回归问题使用的损失函数为:MSE

今天被人问到为什么分类问题不能使用MSE,突然不知道怎么回答了,之前也没考虑过这个问题,只是知道这么去使用。下面是查了一些资料,以及推导了一点公式,试图将这个问题讲明白。

首先,对于分类问题,网络输出的是属于某个类的概率。二分类就输出一个值,属于该类就是这个值,不属于这类就等于1-该值。多分类问题(比如n个类别),就是得到n个概率值。

这就要求使用激活函数对最后一层进行处理,二分类使用sigmoid,多分类就使用softmax,这两个函数本质上是等价的。

假设模型的预测结果为 y ^ \hat y y^,真实的结果为 y y y

如果是MSE激活函数: L o s s = 1 2 n ∑ i = 1 n ( y i − y ^ i ) 2 Loss=\frac{1}{2n}\sum_{i=1}^{n}(y_i-\hat y_i)^2 Loss=2n1i=1n(yiy^i)2, n表示类别数

如果是交叉熵函数: L o s s = − ∑ i = 1 n y i log ⁡ ( y i ^ ) Loss=-\sum_{i=1}^{n}y_i\log(\hat{y_i}) Loss=i=1nyilog(yi^), n表示类别数


以二分类sigmoid为例:

模型的输出为: y ^ ∈ ( 0 , 1 ) \hat y\in(0,1) y^(0,1)
标签为 y = 1 y=1 y=1

我们知道,sigmoid求导为: y ^ ( 1 − y ^ ) \hat{y}(1-\hat{y}) y^(1y^)

MSE激活函数:
L o s s = 1 2 ( y − y ^ ) 2 Loss=\frac{1}{2}(y-\hat y)^2 Loss=21(yy^)2
∂ L o s s ∂ θ = ( y − y ^ ) y ^ ( y − y ^ ) ∂ o u t p u t ∂ θ = ( 1 − y ^ ) y ^ ( 1 − y ^ ) ∂ o u t p u t ∂ θ \frac{\partial Loss}{\partial \theta}=(y-\hat{y})\hat{y}(y-\hat{y})\frac{\partial output}{\partial \theta}=(1-\hat{y})\hat{y}(1-\hat{y})\frac{\partial output}{\partial \theta} θLoss=(yy^)y^(yy^)θoutput=(1y^)y^(1y^)θoutput

交叉熵函数:
L o s s = − y log ⁡ ( y ^ ) Loss=-y\log(\hat{y}) Loss=ylog(y^)
∂ L o s s ∂ θ = − y 1 y ^ y ^ ( y − y ^ ) ∂ o u t p u t ∂ θ = − y ( y − y ^ ) ∂ o u t p u t ∂ θ = − ( 1 − y ^ ) ∂ o u t p u t ∂ θ \frac{\partial Loss}{\partial \theta}=-y\frac{1}{\hat{y}}\hat{y}(y-\hat{y})\frac{\partial output}{\partial \theta}=-y(y-\hat{y})\frac{\partial output}{\partial \theta}=-(1-\hat{y})\frac{\partial output}{\partial \theta} θLoss=yy^1y^(yy^)θoutput=y(yy^)θoutput=(1y^)θoutput

因此,在使用MSE时,梯度是 y ^ \hat{y} y^的三次表达式,如果 y ^ \hat y y^被错误的预测,也就是等于0,那么梯度也是0,不会被优化,显然是不对的。
使用交叉熵,梯度是 y ^ \hat y y^的线性表达(正好被消掉了),如果 y ^ \hat y y^被错误的预测,也就是等于0,那么梯度是有值的,会被正常优化

那么,回归问题能否使用交叉熵呢?
也是可以的,但是更多的是将回归问题转变为分类问题(离散化),然后使用交叉熵损失函数


以上是公式的推导,说明了MSE用在分类问题上不能优化网络参数(因为梯度会为0,梯度消失)

MSE应用在分类上,还存在一个问题,会导致正确分类变大的同时,错误分类也变得平均,比如三分类问题,预测结果为(a,b,c),真实结果为(1,0,0),loss函数的值为: ( a − 1 ) 2 + b 2 + c 2 (a-1)^2+b^2+c^2 (a1)2+b2+c2,因此,只有在a被正确预测(a=1),且b和c都是相同值时,loss最小。

从本质上讲,交叉熵衡量的是同一个随机变量中的两个不同概率分布的差异程度,在机器学习中就表示为真实概率分布和预测概率分布之间的差异,所以交叉熵本质是概率问题,和几何上的欧式距离无关,在回归问题中才有欧式距离的说法。
而MSE衡量预测值与实际值之间的差距,更适合回归问题。

从优化角度上讲,MSE+sigmoid得到的损失函数是非凸函数,有多个极值点,不适合做损失函数。

参考:
https://blog.csdn.net/u013385018/article/details/115355701

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值