GAN的原理(李宏毅GAN笔记)

博客主要介绍了GAN在图像生成中的应用。图像生成任务是找到参数使原始数据集样本在G定义的概率分布中出现概率最大,可通过极大似然估计得到参数,使真实与生成图像的KL散度最小。还提到了discriminator及优化的损失函数,类似二分类交叉熵损失函数。

我们通常用GAN来做Gerneration。

对于一张图片x,其通常分布在高维空间中的一个流行上。在下图中,位于蓝色区域的点仅有很大的概率出现在我们的database中。

那么图像生成的主要任务是什么呢?

给定义原始数据的分布,再给定一个以\Theta作为参数的概率模型P_{G}(x,\Theta ),该模型可以由generator学习得到。我们希望的,便是找到相应的参数\theta,使得原始数据集中的样本x在由G所定义的概率分布P_{G}(x,\theta )中出现的概率尽可能大。

为了找到这样的参数,我们可以先从database中随机选出m个样本,并根据计算达到每个样本被生成的概率P_{G}(x^{\theta };\theta ),再将这m个样本对应的概率乘起来,即可得到相应的似然函数。

 进一步具体化似然函数,我们发现采用极大似然估计得到的参数\theta ^{*},也恰好使得real image与generated image的KL散度达到最小。

我们的generator本质上是一个network,这个network定义了一个概率分布P_{G}(x),我们希望的便是P_{G}(x)P_{data}(x)尽可能的接近。问题在于该如何得到P_{G}(x)呢? 

我们暂且放下先前的问题不管.我们把目光转向discriminator.

尽管我们不知道P_{G}(x)P_{data}(x)的具体形式,但是我们可以对真实图片与生成图片进行采样。

对于一个给定的generator,我们希望优化的损失函数如下图,其形式非常类似与二分类问题中的交叉熵损失函数。 

 我们发现当真实图片与生成图片具有较小的divergence时,discriminator难以辨别真实图片和生成图片。但是当两者具有较大的diverg

 

 

 

 

 

### 李宏毅机器学习笔记中的GAN相关内容 #### GAN基本概念 生成对抗网络(Generative Adversarial Networks, GANs)由两个主要部分组成:生成器(Generator)和判别器(Discriminator)。生成器的目标是从随机噪声中生成逼真的样本,而判别器则试图区分这些生成的样本与真实的数据样本。两者通过相互竞争的方式共同训练,最终达到纳什均衡状态,在此状态下生成器能够生成几乎无法被识别出来的假样本[^4]。 #### 条件GAN的应用扩展 条件GAN是在标准GAN的基础上进行了改进,允许模型基于特定条件来控制生成的内容。具体而言,除了提供给生成器和判别器的标准输入外,还会附加一段描述期望特性的向量作为额外输入。这段向量可以是由文本转换而成的表示形式,从而指导生成过程按照指定的主题或风格进行创作。例如,可以通过输入一段文字说明让GAN创建具有相应属性的人脸图片;同样地,也支持利用语音信号引导图像合成任务。 #### 训练技巧与优化策略 为了提高GAN及其变体的有效性和稳定性,研究者们提出了多种辅助技术: - **Learning Rate Scheduling**: 动态调整学习率有助于改善收敛性能并防止过拟合现象的发生。一种常见的做法是采用Warm-Up机制——初期保持较低水平的学习速率以便充分探索损失曲面特性,随后逐步增加直至某个峰值后再缓慢降低,以此促进全局最优解的发现[^5]。 - **Regularization Methods**: 正则化手段如Dropout对于增强泛化能力至关重要。特别是在卷积神经网络架构下运用时,不仅能有效缓解过拟合风险,还能促使特征提取更加鲁棒可靠[^3]. ```python import torch.nn as nn class Generator(nn.Module): def __init__(self, input_dim=100, output_channels=3): super(Generator, self).__init__() # 定义生成器结构... def forward(self, z, condition_vector=None): # 实现前向传播逻辑... pass class Discriminator(nn.Module): def __init__(self, input_channels=3): super(Discriminator, self).__init__() # 定义判别器结构... def forward(self, image, condition_vector=None): # 实现前向传播逻辑... pass ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值