KL散度(Kullback-Leibler divergence)、交叉熵(cross entropy)以及GAN(Generative Adversarial Network)损失之间的关系

假设 P P P是真实分布, Q Q Q是预测分布。

KL散度

KL散度是一种衡量两个概率分布 P P P Q Q Q之间差异的方法。它定义为:
D KL ( P ∥ Q ) = ∑ x P ( x ) log ⁡ P ( x ) Q ( x ) D_{\text{KL}}(P \| Q) = \sum_{x} P(x) \log \frac{P(x)}{Q(x)} DKL(PQ)=xP(x)logQ(x)P(x)
KL散度是非对称的, D KL ( P ∥ Q ) ≠ D KL ( Q ∥ P ) D_{\text{KL}}(P \| Q) \neq D_{\text{KL}}(Q \| P) DKL(PQ)=DKL(QP)

交叉熵

交叉熵用于衡量在给定真实分布 P P P的情况下,使用另一个分布 Q Q Q进行编码所需的平均比特数(信息量)。对于两个概率分布 P P P Q Q Q,交叉熵定义为:
H ( P , Q ) = − ∑ x P ( x ) log ⁡ Q ( x ) H(P, Q) = -\sum_{x} P(x) \log Q(x) H(P,Q)=xP(x)logQ(x)
交叉熵是另一个衡量两个概率分布之间差异的方法,特别用于分类任务中。

GAN损失

GAN(生成对抗网络)是一种通过两个网络(生成器Generator和判别器Discriminator)相互对抗来学习的框架。生成器的目标是生成看起来真实的样本,而判别器的目标是区分真实数据和生成的数据。

在GAN的损失函数中,判别器 D D D的损失函数可以表示为:
L D = − E x ∼ p data [ log ⁡ D ( x ) ] − E z ∼ p z [ log ⁡ ( 1 − D ( G ( z ) ) ) ] L_D = -{E}_{x \sim p_{\text{data}}}[\log D(x)] - {E}_{z \sim p_z}[\log (1 - D(G(z)))] LD=Expdata[logD(x)]Ezpz[log(1D(G(z)))]
生成器 G G G的损失函数则是:
L G = − E z ∼ p z [ log ⁡ D ( G ( z ) ) ] L_G = -{E}_{z \sim p_z}[\log D(G(z))] LG=Ezpz[logD(G(z))]

这里, log ⁡ D ( x ) \log D(x) logD(x) log ⁡ ( 1 − D ( G ( z ) ) ) \log (1 - D(G(z))) log(1D(G(z))) 实际上是在计算交叉熵损失,因为判别器 D D D输出的是一个概率值, D ( x ) D(x) D(x)表示输入是真实数据的概率, D ( G ( z ) ) ) D(G(z))) D(G(z)))表示输入是生成数据的概率。

关系

KL散度与交叉熵:假设两个分布 P P P和Q,并且 P P P的熵为 H ( P ) H(P) H(P),那么交叉熵 H ( P , Q ) H(P, Q) H(P,Q)和KL散度 D KL ( P ∥ Q ) D_{\text{KL}}(P \| Q) DKL(PQ)之间有一个简单的数学关系:
H ( P , Q ) = H ( P ) + D KL ( P ∥ Q ) H(P, Q) = H(P) + D_{\text{KL}}(P \| Q) H(P,Q)=H(P)+DKL(PQ)
P P P为真实分布,则熵$H§ $是一个常量。此时,最小化交叉熵等价于最小化KL散度。

交叉熵与GAN损失:在GAN中,判别器和生成器的损失函数都通过交叉熵损失函数实现。判别器最小化一个交叉熵损失;生成器最大化判别器认为其生成样本是真的概率,这也等价于最小化一个交叉熵损失。在GAN中,直接优化的是交叉熵损失,间接地也影响了生成数据分布与真实数据分布之间的KL散度。

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值