GAN은 generative adversial network의 줄임말로, generative model의 한 종류입니다.
generator와 데이터를 구별하는 discriminator가 경쟁하는 과정을 통해서 데이터를 학습합니다. generator는 점점 더 실제와 같은 데이터를 생성하게 되고, discriminator는 점점 더 실제와 가짜 데이터를 잘 구별할 수 있게 됩니다. 결론적으로 generator가 실제 데이터와 매우 유사한 데이터를 생성할 수 있게 됩니다.
generator를 G, generator의 parameter를 , discriminator를 D, discriminator의 parameter를 라고 정의하자. 또한 1을 실제 데이터, 0을 가짜 데이터를 나타내는 label이라고 정의하자. 그렇다면 GAN의 목적함수는 아래와 같이 표현할 수 있습니다.

Discriminator는 위 식에서 를 최대한 1에 가깝게 만들고, 를 최대한 0에 가깝게 만듦으로써 목적함수를 최대화하는 것을 목적으로 합니다. 여기서 x는 실제 데이터를 의미하고 z는 가짜 데이터를 생성하는 분포를 의미합니다. 그러므로 를 최대한 1에 가깝게 만듦으로써 실제 데이터를 1로 분류하고, 를 최대한 0에 가깝게 만듦으로써 가짜 데이터를 0으로 분류하도록 discriminator를 학습합니다.