GAN을 이용하여 새로운 패션 아이템을 만들어봅니다.
- [개념] GAN 기초
- [프로젝트 1] GAN으로 새로운 패션아이템 생성하기
- [프로젝트 2] Conditional GAN으로 생성 컨트롤하기
- 더 보기
GAN을 설명할때 항상 나오는 명언이 있습니다. 바로 양자 역학에 대한 공으로 노벨 물리학상을 받은 리처드 파인만(Richard Feynman) 교수의 "내가 만들어낼 수 없다면 이해하지 못한 것이다" (What I cannot create, I do not understand) 라는 문장입니다. 빈 종이가 주어졌을때 처음부터 끝까지 자신만의 자세한 설명 을 할 수 있어야 진정한 '이해'에 도달한다는 취지에서 말을 한 것이라 생각됩니다. 비슷한 맥락으로 단순히 고양이와 강아지를 구분하는 것과 고양이와 강아지를 그릴 수 있는 것은 이해의 정도에 큰 차이가 있다고 할 수 있습니다. 우리가 지금까지 만든 딥러닝 모델들은 이미지를 구분 하는 정도에 그쳤지만 이제 그림을 그리는 뉴럴넷을 만드는데 도전해보려고 합니다.
Generative Adversarial Networks, 흔히 줄여서 GAN이라 부르고 이안 굿펠로우(Ian Goodfellow)가 2014년 처음 제안한 이 방법론은 한국어로 직역하면 '적대적 생성 신경망'입니다. 왠지 더 어려워보이는 한국어 이름이지만 한 단어씩 뜯어보면 그 의미를 알 수 있습니다.
먼저 GAN은 '생성'을 하는 모델입니다. 기존에 배운 CNN이나 RNN으론 새로운 이미지나 음성을 만들어 낼 수 없었습니다. GAN은 새로운 이미지나 음성을 '창작'할 수 있도록 고안되었습니다.
두번째로 GAN은 '적대적'으로 학습합니다. adversarial 이라는 단어의 사전적인 의미는 '서로 대립 관계에 있는', 혹은 '적대적인'입니다. 이름이 암시하듯 GAN 방법론에선 가짜 이미지를 생성하는 생성자(Generator)와 이미지의 진위 여부를 판별하는 판별자(Discriminator)가 연달아 학습을 하며 경쟁적으로 (적대적으로) 학습을 하게 됩니다.
판별자는 앞서 배운 신경망 모델들과 매우 비슷합니다. 입력 x와 진위여부 y 사이의 관계를 학습하는 모델이라고 볼 수 있습니다. 생성자는 진짜 데이터 x 가 어떻게 생겼는지를 배우는 모델입니다. 정확하게는 입력의 분포를 배우게 됩니다. 프로젝트 2에서는 한발 더 나아가 레이블 y가 주어졌을때 진짜 데이터 x가 어떻게 생겼는지를 배우는 모델을 만들어 직접 생성을 통제할 수 있도록 해보겠습니다.
마지막으로 GAN은 '신경망'입니다. Generator와 Discrinimator 모두 뉴럴넷으로 되어있습니다.
GAN을 한마디로 종합하자면 서로 대립하는 두 모델의 경쟁을 통해 학습을 하는 방법론입니다. 얀 르쿤 (Yann LeCun)은 이 아이디어를 "근 20년간의 머신러닝 연구 중 가장 재밌는 아이디어" 라고 했고 앤드류 응(Andrew Ng)을 비롯한 많은 연구자들도 앞으로 딥러닝을 이끌 기술중 하나라고 진단하고 있습니다. 이에 힘입어 GAN을 활용한 엄청난 수의 논문이 쏟아지고 있습니다.
GAN이 이토록 주목받고 미래지향적이라는 평가를 받는 이유중 하나는 바로 비지도 학습을 한다는 것입니다. 세상에 존재하는 데이터는 기하급수적으로 증가하는 중이고, 대부분의 데이터는 정답(label)이 없습니다. 그렇다고 사람이 모든 데이터를 일일이 가공하기엔 한계가 많습니다. GAN은 앞서 배운 오토인코더와 같이 비지도학습을 하여 사람이 데이터에 주는 영향을 최소화 하며 학습을 할 수 있습니다.
앞서 나온 이유들과 더불어 GAN의 방법론은 유연하여 무궁무진한 응용이 가능합니다. 머신러닝으로 풀고자 하는 문제들 대부분에 GAN을 이용한 방법이 시도되고 있으며 놀라운 성적을 내고 있습니다.