由于 GAN 包含两个单独训练的网络,因此其训练算法必须处理两个复杂功能:
- GAN 需要兼顾两种不同的训练(生成器和判别器)。
- GAN 收敛很难确定。
交替训练
生成器和判别器具有不同的训练过程。那么,我们如何整体训练 GAN?
GAN 训练交替进行:
- 判别器会训练一个或多个周期。
- 该生成器会针对一个或多个周期进行训练。
- 重复第 1 步和第 2 步,继续训练生成器和判别器网络。
在判别器训练阶段,我们会让生成器保持恒定。在判别器训练尝试找出真实数据与虚假数据之间的差异时,它必须学习如何识别生成器的缺陷。对于经过充分训练的生成器和生成随机输出的未经训练的生成器,这是一个不同的问题。
同样,在生成器训练阶段,判别器保持不变。否则,生成器会尝试匹配移动的目标,但可能永远不会收敛。
这种往返体验可让 GAN 解决其他难以解决的生成问题。我们先解决一个较为简单的分类问题,然后解决棘手的生成问题。相反,即使您无法训练分类器以区分真实数据和生成的数据,即使是初始随机生成器输出,也无法开始 GAN 训练。
会展
随着训练器不断改进,判别器性能开始变差,因为判别器无法轻松分辨真伪。如果生成器成功完成,则判别器的准确率为 50%。实际上,判别器会掷硬币来做出预测。
这一进展给整个 GAN 的收敛带来了问题:判别器反馈逐渐没有意义了。如果判别器提供完全随机的反馈时,GAN 继续进行训练,则生成器会开始对垃圾反馈进行训练,并且其质量可能会下降。
对于 GAN,收敛通常是短暂的,而不是稳定的状态。