Deep Learning study

Generative Adversarial Networks(GAN) 본문

AI/papers

Generative Adversarial Networks(GAN)

HwaniL.choi 2018. 4. 26. 20:40
반응형

저번에 흥미를 가져 읽어보았던 Generative Adversarial Nets에 대해 정리를 해봐야겠다.


수식은 최대한 생략하고.. 바탕이되는 내용과 이해중심으로? 


이 논문을 찾아보게된 이유는 공부를하다 문득 Colorization이라는것을 보게되었는데 너무 재미있어보여서 찾다 찾다보니 여기까지 오게된것같다. 


먼저 논문을 보면서 GAN에 딸린 Adversarial 이란 것에 의문을 많이 가졌었는데, GAN을 구조를 모르기때문에 '상반된' 이라는 것이 무엇을 의미하는지 감이오지 않았기 때문에 그랬던것 같다.


Adversarial이라고 쓰는 이유를 살펴보자면 GAN에서는 Generator(G) 와 Discriminator(D) 라는 상반된? 대립적인? 모델을 사용하기 때문이다.

말 그대로 Generator는 생성자이고 Discriminator는 분류기인데 이것이 서로 대립되는 작업을 하며 개선해 나가게 된다.


좀 더 쉽게 이해하기 위해서 예시를 보자.


이 논문에서는 위조지폐를 만드는 사람(G)와 위조지폐인지 아닌지를 구별해내기위한 경찰(D)를 예시로 들었다.

위조지폐를 만드는 사람들(G)은 위조지폐를 만들고 검열을 피해 그것을 사용하려 시도하고, 경찰(D)은 위조지폐를 판별하기 위해 노력한다는 것이다. 이런한 구조는 위조지폐범(G)들이 위조지폐를 더 잘 만들도록(즉, 경찰(D)를 속일 수 있도록)하고 , 그에반해서 경찰들은 더 잘 판별하도록(즉, 위조지폐인지 진짜 지폐인지)한다.


위조지폐범은 경찰을 속여야하기 때문에 위조지폐를 만드는 능력이 점점 향상 될 것이고, 경찰들은 위조지폐를 판별해내야하기 때문에 판별능력이 점점 향상될 것이다. 

그러면 경찰이 판별능력이 향상됨에따라 위조지폐범도 그에따라 다시 더 진짜처럼 만들기위해 개선해 나갈 것이고, 경찰은 또 그 개선된 위조지폐를 판별해내기위해 더 좋은 판별기를 만들어 낼 것이다...


이러한 상반된 모델을 동시에 학습시키면, 예시처럼 상호작용을 통해서 둘다 성능이 좋아질 수 밖에 없는것을 이용한 것이다.


그 과정을 수식으로 표현하게 되면 아래처럼 표현이 된다.


G(generator)는 noise variable인 z 가 input으로 들어갔을때의 data space로 mapping하는 함수이다.

D(discriminator)는 쉽게말해서 real data인지 G에의해서 만들어진 fake data 인지를 [0,1] 값으로 뱉어주는 함수 이다. real이라면 1에 가깝게, 반대로 fake라면 0에 가깝게 나오도록.


결론적으로 이것은 위의 수식을 보듯이 minimax problem이 되는데,

먼저 D가 maximize하는 쪽에서 보자면, E[logD(x)]에서는 실제 데이터 x 에대해서 D(x)가 최대가 되도록 해야된다. 즉 1 에 가깝게 나오도록 학습을 한다.  E[log(1-D(G(z)))]에서는 생성된 데이터 G(z)에 대해서 (1-D(G(z))) 가 최대가 되도록 해야된다. 즉, 다시말해서 생성된 데이터 (fake data G(z))에 대해서는 D 가 최소가 되도록 학습을 해야 된다는 것이 된다.


G가 minimize하는 쪽에서 보면, G는 E[log(1-D(G(z)))] 에만 속해있기 때문에 이것을 최소화 하는것이 목적이다. 

따라서 그 말은 (1-D(G(z)))를 최소화 하는 것 이고 , 다시말해서 D(G(z)) 가 최대가 되게 만들어야 한다는 것이다. 즉, 결국 G(z)가 real data인것처럼 D를 속일 수 있도록 학습해야 된다는 것을 말한다.



위의 수식을 논문에서 그림으로 설명을 해 놓은 것인데, 검은색 점선은 data generating distribution이고, 초록색 실선은 generative distribution, 파란 점선은 discriminative distribution이다.

(a) D가 부분적으로만 구분가능한 D의 상태와 datagenerating distribution과 generative distribution이 서로 닮아있는 상태이다.

(b) D의 학습으로 두 distribution을 구분할 수 있는 상태가 되었다.

(c) 이후 G가 업데이트 된 후에, G(z)가 조금 더 data generating distribution 에 가까워지게 되었다. 즉 real data처럼 판별되도록distribution 이 닮아가고 있다.

(d) 이과정이 반복되다보면 두 distribution이 같아지게 되고, 결국 D는 두가지의 distribution을 구분할 수 없게 되는 상태가 된다. 즉 D(x) = 0.5인 상태가 된다.


뭐 결국 위에서 말한 위조지폐범과 경찰의 이야기와 같은 맥락인것 같다.


설명은 여기까지고 뒤에내용을 보면 수식에대한증명과, 실험결과, GAN의 장단점 등이 나오는데 이런것들은 생략한다.



GAN을 공부하면서 느낀거지만 이런 아이디어를 생각해낸게 놀라울따름이고 , 또 이게 학습이 잘 된다니 그것도 신기할 따름이다. 


 

 


Reference

[1] http://jaejunyoo.blogspot.com/2017/01/generative-adversarial-nets-1.html

[2] Generative Adversarial Networks paper

[3] https://www.youtube.com/watch?v=odpjk7_tGY0



공부후에 만들어낸 소소한 결과물(Colorization)은 github에 .. 잘 되는것 같기도. .. 아닌것같기도.. 개선 해야할 점이 많다..



반응형
Comments