机器学习2021-GAN
Generative Model
1.Generative模型介绍
- 引入:将network当作一个生成器
- 输入是简单的distribution,经过network,输出复杂的distribution
- 输入可以是一个已知的formulation,然后sample from it
- 为什么使用distribution?是为了输出的创造性,即当有相同的输入时可以有不同的输出
2.GAN(生成式对抗模型)
- 应用举例:动画人脸生成,先考虑unconditional gerneration
- 低维的输入通过Generator输出高维的向量,然后将输出交给另一个network(即Discriminator),输出一个scalar,数值越大表示输出越真
- GAN的基本概念:
- 生成器和判别器的对抗,二者不断进步
- 算法:
- 先初始化生成器和判别器
- In each training iteration:
- step1:固定生成器,更新判别器(区分真实的和生成的)
- step2:固定判别器,更新生成器(尝试骗过判别器)
3.GAN的原理
训练目标是什么:
- 对于生成器,是找network里的一组参数,使得生成的数据和真实数据越相近越好
- 对于判别器,是找network里的一组参数,使得能够准确区分真实数据和生成的数据
- 数学表达:
- V(D,G) = E[log D(x)] + E[log(1-D(G(z)))]
- 其中D是判别器,G是生成器,x是真实数据,z是随机噪声
- 判别器D的目标是最大化V(D,G),生成器G的目标是最小化V(D,G)
- V(D,G) 本质上是一个negtive的交叉熵,相当于训练一个分类器
GAN难以训练的问题:
- 大部分情况下真实数据和生成数据几乎是不重叠的,(判别器)分类器可以很轻松的将其分开,此时,准确率或者说损失在GAN训练时是没有意义的。训练起来就很困难,需要在中途多次输出图片来查看效果
解决:
换一个衡量两个distribution的办法—WGAN:解决原始 GAN 训练不稳定和模式崩溃的问题
WGAN 使用 Wasserstein 距离来衡量真实数据分布和生成数据分布之间的差异,当真实数据和生成数据逐渐靠近时,Wasserstein距离也是逐渐变小的,便于训练
WGAN 如何解决 GAN 的问题:
- WGAN 的损失函数公式:
1
max(D属于1-lipschitz,足够平滑) = E[D(x)] - E[D(G(z))]
- 其中,D 是评论家(原判别器),G 是生成器,x 是真实数据样本,z 是随机噪声。WGAN 的目标是最小化这个 Wasserstein 距离。
- 提供了更稳定的梯度:Wasserstein 距离在整个样本空间中都是连续和可微的
- 减少模式崩溃:通过使用 Wasserstein 距离,WGAN 能够更好地捕捉整个数据分布,而不是只关注某些模式
WGAN 的主要改进:
- 将判别器替换为评论家(Critic),评论家不再输出概率,而是输出一个实数
- 使用 Wasserstein 距离作为损失函数
- 对评论家的权重进行裁剪,以满足 Lipschitz 连续性条件
4.Tips for GAN:
- GAN在文字生成任务中的挑战:
- 离散性:文本是离散的,而GAN通常用于生成连续数据(如图像)
- 梯度传播:由于文本的离散性,难以直接进行梯度反向传播
- 长期依赖:文本生成需要考虑长期依赖关系,而GAN通常擅长处理局部特征
- 结合强化学习(RL)的优势:
- 策略梯度:RL中的策略梯度方法可以处理离散输出
- 奖励机制:可以设计适合文本生成的奖励函数,如BLEU分数或语义相关性
- 序列决策:RL擅长处理序列决策问题,适合文本生成的特性
5.GAN的评价指标
- 看一张图:通过一个影像辨识系统(Classifier),如果输出的概率分布比较集中,说明生成质量比较好
- 问题1:Mode Collapse,多样性很差,生成的都是接近真实数据中少部分的数据
- 问题2:Mode Dropping,生成的数据都只是真实数据的一部分接近(比较难解决)
- 看一堆图片:通过影像辨识系统,如果分布越平坦,表示多样性越好
- 指标:
- Inception Score (IS):
- 衡量生成图像的质量和多样性
- 高IS表示生成的图像质量高且多样性好
- 缺点:不能很好地捕捉真实数据分布的特征,当都生成人脸,就难以判断多样性
- Fréchet Inception Distance (FID):
- 拿出最后一层隐藏层输出的向量,来计算真实图像和生成图像在特征空间中的距离,较低的FID表示生成的图像更接近真实分布
- 优点:能更好地反映生成图像的质量和多样性,比如人脸数量的检测
- Inception Score (IS):
6.Conditional GAN
- 增加生成器的输入,多一个x
- 应用举例:Text to image的监督学习,x就是文字
- 训练:
- 生成器:学习将输入的文本向量和随机噪声映射到图片空间
- 判别器:区分真实图像和生成图像,并判断图像是否符合输入的文本描述
- 损失函数:
- 对抗损失:生成器试图生成判别器认为真实的图像,而判别器则试图将生成器生成的图像标记为假的。
- 条件匹配损失:用于确保生成图像和文本描述相符。
7.Cycle GAN
- 无监督学习,没有匹配的数据
- 应用举例:图像风格迁移
- 核心思想:循环一致性(Cycle Consistency)。它使用了两个生成器和两个判别器来实现风格迁移,并保证转换前后的图像内容一致性。
生成器G和F
:CycleGAN包含两个生成器,分别用于实现不同风格的映射:
- 生成器 G:将图像从风格域X映射到风格域Y(例如,将普通照片转换为油画风格)。
- 生成器 F:将图像从风格域Y映射回风格域X(例如,将油画风格图像转换回普通照片风格)。
判别器DX和DY
:CycleGAN还包含两个判别器:
- 判别器 DX:用于判断图像是否属于风格域X(即区分普通照片和生成的照片)。
- 判别器 DY:用于判断图像是否属于风格域Y(即区分真实油画风格图像和生成的油画风格图像)。
- 其他应用:
- 文字风格转换,无监督的摘要,翻译,语音转文字
机器学习2021-GAN
http://example.com/2024/11/03/机器学习入门/机器学习2021-GAN/