损失函数-分类-KL 散度(KL Loss)¶
Kullback-Leibler Divergence
Kullback-Leibler Divergence (KL散度),又称为相对熵,是信息论中的一个概念,用于衡量两个概率分布之间的差异。在机器学习中,它常用于评估模型预测分布与真实分布之间的距离。
\[\begin{split}\begin{array}{l}
L = \sum_i{P(i)log\frac{P(i)}{Q(i)}}\\
\\
离散分布的 KL散度:\\
D_{\text{KL}}(P || Q) = \sum_{x} P(x) \log \frac{P(x)}{Q(x)}\\
\\
连续分布的 KL散度:\\
D_{\text{KL}}(P || Q) = \int P(x) \log \frac{P(x)}{Q(x)} \, dx\\
\\
P(x) 是真实分布(或目标分布)\\
𝑄(𝑥) 是近似分布(或模型分布)\\
𝐷_{KL}(𝑃∣∣𝑄) 表示 𝑃 和 𝑄 之间的“信息损失”
\end{array}\end{split}\]
优点:衡量两个概率分布之间的差异。
应用场景:分类任务中需要比较概率分布。
直观意义¶
信息损失的度量: KL散度衡量了如果用 𝑄 代替 P,会损失多少信息量:
D_kl(P∣∣Q) 越小,表示 Q 越接近 P。
D_kl(P∣∣Q)=0 表示 P=Q。
非对称性:
D_kl(P∣∣Q) != D_kl(Q∣∣P),
这意味着它不是一种真正的“距离”,因为不满足对称性。
KL散度与交叉熵的关系¶
KL散度与交叉熵和熵的关系:\(D_{\text{KL}}(P || Q) = H(P, Q) - H(P)\)
其中
交叉熵 H(P,Q) \(H(P, Q) = -\sum_{x} P(x) \log Q(x)\)
熵 H(P) \(H(P) = -\sum_{x} P(x) \log P(x)\)
变体或替代方法¶
反向KL散度: 使用 \(D_{\text{KL}}(Q||P)\) ,适用于某些需要强调 Q(x) 为 0 的场景。
- Jensen-Shannon Divergence (JS散度): 是 KL散度的对称变体,定义为 \(D_{\text{JS}}(P || Q) = \frac{1}{2} D_{\text{KL}}(P || M) + \frac{1}{2} D_{\text{KL}}(Q || M)\)
其中 M 为 P 和 Q 的均值分布:\(M = \frac{1}{2}(P+Q)\)
Wasserstein距离: 用于生成对抗网络(GAN)中的分布对比,解决了 KL散度在某些场景下的数值问题。