生成对抗网络GAN损失函数loss的简单理解

该博客深入解析了GAN(生成对抗网络)的损失函数,详细介绍了判别器D和生成器G的训练目标。D的目标是最大化真实样本的识别概率和最小化虚假样本的误判概率,而G则相反,旨在生成更逼真的样本以降低D的辨别能力。训练过程中,D和G交替优化,以达到生成器生成难以区分真假的样本状态。

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

原始的公式长这样:
min ⁡ G max ⁡ D V ( D , G ) = E x ∼ p data  ( x ) [ log ⁡ D ( x ) ] + E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \min _{G} \max _{D} V(D, G)=\mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}(\boldsymbol{x})}[\log D(\boldsymbol{x})]+\mathbb{E}_{\boldsymbol{z} \sim p_{\boldsymbol{z}}(\boldsymbol{z})}[\log (1-D(G(\boldsymbol{z})))] GminDmaxV(D,G)=Expdata (x)[logD(x)]+Ezpz(z)[log(1D(G(z)))] 首先可以明确一点,这种公式肯定是从里面算到外面的,也就是可以先看这一部分: max ⁡ D V ( D , G ) = E x ∼ p data  ( x ) [ log ⁡ D ( x ) ] + E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \max _{D} V(D, G)=\mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}(\boldsymbol{x})}[\log D(\boldsymbol{x})]+\mathbb{E}_{\boldsymbol{z} \sim p_{\boldsymbol{z}}(\boldsymbol{z})}[\log (1-D(G(\boldsymbol{z})))] DmaxV(D,G)=Expdata (x)[logD(x)]+Ezpz(z)[log(1D(G(z)))] 我们知道,在每个epoch中,GAN的生成器与判别器是分别训练的,即先固定生成器 G G G,去训练判别器 D D D,那么上面这个式子实际上就是判别器的"损失函数"。继续拆分上面这个式子,可以发现主要就是加号左右两个部分。

先看左边。左边这一部分的作用是保证判别器的基础判断能力:对于 E x ∼ p data  ( x ) [ log ⁡ D ( x ) ] \mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}(\boldsymbol{x})}[\log D(\boldsymbol{x})] Expdata (x)[logD(x)] x \boldsymbol{x} x为从真实数据分布 p data  p_{\text {data }} pdata 中采样得到的样本。 E x ∼ p data  ( x ) [ log ⁡ D ( x ) ] \mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}(\boldsymbol{x})}[\log D(\boldsymbol{x})] Expdata (x)[logD(x)]越大,相当于意味着 D ( x ) D(\boldsymbol{x}) D(x)越大,即判别器越能准确地将真实样本识别为真实样本;因此有 max ⁡ D \max _{D} maxD

再看右边。右边这一部分的作用是保证判别器能够区分出虚假样本:对于 E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \mathbb{E}_{\boldsymbol{z} \sim p_{\boldsymbol{z}}(\boldsymbol{z})}[\log (1-D(G(\boldsymbol{z})))] Ezpz(z)[log(1D(G(z)))] z \boldsymbol{z} z为从某一特定分布 p z p_{\boldsymbol{z}} pz中得到的采样, G ( z ) G(\boldsymbol{z}) G(z)为生成器生成的虚假样本。 E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \mathbb{E}_{\boldsymbol{z} \sim p_{\boldsymbol{z}}(\boldsymbol{z})}[\log (1-D(G(\boldsymbol{z})))] Ezpz(z)[log(1D(G(z)))]越大,相当于意味着 D ( G ( z ) ) D(G(\boldsymbol{z})) D(G(z))越小,即判别器越能够正确区分虚假样本,将其标为False;因此有 max ⁡ D \max _{D} maxD

再来看生成器G的"损失函数"。到了训练生成器G的阶段,此时判别器D固定。如果G更强,那么判别器会进行误判,此时 D ( G ( z ) ) D(G(\boldsymbol{z})) D(G(z))会变大, E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \mathbb{E}_{\boldsymbol{z} \sim p_{\boldsymbol{z}}(\boldsymbol{z})}[\log (1-D(G(\boldsymbol{z})))] Ezpz(z)[log(1D(G(z)))]更接近于零,即整个式子的值会更小;因此有 min ⁡ G \min _{G} minG

拓展阅读:训练正常&异常的GAN损失函数loss变化应该是怎么样的

EDSR(Enhanced Deep Super-Resolution network)是一种用于图像超分辨率的深度学习模型。它通过多层卷积神经网络来提高图像的分辨率。EDSR的主要特点是去除了传统残差网络中的不必要的模块,从而简化了网络结构,提高了模型的性能。 结合对抗损失函数,通常是指在EDSR的基础上引入生成对抗网络GAN)的思想。生成对抗网络由生成器(Generator)和判别器(Discriminator)组成。生成器的目标是通过生成尽可能逼真的图像来欺骗判别器,而判别器的目标则是区分真实图像和生成器生成的图像。 在EDSR中引入对抗损失函数的具体步骤如下: 1. **生成器(EDSR)**:使用EDSR作为生成器,输入低分辨率图像,生成高分辨率图像。 2. **判别器**:设计一个卷积神经网络,用于判别输入图像是真实高分辨率图像还是生成器生成的高分辨率图像。 3. **损失函数**:结合对抗损失函数和内容损失函数。内容损失函数通常使用均方误差(MSE)来衡量生成图像与真实图像之间的差异。对抗损失函数则使用生成器和判别器之间的对抗训练来进一步优化生成图像的质量。 具体损失函数可以表示为: \[ \mathcal{L}_{\text{total}} = \mathcal{L}_{\text{content}} + \lambda \mathcal{L}_{\text{adversarial}} \] 其中,\( \mathcal{L}_{\text{content}} \) 是内容损失,\( \mathcal{L}_{\text{adversarial}} \) 是对抗损失,\( \lambda \) 是平衡两个损失的权重。 通过结合对抗损失函数,EDSR可以生成更加逼真的高分辨率图像。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值