현장탐방
페이퍼 데이 2018 - GAN
2018/07/12 by 이수경 김은솔

지난 6월 29일 서울 SKT타워 수펙스홀에서 열린 "페이퍼 데이 2018(Paper Day 2018)" 행사에 다녀왔습니다. 이는 페이스북 그룹인 파이토치 코리아(Pytorch KR)에서 주최한 행사로, 카카오브레인은 후원사 중 하나로 참여했습니다. 주요 머신러닝 및 딥러닝 학회를 통과한 논문에 대한 저자 직강을 들을 수 있다는 점에서 참가자들의 뜨거운 관심과 높은 기대를 확인해볼 수 있었습니다.

[ 그림 1 ] 페이퍼 데이 2018 포스터 자료 (출처 : Pytorch KR 페이스북 그룹)

저는 그중에서도 두 번째 세션에 소개된 "starGAN"과 "fusionGAN"을 집중해서 들었습니다. 이 두 모델은 시각정보를 자유롭게 변형하거나 새로운 이미지를 생성하는 GAN(Generative Adversarial Networks)의 응용 버전입니다. 딥알못(딥러닝을 잘 알지 못하는 사람)의 입장에서 보자면 이 두 응용모델은 (다른 논문과 비교했을 때) 상대적으로 이해하기가 쉬웠습니다. 이미지 결과물을 보며 모델의 품질을 확연하게 구분할 수 있었기 때문입니다. 그래서 이번 시간에는 GAN과 starGAN, fusionGAN에 대해 간결하게 설명해보고자 합니다.

*직접 현장을 탐방하고 쓴 후기형 글로, 카카오브레인의 연구 방향이나 전략과는 무관합니다.

*최대한 수학적 설명은 배제하며 쉽게 설명하고자 했습니다. 좀 더 자세한 설명을 보고 싶다면 아래 ‘더 읽어볼 만한 글’을 참고해주세요.


분류모델과 생성모델

학습 모델마다 더 잘 푸는 문제가 있고, 못 푸는 문제가 있습니다. 딥러닝 모델도 마찬가지입니다. 이미지 인식을 더 잘하는 모델이 있고, 음성 인식을 더 잘하는 모델이 있죠. 이러한 모델의 특징을 비교하는 여러 방법이 있는데요, 여기서는 분류모델(discriminative model)과 생성모델(generative model)을 소개하고자 합니다. 앞으로 언급할 GAN을 이해하기 위해서죠.

분류모델은 입력 패턴의 ‘차이"를 구분하고 이를 분류합니다.고양이 그림을 보여주면 몇 %의 확률로 고양이로 판단하는지와 같은 일을 수행하죠. 학습모델은 X(데이터)가 주어졌을 때 Y(레이블)가 나올 확률을 최대화하는 방향으로 훈련됩니다. 즉, 조건부 확률(p(y|x))을 직접 모델링한다고 보시면 됩니다. 데이터를 분류하거나 인식하는 딥러닝 모델이 바로 여기에 해당합니다.

[ 그림 2 ] 샘플 데이터의 차이를 구분하고 이를 분류하는 게 분류모델, 샘플 데이터와 유사한 확률분포를 가진 데이터를 생성하는 게 생성모델이다

반면, 생성모델은 입력 패턴과 "유사"한 패턴을 생성합니다. 결합분포(p(x,y)) 자체를 모델링하죠. 즉, 데이터를 통해 대상의 특성(확률분포)을 학습하고, 이와 유사한 분포를 가진 데이터 생성이 목적입니다. 이미지, 소리, 텍스트를 학습해 이와 유사한 새로운 데이터를 생성하는 모델이 바로 이 범주에 속한다고 볼 수 있겠습니다.

생성모델은 분류모델과 비교해 더 많은 정보를 포함합니다. 결합분포를 알면 조건부확률도 구할 수 있고, 데이터 자체에 대한 분포를 알 수 있기 때문입니다. 이런 이유로 생성모델이 입력 데이터(의 내재된 구조)를 이해하고, 이를 설명할 수 있는 거죠. 물론 단순히 무엇이 더 낫다고 비교할 수는 없습니다. 해결하려는 문제에 따라 분류모델과 생성모델 모두 각자 다름대로 유용하기 때문입니다.

GAN이 등장하기 전까지 생성모델은 딥러닝 분야에서 큰 주목을 받지 못했습니다. 생성모델의 손실(loss) 계산과 역전파(back propagation) 학습이 어렵고, 유사도(likelihood)를 높이는 정형화된 방법론이 없었기 때문입니다. 2012년 이미지넷 챌린지(ImageNet Challenge)의 영상 분류 문제에서 CNN(convolutional neural networks) 응용 모델이 뛰어난 성능을 보이며 분류모델에 관한 연구가 더욱 주목을 받았습니다.

그러다가 2014년을 기점으로 CNN과 같은 인공신경망을 생성모델에 접목하는 방법론에 관한 연구도 활발히 이뤄지게 됐습니다. 이안 굿펠로우(Ian Goodfellow)가 주축이 된 몬트리올 대학교(University of Montreal) 연구팀이 GAN을 제안하면서부터죠. GAN은 기존 발표된 생성모델과 다른 아키텍처나 목적함수를 사용함으로써 성능을 끌어올렸습니다.

CNN

CNN은 데이터로부터 자동으로 특징을 학습하는 대표적인 모델이다. 인간의 시각(vision) 정보 처리 방식을 흉내 낸 것으로, 특히 이미지 인식과 분류에서 탁월한 성능을 낸다. 알파고의 승리도 CNN의 발전이 있었기에 가능했다. CNN의 메커니즘은 생각보다 간단하다. 입력과 가까운 층에서는 가장자리(edge), 곡선(curve)과 같은 저수준(low level) 특징을 학습한다. 점차 높은 층으로 올라갈수록 질감(texture), 물체 일부분(object parts)과 같이 고수준(high level) 특징을 인식한다. 출력층에서는 물체의 종류를 인식하는 등 복잡한 추론을 수행한다.


GAN(Generative Adversarial Networks)

GAN은 패턴을 생성하는 문제를 미니맥스 게임(minimax game)의 형태로 접근합니다. 새로운 데이터를 생성하는 생성자(generator)와 이 데이터를 평가하는 구별자(discriminator)가 서로 대립하며 각각의 성능을 높이는 목적을 달성하는 경쟁 끝에 진짜와 같은 가상의 새로운 이미지를 만들어내죠. 이처럼 두 주체가 충돌하며 발전이 이뤄지는 대립쌍 프로세스(adversarial process)라는 점에 기인해 네트워크에 이름이 붙여졌습니다.

이처럼 GAN은 ‘학습’을 ‘경쟁게임’으로 바꿨다는 점에서 혁신적인 모델로 평가받고 있습니다. 기존 비지도학습(unsupervised learning)에선 데이터의 확률분포를 직접 모델링하는 데 큰 어려움이 따랐습니다. 그런데 경쟁을 통해 이 난제를 해결한 거죠. 게다가 CNN과의 결합으로 학습이 안정적으로 이뤄지면서 더욱 진짜와 같은 이미지를 생성할 수 있게 됐습니다.

이안 굿펠로우는 논문에서 생성자는 위조 지폐범에, 구분자는 위조지폐를 구분하는 경찰에 비유했습니다. 위조 지폐범은 위폐를 만들고, 경찰은 진폐와 위폐를 구분하는 역할을 맡습니다. 위조 지폐범은 경찰을 속이려는 목적으로 더욱 진짜와 같은 위폐 제조 기술을 연마하고, 경찰은 위조지폐를 감별하는 기술력을 키우는 게 목표입니다. 이렇게 양자가 경쟁을 거듭하다 보면, 위조 지폐범은 경찰이 감별해내지 못하는, 진폐와 위폐를 구분할 수 없을 정도로 정교한 결과물을 만들어내는 수준에 도달하게 될 것입니다.

[ 그림 3 ] GAN을 도식화한 자료 © deeplearning4j

이걸 이해했다면 [그림 3]과 같은 GAN의 구조를 더 쉽게 이해할 수 있을 것입니다. 생성자는 랜덤 노이즈(random noise)를 받아서 훈련 데이터(training set)와 비슷한 데이터를 생성합니다. 구별자는 훈련 데이터와 생성자가 만든 가짜 데이터를 구별하도록 학습합니다. 생성자가 구별자가 분류에 성공할 확률을 낮추는 것을 목표로, 구별자는 분류에 성공할 확률을 높이는 방향으로 학습하는 과정을 거쳐서 생성자는 실제 데이터의 분포에 가까운 데이터를 생성하게 됩니다.

GAN이 가장 많이 활용된 분야는 이미지의 생성(generation)과 스타일 변환(style translation), 얼굴 이미지 합성(face image synthesis)과 같은 컴퓨터 비전(computer vision)입니다. 최근에는 음성이나 자연어 등의 비(非)이미지 데이터를 생성하는 데도 활용되는 등 그 활용 가능성은 점차 커지고 있습니다. 얀 르쿤(Yann Lecun) 교수가 지난 10년간 이뤄진 머신러닝 연구 중 가장 흥미로운 아이디어가 바로 GAN이라고 평가한 이유가 바로 여기에 있죠.

물론 근본적인 한계를 지니고 있기도 합니다. 안정성이 떨어져 학습이 제대로 되지 않거나 특정분포만 가진 모드 상쇄(mode collapsing)[1]가 발생하기 때문이죠. 그리고 최적점(optimal point)에 도달했다는 걸 명확하게 판단하기도 힘들다는 문제도 있습니다.

하지만 다른 생성망(generative networks)에 비해 뛰어난 성능을 비롯해 그 무궁무진한 활용 가능성에 매료된 전세계 딥러닝 연구진은 몇 년 사이 BEGAN, WGAN 등 수백 개의 응용모델을 선보이며 그 문제점들이 점점 개선되어가고 있습니다. 뒤에 소개할 starGAN과 fusionGAN도 역시 GAN의 응용모델이라고 보시면 될 것 같습니다.


starGANfusionGAN

최근 연구는 한 도메인에 속하는 이미지를 다른 도메인으로 변환 부분에서 괄목할만한 성장을 이루고 있습니다. 예를 들면 남자 얼굴을 여자 얼굴로, 과일 본연의 색깔을 다른 색으로, 사진을 그림으로 변환하는 작업이 이뤄진 거죠. starGAN은 단일 생성기를 활용해 이미지를 여러 도메인의 이미지로 변환하고, fusionGAN은 이미지 X 속 인물(identity)에 이미지 Y 속 인물 동작(shape)을 합성합니다.

일반적으로 GAN 모델에서는 인물의 성별을 바꾸거나 피부색, 감정을 바꾸는 데는 제약이 따릅니다. 각각으로 변환할 수 있는 서로 다른 모델을 독립적으로 구현하기 때문입니다. 예를 들어, [그림 4-a]에서 보듯이 (1), (2), (3), (4)라는 이미지 간 교차 도메인 모델을 만들려면 총 12개의 생성기를 학습시켜야 합니다. 하나의 생성기는 하나의 역할만 해낼 수 있으니까요. 반면, startGAN은 [그림 4-b]처럼 다중 도메인을 연결하는 단일 생성기를 기반으로 동작합니다.

[ 그림 4 ] 교차 도메인 모델을 만들기 위해서는 12개의 생성기가 필요하다. 반면 starGAN에서는 단일 생성기로도 가능하다.

학습방식을 아주 간단하게 설명하면 다음과 같습니다. 타깃 도메인 라벨을 무작위로 생성합니다. 학습모델의 생성자는 이미지와 타깃 도메인을 입력으로 받고, 이미지를 이 타깃 도메인으로 변환하는 방법을 학습합니다. 이 가짜 이미지와 원래 이미지의 도메인을 입력받아 다시 원래 이미지를 재구성하는 방법도 학습하죠. 그리고 모델의 구별자는 실제 이미지와 진짜 이미지를 구분하고 타깃 도메인을 분류합니다. 이 학습 과정을 거치면 starGAN은 이미지를 여러 도메인으로 자유자재로 변환할 수 있게 됩니다.

[ 그림 5 ] starGAN의 구조

[그림 6-1]에서 처럼 starGAN은 단일 생성기를 이용해 이미지 속 인물의 머리 색깔이나 성별, 나이를 변경할 수 있습니다. 혹은 여러 타깃 도메인으로 이미지를 변경할 수도 있습니다. 예를 들어 머리 색깔과 나이를 한꺼번에 바꾸거나 머리 색깔, 나이, 성별도 한꺼번에 바꿀 수 있죠. 다른 네트워크와 비교해서 월등한 성능을 내는 걸 보실 수 있습니다. [그림 6-2]에선 인물의 감정도 자유자재로 바꾸는 걸 확인해볼 수 있습니다.

[ 그림 6-1 ] 이미지 속 인물의 머리 색깔, 성별, 나이를 바꾼 결과. starGAN이 다른 네트워크보다 성능이 뛰어남을 확인해볼 수 있다.

[ 그림 6-2 ] 이미지 속 인물의 머리 색깔, 성별, 나이를 바꾼 결과. starGAN이 다른 네트워크보다 성능이 뛰어남을 확인해볼 수 있다.

사진 속 사물이나 사람을 원하는 모양으로 변형하는 것은 현업에서도 잘 활용되는 기술 중 하나입니다. 수십 년 전 영화에 출연했던 배우의 젊은 시절을 재현하거나 실제로 촬영하지 않은 자세를 구현하는 것이 바로 그 예죠. fusionGAN은 바로 이미지 속 특정 객체(identity)의 원하는 모양(shape)으로 만드는 데 집중하고 있습니다.

(자세히 보기 - 딥페이크와 리벤지 포르노)

[ 그림 7 ] fusionGAN의 구조

그러나 기존 이미지 변환 네트워크에서는 손실함수(loss function)를 제대로 정의할 수 없어서 모양이 동일하게 유지되지 않을 가능성이 높았습니다. 즉, Y 속 형상을 제대로 재현했는지를 측정하는 지표가 없기에 모양이 제멋대로 생성된다는 의미죠. 이에 fusionGAN은 [그림 7]에서 처럼 최소패치(Min-Patch)라는 새로운 학습 방식을 제안했습니다. 인간이 이미지를 볼 때 아주 사소한 부분이 이상하면 이미지를 가짜로 느낀다는 점에 착안한 것이죠. 구별자의 최종 결과물에 최소패치 훈련을 도입, 모양이 제대로 합성됐는지 여부를 판단합니다.

[ 그림 8 ] fusionGAN는 하나의 생성기로도 여러 이미지 세트를 합성할 수 있다.

한편, 기존 연구에서는 한 이미지를 다른 이미지로 합성하기 위해서는 하나의 생성기를 만들어야 했습니다. [그림 8]처럼 (a->b), (c->d), (e->f), (f->e), (d->c), (b->a)로 변환 하려면 총 6개의 생성기가 필요하죠. fusionGAN은 앞서 언급한 starGAN처럼 하나의 생성기만으로도 두 이미지를 합성해냅니다.

그 결과 [그림 9]에서처럼 fusionGAN이 cycleGAN이나 discoGAN에 비해 뛰어난 성능을 발휘하는 걸 확인해볼 수 있습니다.

[ 그림 9 ] 이미지 x의 인물에 y의 동작을 합성한 결과. fusionGAN이 다른 네트워크보다 성능이 뛰어남을 확인해볼 수 있다.

이처럼 딥러닝은 시각 정보를 자유롭게 변형하기도 하고, 새로운 이미지를 생성해내기도 합니다. 사람들이 쉽게 진짜와 가짜를 구분할 수 없을 정도의 높은 완성도를 보이고 있죠. 위 사례처럼 정지 화상을 합성하는 데 그치지 않고 동영상을 실시간으로 합성하는 기술도 나오고 있습니다. 기계가 스스로 데이터 속 중요한 정보를 찾아내고, 새로운 데이터를 만들어낸다는 상상 속의 일이 현실화되고 있다는 점에서 GAN이 가진 잠재력은 무궁무진할 것으로 보입니다.


더 읽어볼 만한 글

- 딥러닝 기술 동향: CNN과 RNN을 중심으로

- Generative Adversarial Networks (1)

- [카카오AI리포트]Do you know GAN? 1/2

- [카카오AI리포트]Do you know GAN? 2/2

- Generative Adversarial Networks

- GAN: A Beginner’s Guide to Generative Adversarial Networks

- Advanced GANs


(해당 글의 피쳐 이미지 출처는 "A Neural Algorithm of Artistic Style"라는 논문 입니다)


참고
[1] 학습시키려는 모델이 실제 데이터의 분포를 모두 커버하지 못하고 다양성을 잃어버리는 현상
이 글을 쓴 사람들
samantha.lee
이수경 | samantha.lee@kakaobrain.com
2016년 3월 알파고와 이세돌 9단이 펼치는 세기의 대결을 두 눈으로 목도한 이후 인공지능을 제대로 공부해봐야겠다고 결심했습니다. 인공지능 본진이자 연구소인 카카오브레인으로 걸어들어온 이유죠. 인공지능 기술과 이로 인해 바뀔 미래 사회를 다루는 글을 통해 사람들과 소통하고자 합니다.
epsilon.kim
김은솔 | epsilon.kim@kakaobrain.com
사람의 뇌를 닮은 기계학습 알고리즘을 만들고자, 인지과학, 뇌과학, 기계학습, 인공지능 기술을 (넓고 얕게) 공부했습니다. 실제 생활에서 수집한 비정형화 시계열 데이터 모델링을 연구한 경험을 바탕으로, 카카오브레인에서는 대용량 비디오 데이터를 분석하고 있습니다. 인간의 삶에 도움이 되는 인공지능 기술을 만들고자 오늘도 술 한잔 먹고 힘내려고 해요!