❶ PyTorch 学习笔记(十):初识生成对抗网络(GANs)
生成对抗网络(GANs)由Ian Goodfellow于2014年提出,直到2016年,其引起了学界和业界的广泛关注,成为研究的热点。GANs的核心创新在于对抗机制,其由生成模型和对抗模型两部分组成,通过生成网络生成假数据,对抗网络通过判别器判断真假,最终目标是使生成的数据以假乱真。
生成模型部分,利用正态分布随机初始化隐含向量,通过类似解码的过程映射到高维空间,生成与输入数据相似的假数据。与自动编码器不同的是,自动编码器通过像素点差异计算损失,而GANs通过对抗过程计算损失。
对抗模型部分是一个判断真假的判别器,输入真实和假数据,优化判别器使其准确判断真伪。接着训练生成器,调整参数,使生成数据尽可能接近真实数据,以通过判别器的测试。
数学原理上,利用KL散度衡量两种分布的概率相似程度,通过生成网络使假数据分布接近真实数据分布。优化目标是最大化似然函数,即最小化KL散度。在训练过程中,循环更新判别器和生成器,通过V(G,D)函数的极值求解,实现生成器和判别器的协同优化。
然而,GANs存在局限性。当真实分布与生成分布无交集时,JS散度无法提供有效的梯度信息,导致训练困难。此外,GANs容易出现模型坍塌现象,即生成器仅生成有限的样本类型,缺乏多样性。
在实际应用中,BN层与ReLU的顺序影响生成器性能,优化策略对训练结果至关重要。尽管GANs面临挑战,但其在图像生成、风格迁移等领域的应用展现出巨大潜力。