가짜를 만드는 화가와, 가짜를 잡아내는 감정사 — GAN 이야기

가짜를 만드는 화가와, 가짜를 잡아내는 감정사 — GAN 이야기
여러분, 미술관에 걸린 그림을 본 적 있나요? 그 그림이 진짜인지 가짜인지 알아보는 사람이 있어요. 그런 사람을 감정사라고 불러요.
그런데 만약, 아주 솜씨 좋은 위조 화가가 있다고 생각해 봐요. 이 화가는 감정사를 속이는 게 목표예요. 감정사는 반대로 위조 그림을 딱 잡아내는 게 목표고요.
두 사람이 계속 맞붙으면 어떻게 될까요? 화가는 점점 더 잘 그리게 되고, 감정사는 점점 더 눈이 밝아져요. 이 싸움을 컴퓨터 안에서 시킨 것이 바로 GAN이에요.
GAN이라는 이름을 뜯어보기
GAN은 영어 Generative Adversarial Network의 앞 글자를 딴 말이에요. 우리말로는 생성적 적대 신경망이라고 해요. 이름이 길지만 세 조각으로 나누면 쉬워요.
- 생성적(Generative) — 무언가를 새로 만들어내는 것. 그림, 얼굴, 목소리 같은 걸 만들어요.
- 적대적(Adversarial) — 서로 겨루는 것. 두 편이 싸운다는 뜻이에요.
- 신경망(Network) — 사람 뇌를 흉내 낸 컴퓨터 두뇌예요.
합치면 이런 말이 돼요. "서로 겨루면서 무언가를 만들어내는 컴퓨터 두뇌 두 개."
이 아이디어는 2014년 6월, 이언 굿펠로라는 연구자와 동료들이 처음 내놓았어요. 그리 오래된 이야기가 아니죠.
두 선수를 소개할게요
GAN 안에는 컴퓨터 두뇌가 딱 두 개 들어 있어요.
1번 선수: 생성자 (위조 화가)
생성자는 가짜를 만드는 쪽이에요. 아무 의미 없는 숫자 뭉치를 받아서, 그걸 그림으로 바꿔요. 마치 물감을 마구 섞다가 얼굴을 그려내는 것처럼요.
처음에는 정말 엉망이에요. 얼룩덜룩한 낙서 수준이죠.
2번 선수: 판별자 (감정사)
판별자는 진짜와 가짜를 가려내는 쪽이에요. 그림을 하나 보고 "이건 진짜 사진!" 또는 "이건 가짜!"라고 대답해요.
판별자는 진짜 사진 더미도 미리 보여줘요. 그래서 "진짜는 대충 이렇게 생겼구나" 하고 알고 있어요.
둘은 어떻게 겨룰까?
순서는 아주 간단해요. 이 다섯 걸음을 계속 반복해요.
- 생성자가 가짜 그림을 하나 만들어요.
- 판별자에게 그 가짜 그림과 진짜 사진을 섞어서 보여줘요.
- 판별자가 "진짜!" 또는 "가짜!"라고 찍어요.
- 판별자가 틀렸으면, 판별자는 "아, 이런 점을 봤어야 했구나" 하고 배워요.
- 판별자가 맞혔으면, 생성자는 "아, 여기가 어설펐구나" 하고 배워요.
이걸 수백만 번 반복해요. 그러면 생성자의 그림은 점점 진짜 같아지고, 판별자의 눈은 점점 매서워져요.
이건 "제로섬 게임"이에요
어려운 말이 하나 나왔어요. 제로섬 게임이에요. 뜻은 아주 쉬워요.
한쪽이 얻으면, 다른 쪽은 꼭 그만큼 잃는 게임이에요.
가위바위보를 떠올려 보세요. 내가 이기면 친구는 반드시 져요. 둘 다 이기는 일은 없어요. 케이크 한 조각을 나눌 때, 내가 더 많이 가지면 친구 몫은 줄어들죠. 이게 제로섬이에요.
GAN도 똑같아요. 생성자가 판별자를 속이면 생성자가 이긴 거예요. 판별자가 가짜를 잡아내면 판별자가 이긴 거고요. 둘이 사이좋게 나눠 이기는 방법은 없어요.
재미있는 건, 이 싸움이 둘 다를 성장시킨다는 점이에요. 축구 연습을 할 때 잘하는 골키퍼가 있으면 슛도 늘어나는 것처럼요.
연습은 언제 끝날까?
목표 지점이 하나 있어요.
판별자가 그림을 보고도 도무지 구별을 못 해서, 그냥 반반 찍는 수준이 되는 순간이에요. "음... 50 대 50인데?" 하고 손을 드는 거죠.
그렇다는 건 생성자가 만든 가짜가 진짜와 거의 똑같아졌다는 뜻이에요. 그때가 바로 화가가 완성된 순간이에요.
진짜 사람 같은 얼굴 만들기

위 얼굴을 한번 보세요. 실제로 존재하는 사람 같죠?
그런데 놀랍게도 이 세상에 없는 사람이에요. 컴퓨터가 만들어낸 얼굴이에요. 눈썹 한 올, 머리카락 한 가닥까지 전부 컴퓨터가 그린 거예요.
이런 얼굴을 만드는 GAN 중에 유명한 것이 스타일GAN(StyleGAN)이에요. 수많은 사람 초상 사진을 보고 배운 뒤, 새 얼굴을 만들어내요.

스타일GAN은 어떻게 생겼을까

그림이 복잡해 보이지만 겁먹지 마세요. 핵심은 이거예요.
스타일GAN은 얼굴을 한 번에 통째로 그리지 않아요. 대신 단계별로 그려요.
- 먼저 흐릿한 덩어리부터 잡아요. 얼굴 방향, 머리 모양 같은 큰 틀이에요.
- 다음에 눈, 코, 입을 얹어요.
- 마지막에 주근깨, 머리카락 결 같은 아주 작은 무늬를 얹어요.
사람이 그림 그릴 때랑 비슷해요. 밑그림부터 그리고, 형태를 잡고, 마지막에 세밀한 부분을 채우죠.
GAN은 어떤 가족에 속할까?

무언가를 만들어내는 인공지능은 GAN 말고도 여럿 있어요. 형제가 여러 명인 셈이죠.
모두 목표는 비슷해요. "진짜 데이터랑 최대한 닮은 것을 만들자."
다만 방법이 달라요. GAN은 두 편이 싸우게 해서 문제를 풀어요. 이 방법이 특이하고, 그래서 유명해졌어요.
GAN은 어디에 쓰일까?
- 흐릿한 사진 선명하게 — 오래된 사진의 잃어버린 부분을 채워요.
- 낙서를 그림으로 — 대충 그린 선을 멋진 풍경으로 바꿔요.
- 게임 배경 만들기 — 나무, 돌, 구름을 잔뜩 만들어내요.
- 흑백 사진에 색칠 — 옛날 사진에 색을 입혀요.
- 새로운 옷 디자인 — 아직 세상에 없는 옷 모양을 만들어요.
조심해야 할 점도 있어요
가짜를 진짜처럼 만드는 힘은 좋은 일에도, 나쁜 일에도 쓰일 수 있어요.
딥페이크라는 말을 들어봤나요? 어떤 사람의 얼굴을 다른 영상에 붙여서, 하지도 않은 말을 한 것처럼 꾸미는 거예요. 이런 건 사람을 속이고 상처를 줄 수 있어요.
그래서 우리에게 필요한 습관이 있어요.
- 인터넷에서 본 놀라운 사진이나 영상은 한 번 의심해 보기.
- 어디서 나온 자료인지 출처를 확인하기.
- 이상하면 어른에게 물어보기.
도구 자체는 착하지도 나쁘지도 않아요. 쓰는 사람의 마음이 중요해요.
왜 GAN이 대단한가요?
GAN 전에는, 컴퓨터에게 그림을 가르치려면 사람이 일일이 규칙을 알려줘야 했어요. "눈은 두 개, 코는 가운데, 색은 이렇게…" 끝이 없었죠.
GAN은 그 규칙을 사람이 알려주지 않아요. 대신 서로 겨루게 만들었어요. 그랬더니 컴퓨터가 스스로 규칙을 찾아냈어요.
바로 이 발상이 대단한 거예요. "가르치지 말고, 겨루게 하라."
세 문장 요약
- GAN에는 가짜를 만드는 생성자와 가짜를 잡는 판별자, 두 컴퓨터 두뇌가 있어요.
- 둘은 한쪽이 이기면 다른 쪽이 지는 게임을 끝없이 반복하며 함께 실력이 늘어요.
- 그 결과, 세상에 없던 진짜 같은 이미지가 태어나요. 놀랍지만 조심해서 써야 해요.
다음에 진짜 같은데 어쩐지 이상한 사진을 보면, 이렇게 생각해 보세요. "혹시 위조 화가와 감정사가 열심히 싸운 결과일까?"
출처
리깅 파이프라인 자동화 도구
반복 작업은 스크립트에게. 현업에서 쓰는 리깅 툴 모음.
리깅 도구 보기