GAN全称是Generative Adversarial Nets,中文叫做“生成对抗网络”。在GAN中有2个网络,一个网络用于生成数据,叫做“生成器”。另一个网络用于判别生成数据是否接近于真实,叫做“判别器”
WGAN的优点
- 进一步提升了训练的稳定性。不需要精心设置G和D一轮一轮的更新。不需要精心设置复杂的网络结构。(原始GAN的价值函数的梯度很可能是0,就没法得到更新。WGAN提出了新的价值函数解决这个问题。)
- 几乎解决了mode collapse问题。mode collapse是说生成器生成的内容过于雷同,缺少变化。
- 提供了具有意义的价值函数,可以判断判别器和生成器是否已经收敛。(原始GAN中如果D的效果不好,我们不知道是G生成的好,还是D判别的不好)
- 提供了理论公式(不过很难理解)。
- 在判别器输入中加入噪声,使优化分布成为可能。
- 随着真实分布和生成分布的距离越来越小,对噪声进行退火,使噪声越来越小直至消除噪声
- 当移除BN后DCGAN无法正常工作,而WGAN仍然可以生成很好的图片。所以WGAN可以使用更简单的网络结构。
不要用基于动量的优化算法(包括momentum和Adam),推荐RMSProp,SGD也行
四、训练
在训练的过程中固定一方,更新另一方的网络权重,交替迭代(网络中先训练 D 一次,再训练 G 两次),在这个过程中,双方都极力优化自己的网络,从而形成竞争对抗,直到双方达到一个动态的平衡(纳什均衡),此时生成模型 G 恢复了训练数据的分布(造出了和真实数据一模一样的样本),判别模型再也判别不出来结果,准确率为 50%,约等于乱猜。上述过程可以表述为如下公式:
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:对抗网络Gan简介 - Python技术站