李宏毅机器学习笔记-GAN

本文详细探讨了GAN的发展历程,介绍了生成器和鉴别器的工作原理,算法流程,理论基础,包括WGAN和条件GAN的进步。还涵盖了评价方法如IS和FID,以及CycleGAN和流行GAN的应用实例。
部署运行你感兴趣的模型镜像

GAN的发展开始到GAN的基本理论再到GAN生成的评价方法最后到介绍流行的GAN方法

 

一、GAN的基本介绍

 GAN的全名是Generative Adversarial Network生成对抗网络,其主要的目的是为了让训练机器让机器能够自主生成相对应类型的图片

其中生成器generator就是GAN中进行生成相对应类似分布的网络,而鉴别器Discriminator就是判别生成器生成是否为真假的网络,鉴别器通过将输入的图像转换成一个判别值来判断真假,值越大,图像越真实,目前的GAN已经发展了许多的种类,有各式各样的GAN网络。

 

 二、GAN的基本思想

 GAN的基本思想就是两个神经网络分别是generator和discriminator

其中生成器每次生成图像然后鉴别器会去判定判别生成器生成的图像 ,两者不断地生成判别相互对抗相互提升,到最后生成器生成的图像质量不断提升,判别器判别的能力也不断提升,这就是生成对抗式网络的基本思想,互相制约互相提高

三、GAN的算法流程

Step 1:初始化生成器和判别器的参数
Step 2:固定住生成器更新判别器,判别器给生成器的生成图像打低分给真实标签图像打高分
Step 3:固定住判别器更新生成器,生成器通过输入的随机采样的vector生成图像尝试骗过判别器使其让它打高分。

 四、GAN的理论部分

 1、GAN生成器的生成目标

GAN中生成器的目标是:将输入的正态分布数据经过生成网络变成类似真实标签分布的数据,而为了让分布尽可能相似就必须最小化两个数据分布之间的距离

 

 2、GAN中鉴别器的目标

既然生成器的目标是最小化生成数据和真实数据之间的距离那么鉴别器就是最大化两者的距离,针对如何计算生成数据和真实数据之间的距离,引入了JS散度的概念来计算,事实上也可以看成是交叉熵乘一个负号,如图所示:

 之前在计算网络输出和真实数据时往往都是一一对应的标签并且直接计算两者的L1或L2距离即可方便判断两个的差距,而在GAN中生成数据和真实数据往往不是一一对应,这就是JS divergence的巧妙之处,不需要知道生成数据和真实数据的具体形式,只需要通过鉴别器输出值和JS即可,当然不仅仅只有JS函数可以用还可以用其他很多的函数:


3、使用JS作为距离的缺点

    使用JS divergence的很大缺点就是:如果生成数据和真实数据采样不够多,两者之间没有任何重叠部分没有交集,那么JS计算出来的距离将恒等于log2,这将会直接导致generator无法提高 ,两者如果没有重叠即假设让divergence处于最大时即判别器最理想的时候,那么这时候计算出来的就是log2

4、WGAN和推土机距离

    推土机距离也称作Wasserstein distance,它最直观的好处就是当生成数据和真实数据无任何交集的时候它不会像JS一样处于恒等值的情况,如图所示,这就使得generator可以一直往好的方向去发展而不是直接停止

 WGAN中使用的就是推土机距离代替了JS距离,如图所示即为WGAN中新的距离公式:

 其中对于判别器,WGAN作出了限制即必须满足1-lipschitz的条件,该条件的目的是为了让生成数据和真实数据之间不会相差太大使得推算出来的推土机距离不会过大否则无任何意义,而WGAN中让判别器满足1-lipschitz的条件的方法其实相对较为简单如下图所示:

 

 当然现在也有很多其他1-lipschitz的方法比如谱归一化Spectral Normalization就是很好的例子,其有效的让梯度在各个地方都小于1防止梯度消失。

5、条件GAN

 条件GAN简单来说就是额外输入一段向量规定生成的图像需要包含什么特征,这就是条件GAN,其中额外输入的向量就是一段文字即将一段文字转换成vector输入generator和discriminator中 。

 除此之外,还有输入影像生成影像,条件GAN还可以应用到语音中,即输入是一段语音让GAN根据语音生成想象到的画面图像 

五、CycleGAN

 CycleGAN是典型风格转化生成的GAN

其主题思想是:训练四个网络并形成一个Cycle输入一幅图像生成另一个风格图像再让生成图像生成回原来的图像风格,这样的一个形式就是CycleGAN的主要思想,事实上它在训练四个网络包括两个生成器和两个判别器

六、GAN的评价方法

GAN生成的图像如何进行评价,这里使用到让其他网络来识别生成图像来得到正确分类的分布这样的一个间接判别方法,典型的方法就是Inception Score (IS),通过判断分类的正确性来评价

 

 IS方法有很大的问题就是,它可以判断生成图像的正确类型但无法保证生成图像的多样性或者质量,比如生成图像如果都是同一个人的图像这样的正确性自然高,或者虽然多样性有但是在生成图像细节上没有得到保证,因此这都是潜在的问题,这就有了(FID)Fréchet Inception Distance,其主要的思想是通过最后输出分类的倒二层的特征来进行判别

 

您可能感兴趣的与本文相关的镜像

Swift-All

Swift-All

PyTorch
文本生成
Qwen
Qwen3
Qwen3-VL
图文对话

一个脚本,支持600+大模型与300+多模态大模型的权重下载,训练(预训练、微调、人类对齐)、推理、评测、量化与部署。

### 李宏毅机器学习笔记中的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 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值