딥러닝하면 떠오르는 CNN과 RNN은 데이터에 존재하는 패턴을 인식하는데 주로 사용 됩니다. 주어진 데이터가 연속적인 신호(음성, 영상, 심전도 등)의 형태일 때, CNN을 사용하여 시공간 축에 따라 존재하는 패턴을 찾아낼 수 있습니다. 반면에 주어진 데이터가 불연속적인 시퀀스(자연어 등)일 때, RNN을 이용하여 시간에 따라 변화하는 패턴을 찾아낼 수 있습니다. 하지만 진정한 인공지능을 구현하려면 주어진 패턴을 인식하는 것 만으로는 부족합니다. 우리 인류의 위대한 점은 바로 패턴을 창조하는데 있습니다. 고흐나 모네같은 화가, 베토벤이나 모짜르트 같은 작곡가 등을 그 예로 들 수 있습니다.
그렇다면 딥러닝으로 패턴을 만들어 낼 수 있을까요? 그에 대한 답이 바로 GAN(Generative Adversarial Networks) 입니다. 엄밀히 말하자면 고흐처럼 새로운 패턴(화풍)을 만드는 것이 아니라, 이미 존재하는 고흐의 패턴을 흉내내는 수준이지만 말입니다. 어쨋든 그 정도만으로도 충분히 흥미로운 일이니, 한번쯤 살펴볼 가치가 있겠습니다.
기본적인 아이디어 - Minimax Game
GAN의 시초라 할 수 있는 Ian J. Goodfellow의 논문을 보면 재미있는 비유를 들고 있습니다. 위조지폐를 만드는 위조지폐범과 위조지폐를 가려내려는 경찰이 있다고 가정합시다. 위조지폐범의 목적은 실제 지폐와 똑같은 위폐를 만들어서 경찰을 속이는 것이고, 경찰의 목적은 진폐와 위폐를 완벽히 구별해내는 것 입니다. 좀 더 명확히 말하자면 위조지폐범의 목적은 경찰이 진폐와 위폐를 구별하는 정확도를 최소화하는 것이고, 경찰의 목적은 그 정확도를 최대화하는 것이죠.
제3자인 우리는 패턴을 똑같이 만들어내는 것이 목적이니 최종적으로는 위조지폐범의 편에 서야합니다. 즉, 경찰의 정확도를 최소화해야 합니다. 하지만 위폐를 어설프게 만들다가 적발되면 큰일이니, 최대한 보수적인 가정을 합시다. 경찰이 위폐와 지폐를 완벽히 구분할 수 있다고 가정하는 것이죠. 위폐범에게는 최악의 상황(worst case)이 벌어진 겁니다. 그래도 위폐범은 나쁜 짓을 하려는 불굴의 의지(?)를 꺽지 않습니다. 결국 방법은 하나 뿐, 위폐를 진폐와 정말 똑같이 만들어내는 방법 뿐입니다. 수많은 시행착오 끝에 진폐와 똑같은 위폐를 만들어낸 우리의 위폐범! 결국 게임은 위폐범의 승리로 끝났습니다.
자, 이 시점에서 경찰이 진폐와 위폐를 구별하는 최소 확률은 얼마일까요? 우리의 불쌍한 경찰을 불러다가 테스트를 한다고 상상해 보죠. 우리는 도저히 위조 여부를 알수 없는 위폐와 진폐를 무작위하게 선택하여 한 번에 한장씩 경찰에게 보여줍니다. 경찰 입장에서는 여전히 위조 여부를 정확히 맞추려고 하겠죠. 이해를 쉽게하기 위해 세 가지 극단적인 경우를 생각해 봅시다.
- 무조건 위폐라고 답하는 경우 : 위폐와 지폐가 무작위하게 주어지므로, 테스트 횟수가 많아질 수록 정답을 맞힐 확률은 0.5에 가까워집니다.
- 무조건 진폐라고 답하는 경우 : 마찬가지 이유로 정답을 맞힐 확률은 0.5에 가까워집니다.
- 무작위하게 답하는 경우 : 지폐 한장의 위조 여부를 맞힐 확률이 0.5이므로, 테스트 전체의 확률도 0.5에 가까워집니다.
결국 경찰이 학습을 완벽히 마쳤다고 가정했을 때, 위폐범이 달성할 수 있는 최소의 판별 정확도는 0.5 입니다. 결국 우리의 목적은 완벽히 학습을 마친 경찰의 판별 정확도를 0.5로 최소화하는 것입니다. 이처럼 최악의 경우(max)를 가정했을 때, 손실(loss)을 최소화(min)하는 것을 수학적으로는 Minimax Game이라고 합니다. 위폐범과 경찰의 예에서 손실은 경찰의 판별 정확도이고, 최악의 경우는 경찰이 진폐와 위폐를 완벽히 구별하는 경우입니다.
GAN은 이처럼 패턴을 생성하는 문제를 Minimax Game의 형태로 접근합니다. 즉, 패턴을 생성하는 생성자(generator) 네트워크와 패턴의 진위 여부를 판별하는 판별자(discriminator) 네트워크가 존재할 때, 두 네트워크를 적대적(adversarial)으로 학습시키는 것입니다. 자, 이제 GAN의 배경이 되는 아이디어를 설명했으니 다음 포스트에서는 조금 더 구체적인 내용을 살펴보겠습니다.
댓글 없음:
댓글 쓰기