1. What is GAN?
-
Generative Adversarial Network
-
대충 생성형 AI 를 생각하면 될 것 같다.
-
생성자 (Generator) 와 판별자 (Discriminator) 두가지로 구성되어있다.
- 여기서 적대적 생성 신경망 의 “적대적” 이라는 형용사를 (부사?) 설명할 수 있다.
-
생성자와 판별자는 경쟁적으로 학습을 진행한다.
-
생성자는 더 진짜 같은 데이터를 만들기 위해 학습하고, 판별자는 진짜와 가짜를 더 잘 구별하기 위해 학습한다.
-
최종적으로 생성자가 만든 데이터가 충분히 현실적이고, 판별자도 이를 정확히 판별할 수 있을 때 성능 향상이 완료된다.
fig1. GAN Flow - from IBM developer
-
GAN 으로 생성된 이미지들의 경우, 꽤 그럴싸한, 이미지를 생성한다.
- DALL-E 와 비슷한 급으로 괜찮은 이미지를 생성한다.
- 다만 DALL-E 와 다른점이라고 한다면?
- DALL-E 는 Variational Auto-encoder (VAE) 와 언어 모델 (Chat GPT) 를 결합하여 사용, 즉 텍스트 기반의 지시에 따라 이미지를 생성한다.
- GAN 은 현실적인 이미지, 텍스트, 음성 등을 생성하는데 주로 사용된다. 위에서 가볍게 이야기 한 것 처럼 현실적인 이미지들과 비슷한 이미지를 만들어내는것이 GAN 의 생성자의 역할이기 때문이다.
fig2. GAN generated images (노란색 박스들이 생성된 이미지) - from Generative Adversarial Nets
fig3. Tired, unhappy, exhausted, drunken Teletubbies - drawn by DALL-E
2. Generator
- 데이터 생성
- 생성자의 목적은 실제 데이터와 유사한 새로운 데이터를 생성하는 것
- 예를들어, 이미지 생성 작업에서는 실제 이미지처럼 보이는 새로운 이미지를 만든다
- 판별자 속이기
- 목적은 판별자를 속이는 것
- 판별자가 생성된 데이터를 실제 데이터로 작각하도록 만드는 것이 목표
2-1. 작동 방식
- 입력
- 데이터 변환
- 노이즈를 활용하여 (생성자 NN 에서 처리됨) 원하는 형태의 데이터 (e.g. 이미지를 생성) 로 변환함
- 학습 과정
- 노이즈를 업데이트 한다고 생각하면 좋을 듯
- 점차 현실적인 데이터를 생성하도록 발전함
2-2. 학습 메커니즘
- 적대적 학습
- 판별자가 생성된 데이터를 가짜로 판별할때 마다 생성자는 판별자를 속일 수 있는 더 나은 방법을 학습 (weight update)
- 손실 함수
- 판별자가 얼마나 잘 또는 못하는지에 대한 피드백을 바탕으로 손실 함수가 계산됨
fig4. training mechanism flow - from Geeks for geeks
3. Discriminator
- 진위 판별
- 목적은 입력받은 데이터가 실제 데이터인지, 생성자에 의해 만들어진 가짜 데이터인지를 판별하는 것
- 생성자(generator) 평가
- 판별자는 생성자의 성능을 간접적으로 평가함
- 생성자가 만든 데이터가 판별자에 의해 진짜로 오인될 정도로 현실적이면, 생성자는 잘 학습되고 있다고 할 수 있다.
3-1. 작동 방식
- 입력
- 판별자는 실제 데이터셋으로부터의 진짜 데이터와 생성자로부터의 가짜 데이터를 입력 받음
- 분류
- 판별자는 이 데이터가 진짜인지 가짜인지를 구별하고 분류함
- e.g. 진짜=1, 가짜=0
- 학습 과정
- 판별자는 생성자가 생성한 가짜 데이터와 실제 데이터를 구별하는 능력을 개선하기 위해 학습
3-2. 학습 메커니즘
- 적대적 학습
- 생성자가 더 현실적인 가짜 데이터를 생성할수록, 판별자는 이를 구별하는 능력을 학습함
- 손실 함수
4. 다양한 GAN
4-1. DCGAN (Deep Convolutional GAN)
4-2. CGAN (Conditional GAN)
- 추가적인 레이블이나 데이터를 입력으로 사용하여 특정 조건에 맞는 데이터를 생성
- e.g. 특정 숫자의 이미지를 생성하는 등 특정한 유형의 출력을 생성하는 데 사용
4-3. CycleGAN
- 두 가지의 다른 스타일 또는 도메인 간의 이미지 변환에 특화 된 GAN
- e.g. 여름 풍경을 겨울 풍경으로 바꾸거나, 말을 얼룩말로 변환하는 등의 작업
4-4. StyleGAN
- 고도로 세부적인 제어를 통해 매우 고품질의 사실적 이미지를 생성
- 특히 얼굴 이미지 생성에 특화됨
4-5. Pix2Pix
- 이미지 대 이미지 변환 작업에 사용됨
- e.g. 스케치를 실제 이미지로 변환 혹은 흑백 이미지를 컬러로 변환
4-6. WGAN (Wasserstein GAN)
- 기존의 GAN 의 학습 안정성 문제를 개선하기 위해 개발됨
- Wasserstein 손실 함수를 사용하여 생성자와 판별자 간의 경쟁을 더 안정적으로 만듬
4-7. BigGAN
- 대규모 데이터셋과 큰 모델을 사용하여 고해상도의 이미지 생성에 특화
- 큰 모델 사이즈와 많은 양의 데이터 덕분에 상세하고 사실적인 이미지 생성 가능
4-8. GANomaly
- Anomaly Detection 에 초점을 맞춘 GAN
- 정상 데이터만으로 학습하여 비정상적인 데이터를 탐지
Reference
https://arxiv.org/abs/1406.2661