常用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年。