A generative adversarial network (GAN) is a class of generative model in machine learning composed of two neural networks trained simultaneously within a minimax two-player game framework [1]. The two networks are a generator, which maps samples drawn from a latent prior distribution to synthetic data samples, and a discriminator, which distinguishes between real samples drawn from the training distribution and fake samples produced by the generator [1]. During training, the generator minimizes a value function by producing samples that the discriminator classifies as real, while the discriminator maximizes the same function by correctly classifying real and fake samples; the equilibrium occurs when the generator’s distribution matches the data distribution and the discriminator’s output is one-half everywhere [1]. Under an appropriate choice of divergence, the training objective corresponds to minimization of the Jensen–Shannon divergence between the empirical data distribution and the learned model distribution [2]. GANs differ from other generative models—such as variational autoencoders and autoregressive models—in that they do not explicitly model the data density, instead learning an implicit distribution through adversarial training, and they are characterized by the joint optimization of two parametric networks without an explicit likelihood [3].