1시간만에 GAN(Generative Adversarial Network) 완전 정복하기 - 최윤제 을 정리한 것입니다.
https://www.youtube.com/watch?v=odpjk7_tGY0&list=LL&index=1
GAN의 목표와 기본구조
GAN의 목표는 실제 데이터와 구별할 수 없을 정도로 비슷한 데이터를 생성해내는 generative model을 찾는 것이다. 따라서 우리의 Training Data의 분포를 학습하는 Generative model을 만드는 것이다.
GAN은 기본적을 Generator와 Discriminator라는 2가지 AI model로 이루어져 있다.
Generator의 역할을 최종적으로 우리가 이용할 model이면서 새로운 데이터를 만들어내는 역할을 한다.
Discriminaor는 Generator가 생성해낸 모델이 Real인지 Fake인지 판별하는 역할을 한다.
따라서 Discriminator의 판별 결과는 이진 분류로 Loss Function을 정의할 수 있다.
우리는 Generator가 생성한 Data가 Discriminator의 판독이 Real(1)이 나올 때까지 학습을 진행하는 것이다.
GAN의 Objective Function
Discriminator 관점
GAN에서의 Discriminator 관점에서 볼 때 최대화하는 것이 목표이다. Objective Function에서 첫 번째 항을 보면 D(x)가 1일 때 logD(x)가 0으로 최대가 되고, D(x)가 0일 때 - 무한대로 최소가 될 것이다. 두번째 항은 D(G(z))가 0일때 최대가 되는 것을 볼 수 있다(log 1로 최대가 된다). 즉, 위의 수식이 Discriminator 관점으로 보면 진짜 Data를 입력받았을 때는 1을 출력하여 식의 값을 최대화하고, 가짜 Data를 입력받았으면 0을 출력하여 식의 값을 최대화하도록 학습을 한다는 것이다.
Generative 관점
Generative 관점에서 GAN의 objective Function의 두 번째 항에서만 Generative 값이 존재한다. Generative 입장에서는 Discriminator가 최소가 되도록 학습을 시켜야 하기 때문에 D(G(z))가 1이 되도록 학습을 시킨다.
우리가 경사 하강법으로 학습을 진행할 것인데, Generative가 처음에 생성하는 Data는 형편없기 때문에 Discriminator가 거의 0으로 판독한다. 따라서 Gradient가 비교적 작아서 학습이 잘 안 되는 경우가 발생한다.
그렇기 때문에 우리는 생각을 바꿔서 Log(1-x)를 최소화하는 것이 아니라 Log(x)를 최대화하는 방향으로 바꾼다.
그러면 Gradient가 너무 작지 않아 잘 학습이 진행될 수 있다.
GAN의 Loss Function
Discrimiator의 판독 결과는 보통 True 혹은 False이기 때문에 Binary Cross Entropy 함수를 쓴다.
'DL Study' 카테고리의 다른 글
#4 Autoencoder의 모든 것 - Variational Autoencoder (2) | 2022.09.20 |
---|---|
#3 Autoencoder의 모든 것 - AutoEncoder (0) | 2022.09.16 |
#2 Autoencoder의 모든 것 - Manifold Learning (2) | 2022.09.15 |
#1 Autoencoder의 모든 것 - 2가지 관점으로 DNN Loss 함수 이해하기 (0) | 2022.09.14 |
LSTM(Long Short-Term Memory) (0) | 2022.09.13 |