본문 바로가기

Book Review

[GAN] 미술관에 GAN 딥러닝 실전 프로젝트

 

 

 

 

대학원생 때 가장 감명받은 명언중 하나는 리처드 파인만 알고리즘 이다. 

 

1. Write down the problem.
2. Think real hard.
3. Write down the solution.

1. 문제를 쓴다.
2. 열심히 생각한다.
3. 답을 쓴다.

 

딱 보면 간단해 보이지만 이 세가지 단계 대로 문제를 풀려고 하면 대학원생이 마주할 수 있는 쉽고, 어려운 문제들은 원활히 해결 할 수 있었다. 첫번째는 문제가 무엇인지 아는 것이 가장 중요한데, 풀고 싶은 문제에 대해서 명확히 자신이 기술 할 수 있어야 문제를 안다고 할 수 있다. 두번째는 열심히 생각한다인데, 이 열심히 라는 기준은 연구라는 것을 처음 시작하는 사람들은 아예 감을 잡지도 못할 수 있다. 이건 개인이 정말 밥을 먹다가도, 잠을 자다가도, 집에 가다가도 계속 생각해야 하는 문제이며, 문제를 풀기 위해서 할 수 있는 모든 방법을 써서라도 문제를 풀 수 있는 길을 좁혀가야하고, 문제를 구체화 시켜는 것도 방법이다. 세번째는 답을 쓴다 인데, 1번과 2번을 확실히 통찰했다면 3단계에 다다를 수 있다. 필자는 대학원생 때 A 정보와 B 정보를 "어떻게" 결합하여 Video Sursurveillance 문제를 해결할 것인지에 대해 몇날 몇일을 고민하다가 연구실 책상에서 잠들었는데 꿈속에서 해결법이 나왔던 경험이 있었다. 실제로도 과학의 역사를 돌아보면 과학자들은 꿈에서 자신이 고민했던 문제에 대한 답을 발견했던 사례들이 많다고 한다. 아무튼 이토록 파인만 알고리즘 2번처럼 열심히 생각하면 어떤 문제든 풀 수 있지 않을까 싶다. 

 

서론이 너무 길었는데, 한빛미디어에서 새롭게 출간된 "미술관에 GAN 딥러닝 실전 프로젝트" 책은 리처드 파인만의 명언으로 책의 서론을 시작했다. 

 

" 만들 수 없다면 이해하지 못한 것이다. " 

 

- 리처드 파인만

 

이 책은 최근 생성 모델링(Generative modeling)으로 인해 주어진 스타일로 창조적인 미술 작품을 그리거나, 긴 구조의 논리적인 문단을 쓰거나, 듣기 좋은 음악을 만들어내는 등의 창조성의 메커니즘을 주체가 되는 GAN(Generative Adversarial Network) 에 대하여 담고있다.

 

책은 파이썬 코딩 경험이 있다는 전제하에 책의 내용을 설명한다. 목차에서는 생성 모델링, 딥러닝, GAN 이 무엇인지에 대해 설명하고, 이러한 GAN 을 이용하여 "그리기", "쓰기", "작곡하기", "게임하기" 라는 챕터로 결과물들을 생성하기 위한 지식 및 실습을 제공한다. 마지막에는 생성 모델링의 미래에 대해서 담고있다. 

 

책에서는 생성 모델링을 다음과 같이 설명하고 있었다. 

 

확률 모델(Probabilistic model)의 관점으로 보면 생성 모델은 데이터셋을 생성하는 방법을 기술한 것입니다. 이 모델에서 샘플링을 하면 새로운 데이터를 생성할 수 있습니다.

 

어떠한 이미지 데이터 세트 A가 있을 때 이에 대해 GAN으로 학습하면, A 이미지들과 비슷한 "새로운" 이미지 세트들을 창조할 수 있는 것이다. 딥러닝 분야에서는 잘 만들어진 데이터세트들이 성능을 결정하는데 중요한 요인이 되기 때문에 데이터 세트를 잘 정제하고, 학습이 잘되도록 관리하는 일이 필요하다. 이러한 관점에서 봤을 때, GAN은 원하는 데이터 세트들을 생성할 수 있기 때문에 획기적이다. 일례로 프라이버시 문제가 존재하는 사람 얼굴 데이터세트들을 GAN 으로 새롭게 생성함으로써 민감한 문제들을 해결 할 수 있다.  

 

GAN 개념을 처음으로 책으로 접하고 싶은 분들에게 추천해주고 싶은 책이다. 2018년에 처음 GAN 을 접했을 때는 신기하다 라는것에 그쳤었는데, 이렇게 책으로 기존 딥러닝 신경망 방식과 어떻게 왜 다른지 알게되니 기존에 풀지 못했던 문제들을 푸는데 도움이 될 수 있을 것 같다. 기존 머신러닝 개념과 GAN 개념이 어떻게 다른지는 다음과 같다. 

 

GAN으로 어떤것을 생성하려면 생성하려는 개체의 샘플을 많이 가진 데이터셋이 필요하다. 이를 훈련 데이터라고 하며 데이터 포인트 하나를 샘플 이라고 한다. 각 샘플은 많은 특성 즉, Feature 로 이루어져있는데 이미지 생성 문제일 경우 특성은 일반적으로 개별 픽셀 값이 될 수 있다. 목표는 일련의 새로운 특성을 생성할 수 있는 모델을 만드는 것이다. 이는 아주 어려운 작업이 될 수 있는데, 개별 픽셀 값이 가질 수 있는 경우의 수가 매우 많고, 아주 작은 수의 조합이 흉내 내려는 개체의 이미지를 구성하기 때문이다. 

 

생성 모델은 또한 결정적(Deteministic)이 아니라 확률적(Probabilistic)이어야 한다. 모델이 데이터세트에 있는 모든 픽셀의 평균 값을 구하는 것처럼 고정된 계산만 수행한다면 매번 동일한 값을 출력하기 때문에 생성 모델이 아니다. 생성되는 개별 샘플에 영향을 미칠 수 있는 확률적 요소를 포함해야한다. 즉, 어떤 이미지는 훈련 데이터세트에 있을 것 같고, 다른 이미지는 그렇지 않은 이유를 설명할 수 있는 알려지지 않은 확률 분포가 있다고 가정한다. 해야 할 일은 가능한 이 분포에 가깝게 흉내 내는 모델을 만드는 것이고, 이 분포에서 샘플링하여 원본 훈련 세트에 있을 것 같은 새롭고 완전히 다른 샘플을 생성해내는 것이다. 

 

이러한 GAN 개념과 반대되는 기존 머신러닝 방법은 판별 모델링(Discriminative Modeling) 방식이다. 이는 어떠한 훈련 데이터 세트들이 있고, 이와 비슷한 이미지가 들어왔을 때 이를 훈련데이터 세트에 부합하는 클래스로 판별하는 것이다. 이 때는 당연히 훈련 데이터의 각 샘플이 "레이블링" 되어있어야한다. 이러한 이유로 판별 모델링을 지도학습이라고 한다. 생성 모델링은 이와는 다르게 비지도학습으로 구분된다. 

 

판별 모델링은 샘플 x가 주어졌을 때 레이블 y의 확률을 추정한다. 
생성 모델링은 샘플 x의 관측 확률을 추정한다. 데이터 세트가 레이블을 가지고 있다면 확률을 추정하는 생성모델을 만들 수도 있다. 

 

https://github.com/NVlabs/stylegan

 

NVlabs/stylegan

StyleGAN - Official TensorFlow Implementation. Contribute to NVlabs/stylegan development by creating an account on GitHub.

github.com

 

위와 같이 StyleGAN 을 적용하여 얼굴을 생성한 결과는 다음과 같다. 앞으로 GAN 을 이용하여 데이터를 생성하는데 무궁무진한 발전이 있을 것이다. 또한 인공지능 산업계에서 핵심 요소가 될 것이며, 뇌는 특정 목적을 가진 입력 데이터에 대한 거의 완벽한 생성 모델이라고 한다. 이러한 미래의 시퀀스를 생성하려면 환경의 물리적 특성을 이해하는 것뿐만 아니라 행동 그 자체와 어떻게 행동하는지 이해해야한다. 이 아이디어가 향후 10년안에 인공 일반 지능의 문을 여는 열쇠로 주목 받을 수 있다고 말하고 있다.