常用GAN及其损失函数

生成对抗网络(GANs)自诞生以来已经发展出多种变体,以适应特定应用并提高性能。以下是截至2023年一些最常用的GAN变体及其各自的损失函数:


1. 原始GAN(Goodfellow等人,2014年)

描述: 基础GAN模型在最小最大游戏框架中引入了生成器和判别器。

损失函数:

  • 判别器损失: [ D = -{x p_{}} [D(x)] - _{z p_z} [(1 - D(G(z)))] ]
  • 生成器损失: [ G = -{z p_z} [D(G(z))] ]

其中:

  • ( G(z) ) 从噪声 ( z ) 生成假数据。
  • ( D(x) ) 输出 ( x ) 是真实数据的概率。

2. 深度卷积GAN(DCGAN)(Radford等人,2015年)

描述: DCGAN利用深度卷积和转置卷积层而不使用池化,使用批量归一化和ReLU激活函数来稳定训练。

损失函数:

  • 与原始GAN相同: [ D = -{x p_{}} [D(x)] - _{z p_z} [(1 - D(G(z)))] ] [ G = -{z p_z} [D(G(z))] ]

注意: 主要区别在于架构修改,而不是损失函数。


3. Wasserstein GAN(WGAN)(Arjovsky等人,2017年)

描述: WGAN引入Wasserstein-1距离(Earth-Mover距离)作为分布差异的度量,提高了训练稳定性并缓解了模式崩溃等问题。

损失函数:

  • 评论家(判别器)损失: [ D = {x p_{}} [D(x)] - _{z p_z} [D(G(z))] ]
  • 生成器损失: [ G = -{z p_z} [D(G(z))] ]

约束: 评论家的权重受到约束以强制执行Lipschitz连续性,通常通过权重剪裁。


4. 带梯度惩罚的Wasserstein GAN(WGAN-GP)(Gulrajani等人,2017年)

描述: 作为WGAN的改进,WGAN-GP使用梯度惩罚而不是权重剪裁来强制执行Lipschitz约束,从而获得更好的性能和训练稳定性。

损失函数:

  • 评论家损失: [ D = {x p_{}} [D(x)] - {z p_z} [D(G(z))] + { p_{}} ]
  • 生成器损失: [ G = -{z p_z} [D(G(z))] ]

其中:

  • ( ) 是真实数据和生成数据之间的插值样本。
  • ( ) 是梯度惩罚系数。

5. 最小二乘GAN(LSGAN)(Mao等人,2017年)

描述: LSGAN用最小二乘损失替换了二元交叉熵损失,可以产生更高质量的生成图像并更稳定地训练。

损失函数:

  • 判别器损失: [ D = {x p_{}} [(D(x) - 1)^2] + _{z p_z} [D(G(z))^2] ]
  • 生成器损失: [ G = {z p_z} [(D(G(z)) - 1)^2] ]

6. 条件GAN(cGAN)(Mirza & Osindero,2014年)

描述: cGAN在生成过程中加入辅助信息(如类别标签)作为条件,可以控制生成输出。

损失函数:

  • 判别器损失: [ D = -{x,y p_{}} [D(x | y)] - _{z p_z, y p(y)} [(1 - D(G(z | y) | y))] ]
  • 生成器损失: [ G = -{z p_z, y p(y)} [D(G(z | y) | y)] ]

其中:

  • ( y ) 表示条件信息(例如,类别标签)。

7. CycleGAN(Zhu等人,2017年)

描述: CycleGAN旨在无配对的图像到图像翻译,使用循环一致性确保从一域翻译到另一域再翻译回来得到原始图像。

损失函数:

  • 对抗性损失: [ {}(G, D_Y, X, Y) = {y p_{}(Y)} [D_Y(y)] + {x p{}(X)} [(1 - D_Y(G(x)))] ] [ {}(F, D_X, Y, X) = {x p_{}(X)} [D_X(x)] + {y p{}(Y)} [(1 - D_X(F(y)))] ]

  • 循环一致性损失: [ {}(G, F) = {x p_{}(X)} [|F(G(x)) - x|_1] + {y p{}(Y)} [|G(F(y)) - y|_1] ]

  • 总损失: [ {} = {}(G, D_Y, X, Y) + {}(F, D_X, Y, X) + {}(G, F) ]

其中:

  • ( G ) 和 ( F ) 是每个方向的生成器。
  • ( D_X ) 和 ( D_Y ) 是每个域的判别器。
  • ( ) 是循环一致性的权重因子。

8. StyleGAN(Karras等人,2019年及后续版本)

描述: StyleGAN引入了基于风格的生成器架构,允许对不同尺度的生成图像特征进行更好的控制,产生高度逼真的图像。

损失函数:

  • 对抗性损失: [ _{} = _D + _G ] 通常使用非饱和GAN损失或铰链损失。

  • StyleGAN特定损失:

    • 路径长度正则化: [ {} = {z, } ] 鼓励对潜在变量的风格进行平滑变化。

      • 其他正则化: 可能包括感知损失、特征匹配损失等。

      • 总损失: [ {} = {} + {} {} + ]

其中:

  • ( _{} ) 是路径长度正则化的权重因子。

注意: StyleGAN除了标准对抗性损失外,还结合了多个损失组件,以增强图像质量和可控性。


9. 自注意力GAN(SAGAN)(Zhang等人,2018年)

描述: SAGAN将自注意力机制集成到GAN架构中,使模型能够捕捉长距离依赖关系,生成更高质量的图像。

损失函数:

  • 与原始GAN或替代方案相同: 通常采用非饱和GAN损失或铰链损失。 [ D = -{x p_{}} [D(x)] - _{z p_z} [(1 - D(G(z)))] ] [ G = -{z p_z} [D(G(z))] ]

  • 自注意力机制: 虽然不是损失函数,自注意力层增强了模型对图像相关部分的关注能力,间接提高了对抗性损失的有效性。


10. BigGAN(Brock等人,2018年)

描述: BigGAN通过更大的模型和引入类条件归一化等技术扩展了GAN架构,达到了最先进的图像生成质量。

损失函数:

  • 对抗性损失: 通常使用铰链损失以获得更好的梯度属性。 [ D = {x p_{}} [(0, 1 - D(x))] + _{z p_z} [(0, 1 + D(G(z)))] ] [ G = -{z p_z} [D(G(z))] ]

  • 辅助损失: 如果使用类条件信息,可能包括分类损失。

其中:

  • 与标准GAN相比,( G ) 和 ( D ) 是更大的网络。

总结

每种GAN变体都引入了独特的架构或损失函数修改,以解决特定挑战,如训练不稳定、模式崩溃,或增强可控性和图像质量。选择合适的GAN取决于特定应用和期望在复杂性、训练稳定性和输出质量之间的平衡。


参考资料:

  • Goodfellow等人,《生成对抗网络》,2014年。
  • Radford、Metz和Chintala,《无监督表示学习与深度卷积生成对抗网络》,2015年。
  • Arjovsky、Chintala和Bottou,《Wasserstein GAN》,2017年。
  • Gulrajani等人,《改进的Wasserstein GAN训练》,2017年。
  • Mao等人,《最小二乘生成对抗网络》,2017年。
  • Mirza和Osindero,《条件生成对抗网络》,2014年。
  • Zhu等人,《无配对图像到图像翻译使用循环一致对抗网络》,2017年。
  • Karras等人,《基于风格的生成对抗网络生成器架构》,2019年。
  • Zhang等人,《自注意力生成对抗网络》,2018年。
  • Brock、Donahue和Simonyan,《大规模GAN训练用于高保真自然图像合成》,2018年。