생성적 적대 신경망(Generative Adversarial Network, GAN)은 생성(Generative)이라는 문제를 풀기 위해 딥러닝(Deep Learning)으로 만들어진 모델을 적대적(Adversarial) 방식으로 학습시키는 알고리듬이다.

생성 모델은 '그럴듯한 가짜'를 만들어, 실제 데이터 분포와 근사한 모델을 '그럴듯하다'고 정의한다. GAN은 생성자(Generator)와 구분자(Discriminator)를 경쟁시켜 학습시키는데, 이를 '적대적 학습(Adversarial Training)'이라 한다.

GAN으로 생성한 가짜 사람 얼굴 이미지 / 마이크로소프트웨어 391호 발췌
GAN으로 생성한 가짜 사람 얼굴 이미지 / 마이크로소프트웨어 391호 발췌
조용래 넥슨코리아 데이터분석가는 마소 391호에서 딥러닝 프레임워크인 파이토치(PyTorch)를 이용해 GAN을 직접 만들었다. 0부터 9까지 숫자 모양의 손글씨 이미지를 생성하는 문제를 풀었다. 숫자 손글씨 데이터셋은 딥러닝계의 'Hello World'라 불리는 입문 데이터셋이다.

GAN은 학습과정이 불안정할 수 있는 데, 단점을 보완을 위한 다양한 실험적 학습방법이 나왔다. DCGAN(Deep Convolutional GAN)은 그 노력의 결과물 중 하나다. DCGAN은 배치 정규화(Batch Normalization)로 평균과 분산을 조정해 안정적인 학습을 지원한다.

GAN은 혁신적인 기술이지만, 제대로 학습하지 못하면 모드 붕괴(Mode Collapse)나 텍스트 생성이 어려운 문제가 생긴다. 하지만 GAN은 사람의 눈으로 구분하기 어려운 사람 얼굴 이미지를 생성하고 자동으로 이미지를 채색하는 등 많은 발전이 이어지고 있다. 한계점도 있는 반면 장래도 밝다.

조용래 데이터분석가의 GAN 활용기는 '마이크로소프트웨어 391호(www.imaso.co.kr/archives/1301)'에서 확인할 수 있다.