2017년 8월 19일 토요일

[GAN] GAN이 풀어야 할 과제들

 지금까지 GAN의 원리를 살펴봤습니다. 작동 원리를 알고나니 GAN으로 무엇이든 만들어낼 수 있을 것 같은 생각이 듭니다. 하지만 세상에 완벽한 것은 없는 법. GAN에도 아직 해결해야 할 문제점들이 있습니다. 이제부터 그 문제점들을 살펴보겠습니다.
판별자 - 나를 믿지 말아요
 앞에서 GAN은 패턴을 만들어내는 문제를 Minimax Game 으로 접근한다고 했습니다. 이미 설명했듯이 Minimax Game은 최악(최대 손실)의 상황에서 손실을 최소화하는 게임입니다. 그리고 GAN에서의 최악의 상황은 판별자가 진짜 데이터의 분포를 완벽히 학습한 상태입니다. 그러나 여기서 모순이 생깁니다. 학습을 마치기 전에는 완벽한 판별자를 얻을 수 없기때문에, GAN이 해결하는 문제가 Minimax Game 이라는 가정이 애초에 성립하지 않는 것이죠.
 GAN의 학습 과정에서 모델이 수렴하지 않거나 진동하는 이유 중의 하나가 바로 이것입니다. 판별자가 안정적으로 최적해로 수렴한다면 문제가 없지만, 그렇지 않을 경우 생성자도 최적의 해로 수렴하지 않는 것은 당연한 일입니다. 생성자를 지도하는 '선생님'의 역할을 하는 판별자의 능력이 떨어지면 생성자의 능력도 떨어질 수 밖에 없습니다.
끝없는 숨바꼭질
 GAN의 학습 과정에서 판별자와 생성자를 번갈아가며 학습시킨다고 설명했습니다. 이때문에 또 다른 문제가 발생할 수 있습니다. 특정 학습 이터레이션에서 판별자의 학습과 생성자의 학습이 서로를 상쇄할 수 있다는 말입니다. 이를 데이터 분포의 측면에서 그림으로 단순화하면 다음과 같습니다.
 이처럼 판별자와 생성자가 서로를 속고 속이며 제자리를 맴돈다면 양쪽 모두 전역해로 수렴할 수 없게 됩니다. 이런 상황을 일컬어 모델이 진동(oscillation)한다고 합니다.
Mode collapsing - 나는 한 놈만 팬다
 위에서 설명한 문제점들이 얽히고 설켜서 나타나는 대표적인 현상이 바로 mode collapsing 입니다. 특히나 학습 데이터의 분포가 multi-modal 한 경우에 그러한 현상이 두드러질 수 있습니다. 실제로 많은 데이터가 multi-modal 이기에 문제가 되는 것입니다.
 mode collapsing이 무엇인지 이해하려면, 우선 mode 가 무엇인지 이해해야 합니다. 통계를 조금이라도 공부한 분은 알겠지만, 통계학에서 mode는 최빈값, 즉 가장 빈도가 높은 값을 말합니다. 지금까지 다뤄온 데이터의 확률밀도함수에서는 색이 가장 진한 부분, 즉 밀도가 가장 높은 부분을 말합니다. 확률밀도함수를 등고선에 비유하자면 mode는 산봉우리 부분에 해당한다고 할 수 있습니다.
 그렇다면 multi-modal 분포란 무엇일까요? 말그대로 mode가 여러개 존재한다는 말입니다. 손으로 쓴 숫자 이미지(MNIST)를 예로 들면, 각각의 숫자 10개가 mode에 해당할 것입니다. 설명을 쉽게하기 위해 0~3까지 네개의 숫자만 존재한다고 가정합시다. X, Y를 임의의 특징 벡터라고 한다면 MNIST 데이터의 분포는 아래와 같이 나타낼 수 있습니다.
 설명한대로 mode가 여러개인 분포입니다. 문제는 생성자가 주어진 입력을 네개의 mode 중 하나로만 치우쳐서 변환시킬 때 벌어집니다. 말그대로 mode의 충돌, mode collapsing이 발생한 것입니다.
 실제로 MNIST 데이터세트를 이용하여 GAN을 학습시키다 보면 같은 숫자만 계속해서 생성되는 현상을 볼 수 있는데, 이것이 바로 mode collapsing이 발생한 것입니다. 생성자 입장에서는 어떤 숫자를 만들든 판별자만 속이면 되기때문에 게임의 목적은 달성했다고 말할 수 있고, 판별자 입장에서도 잘못된 판단이라고 말할 수 없습니다.
 이러한 현상은 위에서 언급했듯이 판별자가 완벽하지 못하거나, 모델이 진동할 때, 혹은 두가지 문제점이 동시에 발생하는 경우 심하게 나타납니다. 생성자가 '0'만 계속 생성하다가 판별자가 진동하면서 '1'의 분포로 이동하면, 생성자는 다시 '1'만 계속해서 생성합니다. 그리고 이러한 악순환이 다른 숫자들에 대해서 반복되는 것이죠. 결과적으로 생성자가 학습 데이터 전체의 분포를 학습하지 못하고 그 중 일부분만 배우게 되는 것입니다. 아래 그림에서 그 예를 볼 수 있습니다.
 결국 생성자와 판별자 사이의 능력에 적절한 균형을 이루면서, 두 네트워크가 안정적으로 전역해로 수렴하도록 만드는 것이 GAN이 해결해야 할 숙제입니다. 이미 이를 해결하기 위해 많은 모델이 제안되었습니다. 이러한 모델들에 대해서는 앞으로 차차 살펴보도록 하겠습니다.

댓글 5개:

  1. 정말 좋은글 잘봤습니다 이해가 정말 잘되네요
    그런데 multi-modal이라는 뜻이 저렇게도 쓰이는건가요?
    비디오 데이터가 들어온다면 input으로 비디오 프레임 사진들과 그리고 음성 두가지 모두를 사용할때 multi-modal learning으로 알고있는데요 무슨 차이가있는건가요?

    답글삭제
  2. 완벼크한 설명입니다 책한권쓰시죠

    답글삭제
  3. 포스팅 글들 쭉 봤는데 정말 글 잘 쓰시네요. 요즘은 활동하는 곳 없으신가요

    답글삭제
  4. 안녕하세요?
    저는 인공지능 스타트업에 다니는 정승환이라고 합니다.
    블로그의 내용들 정말 잘 보았습니다. 소중한 지식의 나눔, 감사드립니다.

    관련해서 간단하게 제안드릴 내용(온라인 강의)이 있어서
    메일로 연락드리고 싶습니다.
    기존 방식과는 다르게 인공지능으로 쉽고 빠르게
    지식을 전달할 수 있습니다.

    정말 바쁘시겠지만,
    메일 한 번 이야기 나누어 볼 수 있을까요?

    제 메일은
    hwan@lionrocket.ai
    입니다. 회신주시면, 제안내용과 함께 꼭 설명드리고 싶습니다.

    좋은 하루 되세요 :)
    정승환 드림

    답글삭제
  5. 좋은 글 감사합니다. 고수 네요.

    답글삭제

[GAN] GAN이 풀어야 할 과제들

 지금까지 GAN의 원리를 살펴봤습니다. 작동 원리를 알고나니 GAN으로 무엇이든 만들어낼 수 있을 것 같은 생각이 듭니다. 하지만 세상에 완벽한 것은 없는 법. GAN에도 아직 해결해야 할 문제점들이 있습니다. 이제부터 그 문제점들을 살펴보겠습니다...