人类的创作过程,可以在某种意义上理解为“从无到有”(Creating)的过程或者“举一反三”(Translation)的过程。那么对于机器而言,我们可不可以使用某种模型来模拟这种过程呢?答案是肯定的。生成式对抗网络(Generative Adversarial Networks)是近年来计算机科学当中比较有趣的想法之一,本文将以创作数字图像为应用场景来对该模型进行介绍。
在生成式对抗网络模型中,两个独立的神经网络模型会以一种对抗式的方式进行训练,它们通常分别称为生成器(Generator)和判别器(Discriminator)。以生成数字图像的应用场景为例,生成器学习如何创造栩栩如生的图片,它的工作类似于“艺术家”;同时,判别器学习鉴别图像的真伪,它的工作类似于“艺术评论家”。
在训练模型的过程中, 生成器能够创造越来越接近真实场景的图片;而在另一方面,判别器也越来越善于分辨图片的真伪。 当判别器无法分辨生成图像与真实图像的区别后,这个过程就达到了动态平衡,具体表现为两个网络的损失函数值从此增彼减到不再发生明显的变化。以下是一个在MNIST数据集当中,使用生成式对抗网络模型创作数字图像的代码示例。
# 引用相关的工具库
import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
import time
from tensorflow.keras import layers, losses
from tensorflow.keras.datasets import mnist
# 设置常量参数
BUFFER_SIZE = 60000
BATCH_SIZE = 256
EPOCHS