[딥러닝]/[GAN]

[GAN] 1 - GAN 기본 개념

딥러닝 도전기 2021. 9. 14. 21:58

[GAN] 1 - GAN 기본 개념

 

GAN(Generative Adversarial Network, 생성적 적대 신경망)은 2014년에 이언 굿펠로가 고안한 생성 모델입니다. 2014년 GAN이 발표된 이후로 엄청난 인기를 끌었고 지금까지 계속해서 GAN관련 기술, 논문이 나오고 있습니다.


  • GAN 이란?

GAN에는 판별자(Discriminator)와 생성자(Generator)가 있습니다. 판별자는 진짜 데이터와 생성자가 만드는 가짜 데이터를 진짜인지 가짜인지 판별하는 것을 목표로 합니다. 생성자는 판별자가 구분하지 못하는 데이터를 생성하는 것을 목표로 합니다.

 

GAN의 창시자 이언 굿펠로는 판별자를 경찰, 생성자를 지폐 위조범에 비유합니다.

경찰은 진짜 지폐와 지폐 위조범이 만들어내는 가짜 지폐를 구별해내야하고 지폐 위조범은 경찰이 구별하지 못하도록 위조지폐를 만들어야 합니다.

경찰의 위조지폐를 구별하는 능력이 향상된다면 경찰을 속여야하는 지폐 위조범의 지폐 위조 기술또한 당연하게 향상되어야 합니다. 또 반대로 지폐 위조범의 지폐 위조 기술이 향상된다면 경찰은 위조 지폐를 구별하는 능력이 향상되어야 합니다.

 

이렇게 경찰과 지폐 위조범은 적대적 관계에서 서로 발전합니다. 마찬가지로 판별자와 생성자도 서로를 이기려는 경쟁을 지속하며 적대적으로 서로의 능력을 향상합니다. 이러한 판별자와 생성자 사이의 게임 같은 경쟁 구도에 의해 "적대적(Adversarial)"이라는 용어가 GAN에 붙게 됩니다.

 

GAN 기본 - 판별자와 생성자

 

위의 그림에서 Discriminator는 판별자, Generator는 생성자를 의미합니다. 이때 Discriminator에 진짜 이미지가 들어오면 $D(x)$값은 1에 가까워지고 가짜 이미지가 들어오면 0에 가까워집니다. $D(x)$는 "진짜 이미지일 확률"을 의미합니다.

$$D(x)\in[0,1]$$

Generator는 랜덤 노이즈 벡터 $z$를 입력받습니다. Generator를 통과한 $z$는 가짜 이미지를 생성합니다. 이 생성한 가짜 이미지를 $G(z)$라고 하고 가짜 이미지를 Discriminator에 넣으면 $D(G(z))$가 출력됩니다. 

가짜 이미지 $G(z)$가 Discriminator에 입력된 상황이므로 Discriminator는 0을 출력하도록 노력을 해야 하고, Generator는 Discriminator를 속이기 위해 노력을 해야 합니다. 이 상황이 위에서 경찰과 위조지폐범에 딱 들어맞습니다.

 

정리
Discriminator : 진짜 데이터와 생성자가 만드는 가짜 데이터를 구별하는 것이 목표
Generator : 진짜 데이터와 구별이 안 되는 가짜 데이터를 생성해 Discriminator가 구별하지 못하게 하는 것이 목표

 

  • GAN 훈련 알고리즘 - 1. 판별자 훈련

판별자 훈련 알고리즘

1) 훈련 데이터셋에서 랜덤 하게 진짜 샘플 $x$를 선택한다.

2) 랜덤 잡음 벡터 $z$를 얻어서 생성자를 통해 가짜 샘플 $x^*$을 만든다.

3) 판별자를 이용하여 $x$와 $x^*$를 분류한다.

4) 분류 오차를 계산하고 최소화한다.

 

  • GAN 훈련 알고리즘 - 2. 생성자 훈련

1) 랜덤 잡음 벡터 $z$를 얻어서 생성자를 통해 가짜 샘플 $x^∗$을 만든다.

2) 판별자를 통해 $x^∗$을 분류한다.

3) 분류 오차를 계산하고 판별자의 오차를 최대화한다.

 

GAN의 훈련은 이 두 과정(판별자 훈련, 생성자 훈련)을 번갈아가며 진행함으로 학습이 이루어집니다.보통 한 개의 미니 배치당 한 번씩 학습합니다.

 

 

반응형