对抗生成网络GAN(优化目标篇)

对抗生成网络GAN的目标是通过生成器与判别器的交互来模拟样本分布。生成器试图制造逼真的假样本,而判别器则努力区分真实与虚假样本。二者的目标函数通过交叉熵损失函数表达,通过交替优化实现模型提升。这篇博客深入探讨了GAN的优化过程及其背后的交叉熵概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对抗生成网络GAN(优化目标篇)

快要面试,故对GAN进行稍许复习

目的

对抗式生成网络GAN提出的目的是估计样本的密度函数pr(x;θ)p_r(x;\theta)pr(x;θ),且并不显式的估计密度函数,而是希望得到一个能生成出符合该分布样本的模型。

方法

通过假设在低维空间上有一个简单的分布zzz,一般假设为多为高斯N(0,I)\mathcal N(\textbf 0,\textbf I)N(0,I),通过建立映射$G:Z→XG: \mathcal Z \rightarrow \mathcal XG:ZX,这个GGG一般利用一个神经网络实现,称为生成器(Generator).对抗生成网络的另一个巧妙之处在于使用另一个神经网络DDD作为判别器(discriminator),用于判断GGG所生成的样本的真假。

  • 生成器的目标是尽量生成较为真实的虚假样本,从而使判别器判断该样本为真实样本
  • 判别器的目标是准确的判断某一样本为真实样本还是由生成器生成的虚假样本,输出其为真实样本的概率

故而判别器的目标为:
max⁡DEx∼pdata[logD(x)]+Ez∼pz[log(1−D(G(z)))] \max\limits_{D} \mathbb E _{x\sim p_{data}}[logD(x)]+\mathbb E_{z\sim p_z}[log(1-D(G(z)))] DmaxExpdata[logD(x)]+Ezpz[log(1D(G(z)))]
第一部分意为使得生成器判别真实样本为真实的概率较大,第二部分意为使得生成器判别虚假样本的为真实的概率较小,此为直观理解。也有通过交叉熵导出的方式,详见邱锡成的《神经网络与深度学习》

而生成器目标为:
min⁡GEz∼pz[log⁡(1−D(G(z)))] \min\limits_G \mathbb E_{z\sim p_z}[\log(1-D(G(z)))] GminEzpz[log(1D(G(z)))]
因此,交替优化判别器目标和生成器目标,从而优化生成器和判别器。

如果将生成器目标和判别器目标写为一体,则为:
min⁡Gmax⁡DEx∼pdata[logD(x)]+Ez∼pz[log(1−D(G(z)))] \min \limits_G \max \limits_D\mathbb E_{x \sim p_{data}}[logD(x)]+\mathbb E_{z\sim p_z}[log(1-D(G(z)))] GminDmaxExpdata[logD(x)]+Ezpz[log(1D(G(z)))]
注意优化DDD时,GGG的参数应当保持不变。

补充:交叉熵

交叉熵有多重导出方法,这里利用最大似然估计。对于一个伯努利分布,有密度函数为:
P(x∣θ)=θx(1−θ)1−x P(x|\theta)=\theta^x(1-\theta)^{1-x} P(xθ)=θx(1θ)1x
其中,θ\thetaθ代表了xxx为真的概率。倘若此时有一组样本x1,x2,⋯ ,xnx_1, x_2, \cdots, x_nx1,x2,,xn, 对伯努利分布做最大似然估计,则有:
θ=arg⁡max⁡θlog⁡∏i=0Nθxi(1−θ)1−xi=arg⁡max⁡θ∑i=0Nxilog⁡θ+(1−xi)log⁡(1−θ) \theta= \mathop{\arg\max}\limits_{\theta}\log\prod_{i=0}^N\theta^{x_i}(1-\theta)^{1-x_i}\\ = \mathop{\arg\max}\limits_{\theta}\sum_{i=0}^N x_i \log\theta+(1-x_i)\log(1-\theta) θ=θargmaxlogi=0Nθxi(1θ)1xi=θargmaxi=0Nxilogθ+(1xi)log(1θ)
对于上式,如果增加一个1N\frac {1}{N}N1并不影像最大化的过程,于是可以变为:
θ=arg⁡max⁡θE[xilog⁡θ+(1−xi)log⁡(1−θ)]=arg⁡max⁡θE[xilog⁡θ]+E[(1−xi)log⁡(1−θ))] \theta = \mathop{\arg\max}\limits_\theta \mathbb E[x_i\log\theta+(1-x_i)\log(1-\theta)]\\ =\mathop{\arg\max}\limits_\theta \mathbb E[x_i\log\theta]+\mathbb E[(1-x_i)\log(1-\theta))] θ=θargmaxE[xilogθ+(1xi)log(1θ)]=θargmaxE[xilogθ]+E[(1xi)log(1θ))]

此时,如果令模型预测θ\thetaθ,则,D(x)=θD(x) = \thetaD(x)=θ,从而可以使得公式变为:
D=max⁡DE[xilog⁡D(xi)]+E[(1−xi)log⁡(1−D(xi)))] D = \mathop{\max}\limits_{D} \mathbb E[x_i\log D(x_i)]+\mathbb E[(1-x_i)\log(1-D(x_i)))] D=DmaxE[xilogD(xi)]+E[(1xi)log(1D(xi)))]
若加个负号,从而变为最小化,就是交叉熵损失函数的形式.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值