33.jpg
55.jpg

KAIST부설 한국과학영재학교 온라인 과학매거진 코스모스

  • 블랙 페이스 북 아이콘
  • 블랙 인스 타 그램 아이콘

인공지능도 경쟁한다? (생성적 대립 신경망, GAN)

여러분은 달리기 기록을 재고 있습니다. 혼자 뛰는 것, 경쟁자와 같이 뛰는 것 중에 어떤 것이 더 좋은 기록을 세울 수 있을까요? 아마 주변에 경쟁하는 사람이 있다면 더 빨리 뛸 수 있겠죠?


인공지능도 마찬가지입니다. 생성적 적대 신경망이라고도 불리는 GAN(Generative Adversarial Network)이 바로 여기에 속하는데, 실제로 기존 학습 방법보다 더 빠르고 향상된 학습 결과를 보여줬습니다. 이 모델은 구글 브레인에서 머신러닝을 연구하고 있는 이안 굿펠로우(Ian Goodfellow)가 2014년 NIPS 학회에서 발표하였는데, 그 뒤로 다양한 후속 연구들이 활발하게 진행되고 있습니다. 페이스북 AI 연구팀 리더를 맡고 있으며, 딥러닝의 대가로 불리는 얀 르쿤(Yann Lecun) 교수는 GAN을 최근 10년간 머신러닝 연구 중 가장 혁신적인 아이디어로 선정하기도 했습니다.



그림 1. GAN의 창시자 이안 굿펠로우 <출처: 이안 굿펠로우 트위터>

얼마나 혁신적이길래 딥러닝의 대가마저 감탄한 걸까요? GAN은 기존 지도 학습(Supervised Training) 중심이었던 딥러닝 패러다임을 비지도 학습(Unsupervised Training) 중심으로 바꿔놓았습니다. 여기서 지도 학습이란 인공지능에게 어떤 문제를 학습시킬 때 답을 같이 제시해 주는 것이고, 비지도 학습은 인공지능이 스스로 답을 찾아가도록 하는 것입니다. 비지도 학습은 지도 학습보다 더 많은 범주의 문제들을 다룰 수 있지만, 그만큼 학습시키기도 어려운 방법인데, GAN에서는 인공지능이 감별자 역할을 해줌으로써 이 어려움을 해결해 준 것이죠.


가짜지만 진짜 같은 가짜

그렇다면 GAN은 바로 무엇을 만들어내는 것일까요? GAN은 ‘진짜 같은 가짜’를 만들어 내는 생성 모델의 한 종류입니다. 아래 그림을 보면 주어진 학습 데이터를 바탕으로 인공지능이 노란색으로 둘러싸인 가짜 이미지를 만들어낸 것을 볼 수 있는데, 실제 이미지와 흡사하지만 완전히 일치하지 않는 것으로 보아 인공지능이 단순 암기가 아닌 학습 데이터의 특성을 제대로 파악했다고 말할 수 있습니다.

그림 2. 학습 데이터를 바탕으로 GAN이 생성한 숫자 이미지

경찰을 속이는 위조지폐범

지금부터는 GAN이 어떤 구조로 이루어 있는지 알아봅시다. GAN은 아래 그림처럼 가짜 데이터를 생성해내는 생성자(Generator), 데이터가 가짜인지 진짜인지 판별하는 판별자(Discriminator) 두 개의 인공신경망으로 구성되어 있습니다. 가짜 지폐를 만드는 위조지폐범과 이를 판별하는 경찰의 관계로 이해하면 편합니다. 생성자는 임의의 잡음(noise)으로부터 가짜 이미지를 만들어내는데, 판별자는 진짜 혹은 가짜 데이터를 입력으로 받아 진짜 이미지에 대해서는 1을, 가짜 이미지에 대해서는 0을 반환하도록 학습됩니다. 반대로 생성자는 자신이 생성한 이미지가 진짜로 판별되도록, 즉 판별자가 1을 반환하도록 학습되겠죠? 이렇게 두 인공신경망은 서로 경쟁하면서 목표에 가까워지게 됩니다.

그림 3. GAN의 학습 구조

GAN의 학습 원리

GAN이 학습하는 과정을 조금 더 구체적으로 살펴볼까요? 아래 gif를 보시면 생성자가 생성하는 데이터가 학습이 진행됨에 따라 어떻게 변하는지 한눈에 알아볼 수 있는데, 처음에는 무질서한 형태에서 시작해 점차 진짜 데이터와 흡사하게 생성되는 게 보입니다.

그림 4. GAN이 학습하는 과정

그리고 이러한 학습이 이루어지는 과정은 다음 식으로 표현할 수 있죠.


갑자기 수식이 나와서 놀라셨나요? 그렇게 어려운 것은 아니니 지금부터 차근차근 알아봅시다. 먼저 좌변의 V(D,G)는 판별자 D와 생성자 G에 따라 정해지는 값이며, 왼쪽의 min과 max는 생성자 G가 이 값을 최소로, 판별자 D가 이 값을 최대로 만드는 쪽으로 학습한다는 의미입니다. 우변의 E[.]로 이루어진 두 값은 진짜 데이터 x와 noise z와 생성자에 의해 만들어진 가짜 데이터에 대한 기댓값을 의미합니다. (기댓값은 단순히 전체 데이터에 대한 평균이라고 생각하시면 됩니다.) 왼쪽 항은 log(D(x))라고 되어 있죠? 진짜 데이터에 대해서는 판별자가 1을 반환해야 하므로 log(D(x))의 값을 커지도록 할 것이며, 따라서 V(D,G) 값이 커지는 쪽으로 학습이 진행됩니다. 오른쪽 항을 보면 1 - log(D(G(z)))인데, 이 경우에는 V(D,G) 값이 커지려면 log(D(G(z))) 값이 작아져야 하며, 생성자가 만들어낸 가짜 데이터 G(z)에 대해서는 판별자가 0을 반환하도록 학습이 진행됩니다. 반대로 생성자는 log(D(G(z))) 값이 커지도록, 즉 생성자가 가짜 이미지도 진짜로 판별하도록 학습이 이루어지게 됩니다.


학습의 최종 상태

그렇다면 이렇게 학습이 점점 진행됨에 따라, 최종적으로 어떤 상태에 도달하게 될까요? 최종적으로는 아래 그림처럼 판별자가 진짜와 가짜 데이터에 대해 모두 1/2을 반환해 둘을 구분하지 못하는 상태에 도달하게 됩니다. 이안 굿펠로우가 2014년 NIPS에 발표한 논문에는 이 내용이 수학적으로 증명되어 있죠.

그림 5. GAN을 계속 학습시키면, 판별자가 진짜와 가짜 이미지를 구분하지 못하는 상태에 도달하게 됩니다.


증명 과정이 조금은 복잡하기에 이 기사에서 다루지는 않지만, 아래 동영상을 참고하시면 증명 과정을 보실 수 있습니다.


GAN의 다양한 적용

기사 초반에 언급했듯이, GAN이 처음 학계에 소개된 이후 다양한 후속 연구들이 진행되어 활용 가치를 더욱 높여주고 있는데, 그 대표적인 예시로 Pix2Pix와 CycleGAN이 있습니다.


Pix2Pix는 글자 그대로 ‘Pixel to Pixel’을 의미하는데, 각각의 픽셀을 다른 픽셀로 바꿔주는 작업입니다. 흑백 사진을 컬러 사진으로 바꿔주거나, 간소화된 이미지에 대한 실제 이미지를 생성해 주는 등의 작업을 수행할 수 있습니다. GAN을 활용하면 보다 더 빠르고 정확하게 학습을 진행시킬 수 있습니다.

그림 6. Pix2Pix를 활용하여 건물을 구현한 모습

CycleGAN은 주로 그림의 스타일을 바꿔주는 인공지능을 만들 때 이용합니다. 생성자 G, 판별자 D 외에 변환된 데이터를 원래 형태의 데이터로 되돌려주는 F network를 추가로 학습시켜 기존 GAN만으로는 힘들었던 학습을 더 수월하게 진행시킬 수 있습니다.

그림 7. CycleGAN을 활용하여 그림의 스타일을 바꾸어 준 모습

이렇게 GAN은 정말 획기적이고 유용한 모델이지만, 얼마든지 악용될 수도 있다는 것이 정말 안타까운 사실입니다. 딥페이크를 이용한 각종 음란물 등이 그 대표적인 예시라고 할 수 있는데, 우리가 먼저 근절하여 이러한 악용이 일어나지 않도록 해야겠죠?


 

정민재 학생기자 | Mathematics & Computer Science | 지식더하기


참고자료

[1] https://terms.naver.com/entry

[2] https://www.youtube.com

[3] https://blog.naver.com

첨부한 이미지 출처

[1] https://www.tensorflow.org

[2] https://www.youtube.com

[3] https://blog.naver.com

첨부한 동영상 출처

[1] https://www.youtube.com


ⓒ KAIST부설 한국과학영재학교 온라인 과학매거진 KOSMOS

조회수 24회댓글 0개

최근 게시물

전체 보기