【学习笔记】GAN--李宏毅(上)

GAN是一种深度学习框架,通过Generator和Discriminator的博弈来实现数据的无条件生成。Generator尝试从低维向量生成逼真的高维图像,而Discriminator负责区分真实与生成的图像。训练过程中,Generator力求欺骗Discriminator,使其难以区分真假。Wasserstein距离在WGAN中引入以稳定训练过程,防止梯度爆炸或消失,GradientPenalty和SpectralNormalization等技术进一步优化了训练的稳定性和生成效果。

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

Network as Generator

请添加图片描述

why distribution

当同样的输入有多种可能不同的输出,并且这些输出都是对的。“让机器具有创造能力”

GAN

unconditional generation

请添加图片描述

低维度向量输入–>Generation–>对应的输出(高维度)。

Discriminator(鉴别器)

请添加图片描述
输入一个图像,输出一个scalar(标量),scalar越大说明输入的图像越真实。架构可以自己设计,如CNN、transformer

Basic idea of GAN

类似生物的进化,适者生存。
Generator:生成 Discriminator:鉴别生成的与真实的之间的差异
请添加图片描述

算法

  • 初始化generator(G)和discriminator(D)
  • 在每次训练迭代中:
  1. step1:固定G,update D.找出与真实之间的差异(学会分辨)。
    请添加图片描述

  2. step2:固定D,update G。“想办法骗过D”。D打分,让输出的分数越大越好。
    请添加图片描述

  3. 反复训练
    请添加图片描述

GAN理论

  • 目标
    一个一般的分布经过G,得到分布 P g P_g Pg,真正的data也形成了一个 P d a t a P_{data} Pdata,要让Pg接近Pdata。
    请添加图片描述 G ∗ = arg ⁡ min ⁡ G D i v ( P g , P d a t a ) G^* = \arg\min_{G}Div(P_g,P_{data}) G=argGminDiv(Pg,Pdata)
  • divergence计算
    P g P_g Pg P d a t a P_{data} Pdata采样出来,打分,训练Discriminator。请添加图片描述
    Training: D ∗ = arg ⁡ max ⁡ D V ( D , G ) D^* = \arg\max_{D}V(D,G) D=argDmaxV(D,G)
    Objetive Function (for D): V ( G , D ) = E y   P d a t a [ l o g D ( y ) ] + E y   P G [ l o g ( 1 − D ( y ) ) ] V(G,D) = E_{y~P_{data}}[logD(y)]+E_{y~P_{G}}[log(1-D(y))] V(G,D)=Ey Pdata[logD(y)]+Ey PG[log(1D(y))]
    期望 P g P_g Pg的D(y)大, P d a t a P_{data} Pdata的D(y)小。其最大值与divergence有关,则可将 max ⁡ D V ( G , D ) \max_{D}V(G,D) maxDV(G,D)替代 D i v ( P g , P d a t a ) Div(P_g,P_{data}) Div(Pg,Pdata)如下。不同的Objetive Function 有不同的divergence。
    G ∗ = arg ⁡ min ⁡ G max ⁡ D V ( G , D ) G^* = \arg\min_{G}\max_{D}V(G,D) G=argGminDmaxV(G,D)

Tips for GAN

JS divergence的缺点: P g P_g Pg P d a t a P_{data} Pdata通常重合部分很少,如果没有重叠,不管相差多少,计算结果永远为log2。

  • Wasserstein distance
    Wasserstein距离(也称为Earth Mover’s Distance或EMD)是一种测量两个概率分布之间距离的方法。Wasserstein距离是基于将一个概率分布转换为另一个概率分布所需的最小代价来定义的(穷举全部方法来找最小)。请添加图片描述
  • WGAN
    WGAN(Wasserstein GAN)是一种基于Wasserstein距离的生成对抗网络(GAN)的改进版本。Wasserstein距离可以更好地表示生成器和判别器之间的距离,并且有助于稳定训练过程。Wasserstein distance的计算公式:
    请添加图片描述
    D必须是一个足够平滑的function。可以保证D的平稳,使训练收敛。
    限制方法:
  1. Weight
    在C和-C使用weight参数,当参数更新后if w>c ,w=c;if w<-c ,w=-c。
  2. Gradient Penalty
    Gradient Penalty旨在约束判别器的梯度,使其保持平滑,从而提高WGAN的生成效果和训练稳定性。其主要思想是在WGAN的损失函数中添加一个约束项,该项用于惩罚判别器的梯度。具体而言,该约束项是判别器输出对输入样本的梯度的范数与1之差的平方
    请添加图片描述
  3. Spectral Normalization (SNGAN)–>Keep gradient norm
    "Keep gradient norm"是一种在训练神经网络时控制梯度爆炸梯度消失的技术。在深度神经网络中,梯度爆炸和梯度消失是常见的问题,这会导致训练变得不稳定、梯度更新过大或过小,从而影响模型的性能。
    "Keep gradient norm"技术的核心思想是在反向传播过程中控制梯度的大小,使其保持在一个合理的范围内。具体而言,这可以通过计算梯度的范数(即梯度的长度)来实现。如果梯度的范数超过了一个预先设定的阈值,那么就将梯度缩放到阈值范围内,以避免梯度爆炸。如果梯度的范数小于阈值,那么就不需要进行缩放,以避免梯度消失。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值