GAN 기초

Jayce_97·2024년 5월 21일
0

스터디

목록 보기
4/10

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)

  • CNN을 생성자와 판별자에 적용한 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

profile
AI (ML/DL) 학습

0개의 댓글