본문 바로가기
Personal Study/Model

[생성 신경망] 와서스테인 GAN (Wasserstein GAN, WGAN) - 이론

by muns91 2024. 4. 19.
WGAN (Wasserstein GAN)

 

 이번 시간에는 DCGAN에 이어서 WGAN (Wasserstein GAN)에 대해서 알아보도록 하겠습니다. WGAN은 기존 GAN의 몇 가지 문제점을 개선하기 위해 설계된 신경망 모델입니다. 이 모델은 Wasserstein 거리를 사용하여 두 분포 간의 거리를 측정합니다. 이 새로운 접근 방식은 GAN의 학습 과정을 더 안정적으로 만들고 더 높은 품질의 결과를 생성할 수 있게 하였습니다. 

 

Wasserstein GAN 논문

 

 

 그럼, 우선적으로 와서스테인 GAN에 대해서 살펴보기 전에, 기존의 GAN에서 발생하는 문제점들을 살펴보도록 하겠습니다. GAN은 생성 모델링 분야에서 커다란 혁신이지만 훈련이 어렵기로 잘 알려진 모델입니다. 그만큼 파라미터 조정과 모델에 구조에 민감하다는 것입니다. 아래의 상황들은 GAN 훈련을 하면서 마주하게 될 문제되는 상황들에 대해 설명하겠습니다.

 

기존 GAN에서 나타나는 문제점

1. 판별자가 생성자보다 뛰어난 경우

 GAN 모델에서는 판별자와 생성자가 서로 경쟁하면서 학습합니다. 판별자의 목표는 진짜 데이터와 생성자가 만든 가까 데이터를 구분하는 것이고 생성자의 목표는 판별자를 속여 진짜처럼 보이는 데이터를 만드는 것입니다. 하지만 이 과정에서 판별자가 너무 뛰어나면 문제가 발생하게 됩니다. 

 

 판별자가 너무 강해지면, 진짜와 가짜를 너무 쉽게 구별하기 때문에 생성자에게 돌아가는 피드백이 매우 약해집니다. 이 상황에서 생성자는 자신이 어떻게 개선해야 할지 충분한 정보를 얻지 못하게 됩니다. 결과적으로 생성자는 더 이상 좋은 품질의 데이터를 만들어내는 방법을 배우지 못하고 학습이 정체 될 수 있습니다. 

 

 최악의 경우에는 판별자가 완벽하게 진짜와 가짜를 구분할 수 있게 됨으로써, 생성자로부터 받는 그레디언트가 사라지게 됩니다. 이는 판별자가 모든 가짜 이미지에 대해 완벽한 판별을 하기 때문에 생성자는 어떻게 하면 진짜 같은 이미지를 만들 수 있는지에 대한 유의미한 정보를 전혀 받지 못하게 됩니다. 결국 학습이 전혀 진행되지 않게 되는 상황에 이를 수 있습니다. 

 

2. 생성자가 판별자보다 뛰어난 경우

 반대로 판별자가 강력하지 않은 경우, 생성자가 거의 동일한 몇 개의 이미지(Mode)로 판별자를 쉽게 속이는 방법을 찾습니다. 이를 모드 붕괴(Mode Collapse)라고 합니다.

 

 예를 들어, 생성자가 판별자를 속이기 위해 하나의 이미지만 계속 생성한다고 가정했을 때, 이 경우 생성자는 이 하나의 이미지에 잠재 공간의 모든 포인트를 매핑하게 됩니다. 그리고 손실 함수의 기울기가 0에 가까워지면서 이 상태에서 벗어나지 못하게 됩니다(Collapse).

 

 이렇게 되면 판별자를 다시 훈련시켜 이 하나의 이미지를 속이지 못하게 해도, 생성자는 판별자를 속이는 또 다른 샘플을 쉽게 찾을 수 있습니다. 왜냐하면 생성자가 이미 입력에 대해서 무감각해졌기 때문에 다양한 출력을 만들 이유가 없기 때문입니다. 

 

3. 유용하지 않은 손실

 딥러닝 모델은 손실 함수를 최소화하는 방향으로 학습합니다. 그래서 우리는 자연스럽게 생성자의 손실이 작을수록 생성된 이미지의 품질이 더 좋을 것이라고 생각할 수 있습니다. 하지만 GAN에서는 이 관계가 성립하지 않을 수 있습니다. 왜냐하면 생성자는 현재 판별자에 의해서만 평가되고 판별자는 계속 향상되기 때문입니다. 

 

 다시 말해, 생성자가 현재 판별자를 속이는 데 성공했다고 해서 그 이미지가 실제로 좋은 품질이라고 볼 수 없습니다. 왜냐하면 판별자가 계속 발전하면서 생성자가 속이기 어려워질 수 있기 때문입니다. 따라서 GAN 훈련 과정의 다른 지점에서 평가된 생성자의 손실을 비교하는 것은 어렵습니다. 이처럼 생성자의 손실과 이미지 품질 사이의 연관성 부족으로 인해 GAN 훈련 과정을 모니터링하기가 어려워집니다. 

 


WGAN 소개

 그럼 지금부터는 본격적으로 WGAN에 대해서 알아보도록 하겠습니다. WGAN은 2017년에 아르좁스키 등에 의해 소개된 모델로서 안정적인 GAN 훈련을 돕는 방식 중 하나입니다. 논문에 따라 WGAN에서는 다음과 같이 GAN에 2가지 속성이 추가된 것을 제시하였습니다. 

  • 생성자가 수렴하는 것과 샘플의 품질을 연관 짓는 의미 있는 손실 측정 방법
  • 최적화 과정의 안정적 향상

 따라서 해당 모델에서는 판별자와 생성자를 위해 와서스테인 손실 함수 (Wasserstein Loss Function)을 소개합니다. 해당 손실 함수는 기존의 GAN에서 사용하는 이진 크로스 엔트로피 방식 대신에 해당 손실함수를 사용하면서 GAN을 더 안정적으로 수렴할 수 있게 하였습니다. 

 

그럼, 다음에는 GAN에서 WGAN으로 변형되면서 달라진 몇 가지를 살펴보도록 하겠습니다. 

 

GAN과 WGAN의 차이

  1. 손실 함수 (Loss Function)
    • GAN : 실제 데이터와 생성된 데이터 사이의 분포 차이를 최소화하는 것이 목표입니다. 이를 위해 판별자는 실제 데이터와 생성된 데이터를 구분하는 이진 분류 문제를 풀게 됩니다.
    • WGAN : Wasserstein Distance를 손실함수로 사용합니다. Wasserstein Distance는 두 분포 사이의 거리를 측정하는 방법으로 GAN보다 더 안정적인 학습이 가능해졌습니다. 
  2. 판별자의 역할
    • GAN : 판별자는 실제 데이터와 생성된 데이터를 구분하는 이진 분류기 역할을 합니다. 
    • WGAN : 판벌자는 실제 데이터와 생성된 데이터 사이의 Wasserstein Distance를 최대화하는 역할을 합니다. 이를 통해 생성자가 더 나은 데이터를 생성할 수 있도록 학습됩니다. 
  3. 학습의 안정성
    • GAN : 학습과정에서 불안정성으로 인해 위에서 언급했던 학습의 정체 및 모드 붕괴 등의 문제점들이 발생합니다. 
    • Wasserstein Distance를 사용하여 더 안정적인 학습이 가능합니다. 판별자가 Lipschitz 연속성을 만족하도록 제안하여 학습 과정의 안정성을 높입니다.

 

마무리 

 여기까지 WGAN에 대해 알아보았습니다. 논문과 참고한 서적에서는 손실 함수 그리고 립시츠에 대한 수식적인 설명이 적용되어 있는 데, 이 부분에 대해서는 다음 실습을 통해서 좀 더 자세히 살펴보도록 하겠습니다. 그러면서 저도 공부를 함과 동시에 새로운 모델 구현에 대한 작성을 시도해보도록 하겠습니다. 그럼, 이번 글은 여기서 마치도록 하겠습니다. 

 

참고 

1. 논문 : https://arxiv.org/pdf/1701.07875.pdf

2. 만들면서 배우는 생성 AI : https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=324278784

 

만들면서 배우는 생성 AI

딥러닝 기초부터 최신 생성 AI 모델까지 설명합니다. 텐서플로와 케라스를 사용해 변이형 오토인코더(VAE), 생성적 적대 신경망(GAN), 트랜스포머, 노멀라이징 플로 모델, 에너지 기반 모델, 잡음

www.aladin.co.kr

 

실습

1. WGAN :

2024.04.20 - [Personal Study/Model] - [생성 신경망] WGAN 모델 구현

 

[생성 신경망] WGAN 모델 구현

Wasserstein GAN (WGAN) 실습 지난 글에서는 WGAN에 대한 간단한 이론을 살펴보았습니다. 그럼 이론을 살펴보았으니 이제는 코드를 보면서 구현 실습을 하도록 하겠습니다. 코드는 글 맨 하단에서 확인

muns-da2.tistory.com