逻辑回归为什么使用交叉熵而不用均方差?或者说逻辑回归的损失函数为什么不用最小二乘?
下面主要从两个角度进行阐述:
- 从逻辑回归的角度出发,逻辑回归的预测值是一个概率,而交叉熵又表示真实概率分布与预测概率分布的相似程度,因此选择使用交叉熵
- 从均方差(MSE)的角度来说,预测值概率与欧式距离没有任何关系,并且在分类问题中,样本的值不存在大小比较关系,与欧式距离更无关系,因此不适用MSE
1、损失函数的凸性(使用MSE可能会陷入局部最优)
前面我们在介绍线性回归时,我们用到的损失函数是误差(残差)平方和
L = ∑ i = 1 m ( y i − y ^ i ) 2 = ∑ i = 1 m ( y i − x i ω ) 2 L=\sum_{i=1}^m(y_i-\hat y_i)^2=\sum_{i=1}^m(y_i-x_i\omega)^2 L=i=1∑m(yi−y^i)2=i=1∑m(yi−xiω)2
这是一个凸函数,有全局最优解
如果逻辑回归也使用误差平方和,由于逻辑回归假设函数的外层函数是Sigmoid
函数,Sigmoid
函数是一个复杂的非线性函数,这就使得我们将逻辑回归的假设函数代入上式时,即
L
=
∑
i
=
1
m
(
y
i
−
1
1
+
e
−
x
i
ω
)
2
L=\sum_{i=1}^m\left(y_i-\frac{1}{1+e^{-x_i\omega}}\right)^2
L=i=1∑m(yi−1+e−xiω1)2
那么,我们得到的 L L L是一个非凸函数,不易优化,容易陷入局部最优解。所以逻辑回归的损失函数使用的是对数损失函数(Log Loss Function)
在逻辑回归(详见:传送门)一文中,我们已经给出了KL散度与交叉熵的关系
交叉熵
=
K
L
散度
+
信息熵
交叉熵=KL散度+信息熵
交叉熵=KL散度+信息熵
即交叉熵等于KL散度加上信息熵。而信息熵是一个常数,并且在计算的时候,交叉熵相较于KL散度更容易,所以我们直接使用了交叉熵作为损失函数
因此,我们在最小化交叉熵的时候,实际上就是在最小化 KL散度,也就是在让预测概率分布尽可能地与真实概率分布相似
2、MSE的损失小于交叉熵的损失(导致对分类错误点的惩罚不够)
逻辑回归的数学表达式如下
h
θ
(
x
)
=
g
(
θ
T
x
)
=
1
1
+
e
−
θ
T
x
h_\theta(x)=\rm g(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}}
hθ(x)=g(θTx)=1+e−θTx1
对于一元逻辑回归,其预测值为
y
^
=
σ
(
ω
x
+
b
)
\hat y = \sigma(\omega x+b)
y^=σ(ωx+b)
其中,
σ
\sigma
σ为Sigmoid
函数
如果使用均方差作为损失函数,我们以一个样本为例,为方便计算,我们给均方差除以2(不改变函数的单调性)
C
=
1
2
(
y
−
y
^
)
2
C=\frac{1}{2}(y-\hat y)^2
C=21(y−y^)2
其中
y
^
\hat y
y^=
σ
(
z
)
\sigma(z)
σ(z)=
1
1
+
e
−
z
\frac{1}{1+e^{-z}}
1+e−z1,
z
z
z=
ω
x
+
b
\omega x+b
ωx+b,使用梯度下降法对
ω
\omega
ω进行更新,那么就需要将损失函数对
ω
\omega
ω进行求偏导数
∂
C
∂
ω
=
(
y
−
y
^
)
σ
′
(
z
)
x
=
(
y
−
y
^
)
y
^
(
1
−
y
^
)
x
\frac{\partial C}{\partial \omega}=(y-\hat y)\sigma'(z)x=(y-\hat y)\hat y(1-\hat y)x
∂ω∂C=(y−y^)σ′(z)x=(y−y^)y^(1−y^)x
具体计算过程可参考如下或文末参考文章
可以看到,均方差损失函数的梯度与激活函数(Sigmoid
函数)的梯度成正比,当预测值接近于1或0时,梯度会变得非常小,几乎接近于0,这样会导致当真实值与预测值差距很大时,损失函数收敛的很慢,无法进行有效学习,与我们的期望不符合
因此,如果使用均方差损失,训练的时候可能看到的情况是预测值和真实值之间的差距越大,参数调整的越小,训练的越慢
如果使用交叉熵作为损失函数,对于二分类问题,交叉熵的形式是由极大似然估计下概率的连乘然后取对数得到的(推导见文章:传送门)
C
=
−
[
y
ln
y
^
+
(
1
−
y
)
ln
(
1
−
y
^
)
]
C=-[y\ln \hat y +(1-y)\ln (1-\hat y)]
C=−[ylny^+(1−y)ln(1−y^)]
关于
ω
\omega
ω求偏导数得
∂
C
∂
ω
=
(
σ
(
z
)
−
y
)
x
\frac{\partial C}{\partial \omega}=(\sigma(z)-y)x
∂ω∂C=(σ(z)−y)x
可以看到,交叉熵损失函数的梯度和当前预测值与真实值之间的差是有关的,没有受到Sigmoid
函数的梯度的影响,且真实值与预测值的差越大,损失函数的梯度就越大,更新的速度也就越快,这正是我们想要的文章来源:https://www.toymoban.com/news/detail-832871.html
参考文章:https://zhuanlan.zhihu.com/p/453411383?login=from_csdn文章来源地址https://www.toymoban.com/news/detail-832871.html
到了这里,关于逻辑回归为什么使用交叉熵而不用均方差?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!