본문 바로가기
AI/AI Paper review

[NIPS-2014] Generative Adversarial Nets

by 노마드공학자 2024. 1. 25.

논문 전문 : https://papers.nips.cc/paper_files/paper/2014/hash/5ca3e9b122f61f8f06494c97b1afccf3-Abstract.html

[출처] https://doi.org/10.48550/arXiv.1406.2661

 

※ The picture and content of this article are from the original paper.

This article is more of an intuitive understanding than academic analysis.


 

[논문 요약]
Generative Adversarial Nets

 

 

Citation 68,000이 넘는 슈퍼 논문입니다.

저자들만봐도 모두 한명한명 현재 대가라고 불리는 사람들입니다. Ian GoodFellow가 술마시고 코드짜다가 만들어졌다는 비화가 있는 GAN으로, 제가 봐도 제정신으로 이걸 만들수있을까싶을정도로 불안정하면서도 신기하고 감동적인 논문입니다. 현재는 Diffusion Model쪽으로 생성AI쪽이 많이 굳어졌지만, 제가 학위받을때까지만해도 GAN만 제대로해도 먹고살수있다고 할정도로 인기가 폭발적이였습니다. 저도 GAN으로 논문을 몇편썼었는데 아키텍처 구조나 구현과정이 아주 Brilliant 그자체인 논문입니다.

 

Contents

 

GAN은 일단 수식적으로 접근하면 이해하기가 굉장히 어렵습니다.

Discriminator, Generator, KL-Divergence... 어떻게 동작하는건지 감이 안잡힐 가능성이 굉장히 높습니다.

그래서, Ian GoodFellow 본인도 경찰-도둑 예시를 들어 보통 설명을 하는데요, 가장 흔한 설명 방식이지만 굉장히 직관적이고 모델과 딱 맞아 떨어지는 예시입니다.

 

위 그림과 같이 위조 지폐범(이하 G)-검시관(이하 D)이 있다고 상상해보겠습니다.

- D와 G의 상반된 목표(Adversarial)

 

D의 목표는 확실합니다. 검시관도 속을 정도로 아주 정교한 위조 지폐를 만들어 세상에 뿌리는 것입니다.

G의 목표도 확실합니다. 이 세상에 위조지폐가 통용되지 않도록, 철저하게 검시해서 위조지폐를 발견해내는 것입니다.

 

GAN은 D와 G가 경쟁적으로 학습함으로써 완성됩니다.

D가 위조 지폐를 끊임없이 만들어내면 G는 이걸 매번 검사를 수행하고 위조지폐를 감별해냅니다.

그런데 이 과정이 수만번 반복되다보면, 가끔씩 G가 해깔릴 만큼 잘만든 위조지폐를 D가 만들어 내기도하다가,

수십만 수백만번 이 과정을 반복하면 검시관이 분간을 못할정도로 아주 정교한 위조지폐를 D가 만들어 낼 수도 있다는 것입니다.

 

 

그 과정이 바로 위 그림(논문 Figure.1) 입니다.

학습 초기(a)에 D와 G는 각각의 분포(위조 지폐에 대한 각자의 관점)를 가지고 있습니다. (b)~(d)로 갈수록 D와 G의 분포가 흡사해지는것을 보실 수 있습니다.

여기서 유의하실부분은, G는 변하지 않고 D만 변동하며 G에 가까워 진다는 점입니다. 이것을 위조지폐범-감시관으로 보면 딱 맞습니다. 실제 지폐는 절대 바뀌지 않습니다. GAN의 학습과정에서 바뀌는것은 오로지 D의 위조지폐이며 "이것이 얼마나 실제 지폐와 똑같아 지는가"가 핵심입니다.

 

이것이 GAN의 학습 컨셉입니다.

요약하자면, 위조 지폐범의 위조 지폐 제작 - 검시관의 철저한 감시를 무한대로 반복하다보면 위조 지폐범이 언젠가는 검시관도 속일 만한 위조 지폐를 만들어 낼 수 있다는 것입니다.

 

그러면 이론상 학습만 무한대로 돌릴 수 있으면 GAN은 천하무적인가?

 

아쉽게도 초기 GAN 논문은 그렇지 않았습니다.

 

여러가지 이유가 있지만, 주요하게는 저는 두가지로 보고 있는데, 첫번째는 GAN 학습을 위한 Loss값의 설계에서 KL-Divergence를 사용했다는 점입니다.

 

이런 생소한 단어가 나오면 어지러워질때가있는데, 아주 쉽게 말씀드리겠습니다.

KL-Divergence는 "두 분포간의 차이"를 측정하는 방법입니다. 아까 설명 드릴때 위 그림의 D와 G 분포가 (d)처럼 똑같아지는게 목표라고 말씀드렸습니다.

즉, KL-Divergence가 최소가 되는 방향으로 학습을 하는것이 GAN 입니다.

이미지 출처 : https://medium.com/@sunil7545/kl-divergence-js-divergence-and-wasserstein-metric-in-deep-learning-995560752a53

 

그러면 "두 분포의 차이가 최소" 가 되면 좋은거 아니야?? 왜 KL-Divergence를 써서 문제라는거야?? 라고 의문이 드실것입니다. 그 의문에 대한 답은 상기 그림입니다.

두 분포간에 겹치는 부분이 0으로 수렴한다면 어떻게될까요?? KL-Divergence내 분포 차이를 연산하는 과정에서 무한대로 발산하게 됩니다. 

 

두번째로는, Mode-Collapse입니다. 이 또한 근본적으로는 KL-Divergence에서 기인한것이지만, 저는 상기 사유와는 조금 다른 새로운 원인을 야기한다고 보고 있습니다.

 

 

다시 위조 지폐범-검시관으로 돌아가보겠습니다.

위조 지폐범이 검시관의 약점을 파악했다고 가정해보겠습니다. 검시관도 그 만의 위조지폐를 감별하기 위한 기준(분포)가 있습니다. 즉, 이 기준들을 모두 통과하면 진짜 지폐라고 보는것이지요

 

Mode Collapse시 생성된 이미지, 출처 : https://wandb.ai/authors/DCGAN-ndb-test/reports/Measuring-Mode-Collapse-in-GANs-Using-Weights-Biases--VmlldzoxNzg5MDk

 

그런데, 위조 지폐범이 무수히 많은 반복작업을 하다보니, 실제 지폐와는 다르게 생겼지만 검시관의 기준은 모두 통과하는 요상한 작업을 알아낼수도 있습니다. 즉, 이렇게 되면 검시관을 속일 순 있지만 생김새가 지폐가 아닌 전혀 다른형태가 될수도 있다는 뜻입니다.

 

이런 문제들 때문에, 초창기 GAN은 학습 불안정 문제가 상당히 많았습니다.

하지만 이 또한 이후 엔지니어들의 노력으로 많이 안정적이게 됩니다만.. Diffusion Model의 등장으로 최근에는 왠만해선 잘 쓰이지 않게됩니다. 하지만, Diffusion Model도 결국 GAN과 같이 G(Reverse Process)와 D(Forward Process)를 같이 학습시키고 G만 쓴다는 부분에서 전체적인 컨셉은 유사합니다.

이미지 출처 : https://www.actuia.com/english/gfp-gan-a-gan-based-image-restoration-model-with-promising-results/

 

 

이런 문제점들을 제외하면 당시 기준으로 이미지를 생성하는데 SOTA 였으며, 딥러닝계에 큰 변혁을 일으켰다는 데에는 이견이 없습니다.

차후 초고화질 이미지를 생성해내는 PG-GAN이나, 제가 이전에 리뷰했던 ESR-GAN 같은 파생기술들도 많이 나오게되구요

 

 

Results

보기만해도 기분이 좋아지는 논문입니다.

저도 이것을 활용해서 NVH,배터리쪽으로 논문도 좀썼었는데, 역시 다시봐도 기분이 상쾌해지는 슈퍼 논문입니다.

생성AI를 늦게입문하셔서 Diffusion Model부터 보고싶으시더라도 저는 꼭 GAN부터 차례대로 발전해나가는 History 논문들은 모두 챙겨보시는게 좋을것같다고 의견드리고 싶습니다.

 

참조

[1] https://doi.org/10.48550/arXiv.1406.2661

댓글