【Python深度学习】——交叉熵|KL散度|交叉熵损失函数
1. 交叉熵Cross Entropy
1.1 交叉熵的含义
交叉熵是两个概率分布之间差异的一种度量.
在机器学习中被广泛应用,尤其是分类问题中。
1.2 交叉熵的公式
H
(
P
,
Q
)
=
−
∑
i
P
(
x
i
)
log
Q
(
x
i
)
H(P, Q) = -\sum_{i} P(x_i) \log Q(x_i)
H(P,Q)=−i∑P(xi)logQ(xi)
其中,
P
(
x
i
)
P(x_i)
P(xi)是真实分布中第 ( i ) 个事件的概率;
Q
(
x
i
)
Q(x_i)
Q(xi)是模型预测分布中第 ( i ) 个事件的概率。
1.3 交叉熵的特点
- 当模型的预测分布 𝑄 越接近真实分布 𝑃 时,交叉熵值越小。
- 交叉熵的值总是大于系统真实熵的值。
2. KL散度
2.1 KL散度的含义
KL散度也称为相对熵, 它也是度量两个概率分布之间差异的一种方式. 它是以Kullback和Leibler两个人命名的.
2.2 KL散度的公式
假设有两个概率分布 𝑃 和 𝑄,其中 𝑃 是真实分布,𝑄 是模型的预测分布。KL散度表示二者的交叉熵与熵的差:
D
K
L
(
P
∥
Q
)
=
H
(
P
,
Q
)
−
H
(
P
)
D_{KL}(P \parallel Q) = H(P, Q) - H(P)
DKL(P∥Q)=H(P,Q)−H(P)
代入之前交叉熵和熵的公式, 可以得出:
D
K
L
(
P
∥
Q
)
=
−
∑
i
P
(
x
i
)
log
Q
(
x
i
)
−
(
−
∑
i
P
(
x
i
)
log
P
(
x
i
)
)
D_{KL}(P \parallel Q) = -\sum_{i} P(x_i) \log Q(x_i) - \left( -\sum_{i} P(x_i) \log P(x_i) \right)
DKL(P∥Q)=−i∑P(xi)logQ(xi)−(−i∑P(xi)logP(xi))
合并化简得到:
D
K
L
(
P
∥
Q
)
=
∑
i
P
(
x
i
)
log
P
(
x
i
)
Q
(
x
i
)
D_{KL}(P \parallel Q) = \sum_{i} P(x_i) \log \frac{P(x_i)}{Q(x_i)}
DKL(P∥Q)=i∑P(xi)logQ(xi)P(xi)
2.3 KL散度的性质
- 非负性
D K L ( P ∥ Q ) ≥ 0 D_{KL}(P \parallel Q) \geq 0 DKL(P∥Q)≥0
当且仅当 𝑃 = 𝑄 时,
D K L ( P ∥ Q ) = 0 ⟺ P = Q D_{KL}(P \parallel Q) = 0 \iff P = Q DKL(P∥Q)=0⟺P=Q - 非对称性:
D K L ( P ∥ Q ) ≠ D K L ( Q ∥ P ) D_{KL}(P \parallel Q) \neq D_{KL}(Q \parallel P) DKL(P∥Q)=DKL(Q∥P)
KL散度遵循Jensen不等式,其推导基于凸函数的性质。对数函数是凹函数,因此:
D
K
L
(
P
∥
Q
)
≥
0
D_{KL}(P \parallel Q) \geq 0
DKL(P∥Q)≥0
2.4 KL散度的常用场景
KL散度广泛应用于很多机器学习算法中,如变分自编码器、生成对抗网络等。它可以作为目标函数来优化模型参数,从而提高模型性能。
3. 交叉熵损失函数
交叉熵损失函数(Cross-Entropy Loss Function)是机器学习中常用的一种损失函数,特别适用于训练神经网络的二分类、多分类问题。它通过比较实际的标签分布与模型预测的概率分布,衡量模型预测的准确性。
3.1 交叉熵损失函数的定义与公式
交叉熵损失函数的目标是最小化预测概率分布与真实分布之间的差异。对于真实分布P 和预测分布 𝑄,交叉熵
𝐻(𝑃,𝑄) 的定义为
L
(
y
,
y
^
)
=
−
∑
i
=
1
K
y
i
log
y
^
i
L(y, \hat{y}) = -\sum_{i=1}^{K} y_i \log \hat{y}_i
L(y,y^)=−i=1∑Kyilogy^i
y
i
y_{i}
yi是实际标签的独热编码(one-hot encoding)如果真实类别是 𝑖,则
y
i
=
1
y_{i}=1
yi=1, 其余为 0;
y
^
i
\hat y_{i}
y^i 是模型预测的类别 𝑖 的概率。