GAN生成式对抗网络2--李宏毅机器学习笔记

个人学习笔记,如有错误欢迎指正,也欢迎交流,其他笔记见个人空间 

GAN 的训练难点

  • 训练不稳定:Discriminator和Generator需要“棋逢对手” ,否则可能无法获取有用的梯度;

  • 超参数敏感:训练非常依赖学习率、batch size、初始化等;

  • 模式坍塌(Mode Collapse):Generator 只生成一种样式的图像,缺乏多样性;

  • 特别难训练文本生成:梯度无法直接传导至离散输出(token),常需强化学习(如SeqGAN)配合。

典型 GAN 架构和改进版本

1. DCGAN(Deep Convolutional GAN)

  • 使用卷积结构替代全连接层;

  • 对图像生成效果显著提升。

2. WGAN(Wasserstein GAN)

  • 使用 Wasserstein 距离代替 JS 散度;

  • 优化过程更稳定,避免梯度消失。

3. Conditional GAN(cGAN)

  • 允许给定条件(如类别标签、文字说明)生成特定样式图像;

  • 应用于文本生成图像(Text-to-Image)、图像风格转换等。

4. Sequence GAN、ScratchGAN

  • 解决离散序列(如文本)生成的难题;

  • 使用强化学习+GAN,从头训练文字生成网络。

多样性问题与风险

1. Mode Collapse(模式坍塌)

  • Generator 总是生成几乎相同的图像;

  • 容易“骗过”分类器,但不具备多样性;

2.Mode Dropping(模式遗漏)

  • Generator 忽略某些真实分布中的子类别(如图中右边的星星);

  • 多样性看似正常,但实际“偏科”严重(如肤色单一);

  • 更难检测,常常漏掉数据的“长尾”。

GAN的生成效果评估

一、评估生成器好坏的难点

GAN 的 Generator 训练完成后,我们需要判断它生成的图像到底“好不好”。但这不是一件简单的事,原因包括:

  1. 人眼判断不客观:早期的 GAN 论文几乎都是靠“放几张图让人看”,没有量化指标;

  2. 缺乏统一标准:不同任务、不同应用场景对“好”的定义也不同;

  3. 可能只是“背”住了训练数据(记忆式生成,Memory GAN),而非创造新样本。

二、几种常见评估方法

1. 视觉分类器分布评估法(直觉质量评估)

  • 使用预训练好的 图像分类器(如 InceptionNet) 来判断生成图像的“可识别度”。

  • 给一张生成图 y,分类器输出概率分布 P(c|y)

  • 越集中的分布表示分类器越“有信心”,图像更清晰,质量可能越高;

  • 若分布很均匀(混乱),说明图像可能是“四不像”。

 2. 代表图像质量的指标:Inception Score (IS)

       平均完 后的结果如果是 非常平坦 的, 代表说 也许 多样性 是足够的
  • 同时衡量了“图像清晰度”与“类别多样性”。注意它和分类器评估方法并不冲突,视觉分类器的评估方法看的是单张图片丢进分类器后的输出分布是否集中。IS看的是所有生成图像整体的分类分布是否均匀。两者评估的范围不同,不能混为一谈

3.Fréchet Inception Distance(FID):

  • 使用 Inception 的特征向量(非最终分类,进入 Softmax 之前的 Hidden Layer 的输出),视为高维高斯分布;

  • 比较真实图像与生成图像特征分布的差异;

  • FID越小越好

  • 更稳定,也考虑多样性;

  • 缺点:高斯假设、计算量大。

Conditional GAN 的应用与训练

1. 文本到图像(文生图)

  • 文字描述作为 Condition 输入;

  • 需标签配对数据(如“红头发+绿眼睛”);

  • 训练 Discriminator 判断图片与文字是否匹配(注意需要成对的资料)。至于不成对的资料的机器学习,比如转换文件格式、转换文字语气等可以使用Cycle GAN,这里就不多写了感觉对我这个方向没啥用

2. 图像到图像(图生图)

  • 如黑白图上色、素描转实景、白天变夜晚等;

  • 可结合 Supervised Loss + GAN Loss;

3. 声音到图像(Sound-to-Image)

  • 输入狗叫声 => 生成狗图;

  • 利用视频数据对齐声音与图像,训练 cGAN;

  • 示例:溪水声变成瀑布,快艇声带动水花强度变化。

### 李宏毅机器学习笔记中的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、付费专栏及课程。

余额充值