인공지능 생성모델을 배우다 보면 2014년에 나온 GAN과 VAE 모델을 기점으로 생성 모델이 한 차례 많은 발전을 이룬 것을 확인할 수 있다. GAN은 정말 신박한 아이디어(두 모델의 경쟁/평가)를 바탕으로 구현되었으며 StarGAN, CycleGAN, StyleGAN 등 여러 변형 모델들과 함께 우리가 더욱 재밌는 프로젝트를 진행할 수 있게 만들었다.
하지만, GAN 모델이 무작정 장점만을 가지고 있는 것은 아니다. 최근 Diffusion 방법론이 등장하며 GAN의 문제점을 많이 언급, 개선한 점에 대해 서술을 하고 있는데 오늘은 이러한 GAN 모델의 단점에 대해 알아보려 한다.
GAN 모델의 문제점은 크게 2가지로 나눌 수 있다.
우선 첫번째는 Mode Collapse이다.
여기서 Mode는 최빈값(가장 많이 나온 값)을 의미하며 말 그대로 최빈값이 없어진다는 것을 의미한다. 풀어 설명하면 우리가 일반적으로 분류 문제를 풀때 10개의 Class가 있을 때 Feature map(또는 Latent Vector)을 시각화 했을 때 크게 10개의 파트로 벡터들이 모여있는 것을 확인할 수가 있다(t-SNE와 같은 시각화를 사용).
여기서 뭉쳐저 있는 그룹을 Mode라고 생각했을 때 Mode Collapse는 이러한 그룹들 중 몇개가 사라진다는 것을 의미한다. 즉, 알아내야 할 몇개의 Class에 대한 정보가 소실된다고 볼 수 있다.
이러한 문제는 GAN 모델에서 사용되는 Generator와 Discriminator가 본래의 정답분포를 따라가는 것이 아니라 서로를 속이는 것에 목적을 두어 서로 반대되는 분포를 가지게 되어 발생한다. Generator와 Discriminator를 따로 학습시키기 때문에 상호작용이 이루어지지 않아 위와 같은 문제가 생기게 되고 결국 제한된 Class에 대한 정보만 남게 되는 문제점을 갖는다.
두번째는 학습의 불안정성(Train Instability)이다.
어떤 이미지를 새롭게 만드는 것과 이 이미지가 잘 만들어졌는지를 판별하는 것 중 어떤 Task가 더 쉬울까?
일반적으로 우리는 새로운 이미지를 만드는 것이 더 어렵다고 할 것이다. 인공지능 모델 또한 그렇다. Generator의 역할보다 Discriminator의 역할이 더 쉽기 때문에 학습이 더 잘 이루어지고 그렇기에 Generator의 Gradient가 Vanishing되는 문제가 발생할 수 있다.
물론 파라미터 조절로 완화시킬 수는 있겠지만 그만큼 GAN 학습이 쉽지 않다는 것을 의미하며 모델 Parameter가 진동(osciliate)하기 때문에 GAN의 학습이 불안전하다! 라는 문제점을 가진다.
그렇다면 최근에 등장한 Diffusion 모델은 이러한 GAN의 문제점을 어떻게 극복하였다는 것일까?
사실 문제점을 극복한 것은 아니고 방법론이 다르기 때문에 GAN 모델이 가지는 문제점이 Diffusion 기반의 학습 방법에서 발생하지 않는다고 보는게 맞다.
그 이유는 두 가지로 정리해 보았다.
1. 명확한 확률 모델링 : Diffusion계열의 모델은 기본적으로 AutoEncoder를 Denoise하는 형태를 띄며 Likelihood 기반의 모델이기에 Loss Function이 잘 정의되어 있어 안정적인 학습이 가능하기 때문이다.
2. Diffusion Process : 여러 Step을 거쳐 점진적으로 노이즈를 추가하고 제거하는 과정을 거치기 때문에 Mode를 잘 파악할 수 있기 때문이다.
원래부터도 VAE 모델이 수학적으로 Loss Function이 잘 구현되어 있고 해당 모델의 아이디어를 차용한 Diffusion 모델들이 좋은 성능을 내고 있기 때문에 위와 같은 설명이 가능하다고 생각한다. 비록 GAN 모델이 현재 Diffusion 방법론의 등장이후 살짝 밀린 느낌이 있지만, 좋은 아이디어로 시작된 아키텍처인만큼 여러 방법론의 변형과 결합으로 GAN 모델이 충분히 더 좋은 성능을 낼 수 있을거라 생각한다.
참고자료
https://dl-ai.blogspot.com/2017/08/gan-problems.html
작성한 글은 제가 공부해온 내용을 바탕으로 추론한 개인적인 생각이 들어가 있습니다. 잘못 된 점이 있다면 언제든 수정하여 알려주시면 감사하겠습니다.
'AI & CS 지식 > 인공지능 Q&A' 카테고리의 다른 글
[AI Q&A] Attention이란? (0) | 2024.08.16 |
---|---|
[AI Q&A] Inductive Bias란 무엇일까? (1) | 2024.08.13 |
[AI Q&A] Computer Vision 모델의 Input 해상도 크기는 왜 작을까? (0) | 2024.04.30 |
댓글