1.背景
熵(Entropy): 熵是信息论中的一个基本概念,用于衡量一个随机变量的不确定性, 量化了随机变量的平均信息量。信息量的大小与事件发生的概率成反比:一个事件发生的概率越小,其携带的信息量越大;反之,一个事件发生的概率越大,其携带的信息量越小。
对于一个离散随机变量 X,其概率分布为 P(X),熵 H(X) 定义为:
H
(
X
)
=
−
∑
i
P
(
x
i
)
l
o
g
P
(
x
i
)
H(X)=-\sum_{i}^{}P(x_i)logP(x_i)
H(X)=−∑iP(xi)logP(xi).
其中,
x
i
x_i
xi 是随机变量
X
X
X 的可能取值,
P
(
x
i
)
P(x_i)
P(xi) 是
x
i
x_i
xi 出现的概率。
熵衡量了随机变量的不确定性。如果一个随机变量的取值非常不确定(例如,每个取值的概率都相等),那么熵会很大;如果一个随机变量的取值非常确定(例如,某个取值的概率接近1,其他取值的概率接近0),那么熵会很小。
- 每个取值概率都相等: H ( x ) = − ∑ i = 1 n ( 1 n l o g ( 1 n ) ) = l o g n H(x)=-\sum_{i=1}^n(\frac{1}{n}log(\frac{1}{n}))=logn H(x)=−∑i=1n(n1log(n1))=logn. 不确定性 n n n 越大, l o g ( n ) log(n) log(n) 越大
- 某个取值的概率接近1,其他取值的概率接近0(不妨只让 x k x_k xk 接近1): H ( x ) = − ( P ( x k ) l o g P ( x k ) + ∑ i ≠ k P ( x i ) l o g P ( x i ) ) = − ( 1 l o g 1 + ∑ 0 l o g 0 ) = 0 H(x)=-(P(x_k)logP(x_k)+\sum_{i\ne k}P(x_i)logP(x_i))=-(1log1 + \sum0log0)=0 H(x)=−(P(xk)logP(xk)+∑i=kP(xi)logP(xi))=−(1log1+∑0log0)=0.( x x x趋近0的速度比 l o g x logx logx趋近无穷的速度快很多)
2.交叉熵
交叉熵是衡量两个概率分布之间的差异的工具。假设我们有两个概率分布 P 和 Q,它们定义在同一个随机变量 X 上。
交叉熵 H(P,Q) 定义为:
H
(
P
,
Q
)
=
−
∑
i
P
(
x
i
)
l
o
g
Q
(
x
i
)
H(P,Q)=-\sum_{i}P(x_i)logQ(x_i)
H(P,Q)=−∑iP(xi)logQ(xi).
其中,
P
(
x
i
)
P(x_i)
P(xi) 是真实分布的概率。
Q
(
x
i
)
Q(x_i)
Q(xi) 是模型预测的概率。
交叉熵衡量了用概率分布 Q 来表示真实分布 P 的平均信息量。如果 Q 和 P 完全一致,那么交叉熵等于 P 的熵;如果 Q 和 P 差异很大,那么交叉熵会比 P 的熵大得多。
3.推导
3.1 二分类问题
假设我们有一个二分类问题: 真实标签 y 只能取 0 或 1。模型预测的概率
y
^
\hat{y}
y^ 表示样本属于类别 1 的概率。
真实分布
P
P
P 可以表示为:
p
(
y
)
=
{
1
i
f
y
=
1
0
i
f
y
=
0
}
p(y)=\begin{Bmatrix} 1 \space if \space y=1 \\ 0 \space if \space y=0 \end{Bmatrix}
p(y)={1 if y=10 if y=0}
模型预测的 Q 可以表示为:
Q
(
y
)
=
{
y
^
i
f
y
=
1
1
−
y
^
i
f
y
=
0
}
Q(y)=\begin{Bmatrix} \hat{y} \space if \space y=1 \\ 1-\hat{y} \space if \space y=0 \end{Bmatrix}
Q(y)={y^ if y=11−y^ if y=0}
交叉熵损失
L
c
e
L_{ce}
Lce 可以写为:
L
c
e
=
−
∑
y
∈
{
0
,
1
}
P
(
y
)
l
o
g
Q
(
y
)
L_{ce}=-\sum_{y\in\left \{ 0,1 \right \} }P(y)logQ(y)
Lce=−∑y∈{0,1}P(y)logQ(y).
展开:
L
c
e
=
−
[
P
(
y
=
1
)
l
o
g
(
y
=
1
)
+
P
(
y
=
0
)
l
o
g
Q
(
y
=
0
)
]
=
−
[
y
l
o
g
(
y
^
)
+
(
1
−
y
)
l
o
g
(
1
−
y
^
)
]
L_{ce}=-[P(y=1)log(y=1)+P(y=0)logQ(y=0)]=-[ylog(\hat{y})+(1-y)log(1-\hat{y})]
Lce=−[P(y=1)log(y=1)+P(y=0)logQ(y=0)]=−[ylog(y^)+(1−y)log(1−y^)]
这就是二分类问题中的交叉熵损失函数。
3.2 多分类问题
对于多分类问题,假设:真实标签 y 是一个 one-hot 编码向量,表示样本属于某个类别的概率分布。模型预测的概率
y
^
\hat y
y^ 是一个向量,表示样本属于每个类别的概率。
真实分布 P 和预测分布 Q 可以表示为:
P
(
y
)
=
[
y
1
,
y
2
,
⋯
,
y
c
]
P(y)=[y_1,y_2,\cdots,y_c]
P(y)=[y1,y2,⋯,yc],
Q
(
y
)
=
[
y
^
1
,
y
^
2
,
⋯
,
y
^
c
]
Q(y)=[\hat y_1, \hat y_2, \cdots, \hat y_c]
Q(y)=[y^1,y^2,⋯,y^c].
其中,
C
C
C 是类别的总数,
y
i
y_i
yi 是真实标签向量中的第
i
i
i 个元素,
y
i
y_i
yi 是预测概率向量中的第
i
i
i 个元素。
交叉熵损失
L
c
e
L_{ce}
Lce可以写为:
L
c
e
=
−
∑
i
=
1
c
P
(
y
i
)
l
o
g
Q
(
y
i
)
L_{ce}=-\sum_{i=1}^{c}P(y_i)logQ(y_i)
Lce=−∑i=1cP(yi)logQ(yi).
展开:
L
c
e
=
−
∑
i
=
1
C
y
i
l
o
g
(
y
i
^
)
L_{ce}=-\sum_{i=1}^Cy_ilog(\hat{y_i})
Lce=−∑i=1Cyilog(yi^). 当
C
=
2
C=2
C=2,
y
i
∈
{
0
,
1
}
y_i\in\{0,1\}
yi∈{0,1} 时, 就是二分类的交叉熵损失了.
这就是多分类问题中的交叉熵损失函数。
4.优势
- 对数似然的负值:最小化交叉熵损失等价于最大化对数似然,这是统计学中常用的优化目标。
- 对概率敏感:交叉熵损失使用对数函数,对概率值的变化非常敏感。如果模型对正确类别的预测概率非常低,交叉熵损失会变得非常大,从而对模型施加较大的惩罚。
- 非负性:交叉熵损失总是非负的,这使得它在优化过程中具有良好的性质。
5. 总结
交叉熵损失函数是从信息论中的交叉熵概念推导出来的。它衡量了模型预测的概率分布与真实标签的概率分布之间的差异。通过最小化交叉熵损失,模型可以学习到如何更好地预测每个类别的概率。
2万+

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



