This document discusses generative adversarial networks (GANs) and their applications to image processing. It begins with an overview of machine learning techniques including supervised learning, unsupervised learning, and reinforcement learning. It then describes how GANs work using two competing neural networks - a generator that produces synthetic images and a discriminator that evaluates them as real or fake. The goal of the GAN training process is for the generator to improve so its samples cannot be distinguished from real data. In the end, GANs can be used for tasks like random image generation and image-to-image translation.