前言
交叉熵损失函数是一种在分类问题中常用的损失函数,它衡量的是模型输出的概率分布与真实标签的概率分布之间的差异。在初学时,仅仅通过调包实现交叉熵损失的计算,对其背后的概念和计算原理认识比较模糊。而各种”熵“的概念在深度学习算法中有非常广泛的用途。这里参考了一些教程,重新梳理一遍交叉熵这个概念,并提供了实现代码。
一、熵是什么?
熵的概念来源于信息论,用来衡量信息量的大小。信息量与事件发生的概率有关,概率越小的事情发生,信息量越大。假设
X
X
X是一个离散型随机变量,其取值集合为
χ
\chi
χ,概率分布函数
p
(
x
)
=
P
r
(
X
=
x
)
,
x
∈
χ
p(x)=Pr(X=x),x\in\chi
p(x)=Pr(X=x),x∈χ,则定义事件
X
=
x
0
X=x_0
X=x0的信息量为:
I
(
x
0
)
=
−
l
o
g
(
p
(
x
0
)
)
I(x_0)=-log(p(x_0))
I(x0)=−log(p(x0))
熵是用来表示所有信息量的期望,即:
H
(
X
)
=
−
∑
i
=
1
n
p
(
x
i
)
l
o
g
(
p
(
x
i
)
)
H(X)=-\sum_{i=1}^n p(x_i)log(p(x_i))
H(X)=−i=1∑np(xi)log(p(xi))
二、交叉熵
交叉熵用
H
(
P
,
Q
)
H(P,Q)
H(P,Q)来表示,用于衡量两个概率分布之间的差异。具体来说,假设有两个概率分布
P
P
P和
Q
Q
Q,交叉熵定义为:
H
(
P
,
Q
)
=
−
∑
P
(
x
)
l
o
g
Q
(
x
)
H(P,Q)=-\sum P(x)log Q(x)
H(P,Q)=−∑P(x)logQ(x)
其中,
P
(
x
)
P(x)
P(x)是真实分布,
Q
(
x
)
Q(x)
Q(x)是预测分布。
在机器学习中,交叉熵用于衡量模型预测值与真实值之间的差异。以二分类问题为例,交叉熵损失函数为:
L
=
−
y
l
o
g
p
−
(
1
−
y
)
l
o
g
(
1
−
p
)
L=-y logp-(1-y)log(1-p)
L=−ylogp−(1−y)log(1−p)
其中,
y
y
y为真实标签,
p
p
p为模型预测的概率。
对于多分类问题,交叉熵损失函数表示为:
L
=
−
∑
y
i
l
o
g
p
i
L=-\sum y_i log p_i
L=−∑yilogpi
其中,
y
i
y_i
yi是真实标签的one-hot编码,
p
i
p_i
pi是模型预测的概率。关于交叉熵损失在实际多分类问题中的应用,可以看下面这个链接2.5节:交叉熵损失
交叉熵损失代码如下:
2万+

被折叠的 条评论
为什么被折叠?



