条件生成对抗网络(CGAN):原理与实现
1. 动机
生成对抗网络(GAN)能够生成从简单手写数字到逼真人脸图像等各种示例。然而,尽管可以通过选择训练数据集来控制GAN学习模拟的示例范围,但无法指定GAN生成的数据样本的具体特征。
例如,之前实现的DCGAN可以合成逼真的手写数字,但无法控制在特定时刻生成的是数字7还是数字9。在像MNIST这样简单的数据集上,示例仅属于10个类别之一,这个问题可能看起来微不足道。但在更复杂的数据生成任务中,如生成人脸图像,可能的答案范围太大,暴力解决方案并不实际。我们无法控制生成的是男性还是女性的脸,更不用说年龄或面部表情等其他特征了。
能够决定生成何种数据为众多应用打开了大门。在医学研究中,可引导新药物化合物的创建;在电影制作和计算机生成图像(CGI)中,能以最少的人工动画师输入创建所需的确切场景。
条件生成对抗网络(CGAN)是最早使目标数据生成成为可能的GAN创新之一,并且可以说是最具影响力的一种。
2. 什么是条件生成对抗网络(CGAN)
CGAN由蒙特利尔大学博士生Mehdi Mirza和Flickr AI架构师Simon Osindero在2014年提出,是一种生成对抗网络,其生成器和判别器在训练过程中通过使用一些额外信息进行条件约束。理论上,这些辅助信息可以是任何内容,如类别标签、一组标签或书面描述。为了清晰和简单起见,在解释CGAN的工作原理时,我们将使用标签作为条件信息。
在CGAN训练过程中,生成器学习为训练数据集中的每个标签生成逼真的示例,判别器学习区分假示例 - 标签对和真实示例 - 标签对。与半监督GAN不同,半监督GAN的判别器学习为每