其中:
● q(z|x)是编码器生成的潜在变量的后验分布。
● p(z)是先验分布,通常假设为标准正态分布N(0,1)。
KL散度项确保潜在空间的分布接近于标准正态分布,从而提高生成数据的连续性和多样性。
(2)分类问题中的交叉熵损失
分类问题中的交叉熵损失实际上可以看作是KL散度的一种形式。在分类问题中,真实标签通常表示为one-hot向量,模型输出的则是一个预测概率分布。最小化交叉熵损失就是最小化真实分布和预测分布之间的KL散度。
交叉熵损失函数:

等价于KL散度中的部分形式:

由于真实分布 (P) 是one-hot形式,所以 H(P) 是常数,最小化交叉熵损失等价于最小化KL散度。
(3)强化学习中的策略优化
在强化学习中,KL散度可以作为策略更新中的约束,确保新策略 ( π' ) 和旧策略 ( π ) 不偏离太远。这种方法通过将KL散度作为损失函数的一部分进行优化,以确保策略的平稳更新。
在这种情况下,目标是通过最小化以下损失函数进行策略更新:

其中α是一个平衡系数,DKL(π||π′)控制新旧策略的差异,避免策略更新过快或过激。
(4)生成模型中的正则化项
KL散度也常用于生成对抗网络(GAN)和其他生成模型中的正则化项。通过引入KL散度,模型可以保持生成分布与某个目标分布的接近度。这通常用于引导生成样本的多样性和稳定性。
(5)多任务学习中的权衡损失
在某些多任务学习场景中,KL散度可以用来衡量某一任务的输出分布与其他任务输出分布的差异,从而引入额外的正则化约束,以便各任务在共享网络中的学习互不冲突。
(6)T-SNE
总结
KL散度是一种广泛应用于机器学习和深度学习中的度量工具,尤其是在涉及概率分布的场景中。其主要用于衡量模型预测的分布与真实分布的差异,并通过最小化KL散度来优化模型表现。具体应用场景包括:
● 变分自编码器中的潜在分布优化
● 分类任务中的交叉熵损失
● 强化学习中的策略更新约束
● 生成模型中的分布正则化
通过将KL散度引入损失函数,模型可以在复杂任务中更好地平衡生成质量、分布匹配以及策略优化的需求。
本文转载自知乎博主:好评笔记