A generative adversarial network is a machine learning framework in which two neural networks are assigned to a calculation, each with opposing goals, in the form of a zero-sum game, where one agent's gain is another agent's loss. The two agents are essentially trying to figure out increasingly complex ways to deceive the other. GANs were initially intended to be used for unsupervised learning, but they've also proved to be useful for semi-supervised, supervised & reinforcement learning.
GANs are used to employ 'indirect' training, where one neural net acts as a discriminator, analyzing the realism of data input, which is being updated dynamically.
- Given a training set, GANs are able to generate data directly proportional to the training set's statistics.
- Imagine a CIA agent is assigned to investigate a counterfeiting scheme. The criminals' objective is to devise increasingly complex ways of counterfeiting money such that the CIA agent can't distinguish between the fake money and real money
- The CIA agent's objective is to effectively analyze money to distinguish between counterfeit money & real money. Overtime the CIA develops increasingly sophisticated technology to detect counterfeit cash, this is known as the Adversarial Process.
The Generator Network G(z) takes an input and attempts to generate data which is very similar to the dataset. The Discriminator Network D(x) takes the data generated by the generator & tries to discriminate between the generated data & the real data. It implements a binary classification & outputs the probability of the generated data being derived from the real data.