CGAN 原理及实现
一、CGAN 原理
1.1 基本概念
条件生成对抗网络
(Conditional GAN, CGAN)是GAN的一种扩展,它在生成器和判别器中都加入了额外的条件信息
y y y。这个条件信息可以是类别标签、文本描述或其他形式的辅助信息。
1.2 与传统GAN的区别
- 传统GAN: G ( z ) G(z) G(z) → 生成样本, D ( x ) D(x) D(x) → 判断真实/生成
CGAN
: G ( z ∣ y ) G(z|y) G(z∣y) → 基于条件 y y y 生成样本, D ( x ∣ y ) D(x|y) D(x∣y) → 基于条件 y y y 判断真实/生成
1.3 目标函数
CGAN的目标函数可以表示为: m i n G m a x D V ( D , G ) = 𝔼 x ∼ p data [ l o g D ( x ∣ y ) ] + 𝔼 z ∼ p z ( z ) [ l o g ( 1 − D ( G ( z ∣ y ) ∣ y ) ) ] min_G max_D V(D,G) = 𝔼_{x \sim p_{\text{data}}}[log D(x|y)] + 𝔼_{z \sim p_z(z)}[log(1 - D(G(z|y)|y))] minGmaxDV(D,G)=Ex∼pdata[logD(x∣y)]+Ez∼pz(z)[log(1−D(G(z∣y)∣y))],其中 y y y 是条件信息。
1.4 损失函数
(1) 判别器(Discriminator)的损失函数
\space \space 判别器需要同时判断:
真实图像是否真实
(且匹配其标签)生成图像是否虚假
(且匹配其标签)
损失函数公式:
L D = E x , y ∼ p data [ log D ( x ∣ y ) ] ⏟ 真实样本损失 + E z ∼ p z , y ∼ p labels [ log ( 1 − D ( G ( z ∣ y ) ∣ y ) ] ⏟ 生成样本损失 \mathcal{L}_D = \underbrace{\mathbb{E}_{x,y \sim p_{\text{data}}}[\log D(x|y)]}_{\text{真实样本损失}} + \underbrace{\mathbb{E}_{z \sim p_z, y \sim p_{\text{labels}}}[\log (1 - D(G(z|y)|y)]}_{\text{生成样本损失}} LD=真实样本损失 Ex,y∼pdata[logD(x∣y)]+