GAN

앵우·2024년 2월 5일
post-thumbnail

GAN이란?


GAN(Generative Adversarial Networks)

적대적 생성 신경망

  • Generator 생성자 + Discriminator 판별자
  • 생정자는 가짜 데이터를 생성하고, 판별자는 생성된 데이터가 진짜인지 가짜인지 판별하는 역할을 합니다.

ex) Generator-지폐 위조범, Discriminator-경찰

지폐 위조범이 지폐를 위조하면 경찰은 그 위조지폐가 범죄에 사용되는 것을 막기 위해 그 위조 지폐를 판별합니다.

GAN의 학습 과정


생성자와 판별자가 서로 대립적으로 학습해가며 성능을 점차 개선

STEP 1

노이즈 z가 생성자 함수 G에 들어가 G(z)라는 가짜 데이터를 만들어내고, 판별자 함수이 D에 이 가짜 데이터를 넣어 D(G(z)) 값이 0과 1 사이의 확률값으로 나옵니다. 그리고 이때 이 확률값은 이 데이터가 진짜일 확률을 나타냅니다.

STEP 2

판별자 D는 이 D(G(z))값을 가짜 0으로 판별하고자 하고, 생성자 G는 이 D(G(z))값을 진짜 1이 나오도록 정교한 가짜 데이터를 만들어 판별자를 속이려는 목적을 가지고 있습니다.

STEP 3

진짜 데이터 x에 대해서 판별자 D가 D(x)가 진짜 1의 값을 가지도록 판별하는 것을 목적으로 합니다.

GAN의 한계


1. Model Collapse

판별자를 속이는 것에만 목적을 두어서 실제 데이터와 유사한 데이터가 아닌 이상한 데이터가 생성되는 현상

ex) mnist 숫자 데이터로 예시를 들면, 2도 아니고 3도 아닌 2와 3이 합쳐진 형태의 이상한 데이터 생성

2. 랜덤 생성

사용자가 원하는 데이터가 아닌 랜덤의 데이터가 생성됩니다.

GAN의 발전


1. DCGAN

GAN과 CNN을 합친 모델

처음에 입력값으로 넣어주는 각각의 이미지를 생성하는 노이즈 벡터들끼리 벡터 연산이 가능한 모델

Example 1
안경 쓴 남자 z1 - 남자 이미지 z2 + 여자 이미지 z3 = 안경 쓴 여자 이미지 z4

Example 2
오른쪽을 보고 있는 사진 z1과 왼쪽을 바라보는 z2를 통해 중앙을 바라보는 중간 이미지 생성

2. CGAN

Conditional GAN

loss 함수를 통해 조건을 부여하여 사용자가 원하는 이미지 생성

ex)

0을 만들고 싶으면 y에 벡터 10000...을
1을 만들고 싶으면 y에 벡터 01000...을
.
.

3. LSGAN

Lest Squared GAN

  • loss를 Least Squared로 변경한 것
  • loss만 변경했을 뿐인데 매우 선명한 결과
  • 네트워크 구조는 DCGAN을 비슷하게 가져 감

일반적으로는 loss를 sigmoid cross-entropy를 사용합니다. 하지만 아는 갈수록 loss가 작아져 적절한 loss 전파가 불가능합니다. loss를 회귀분석에 적용되는 최소자승법인 Least Squared 즉, MSE로 바꾸면 떨어진 것에 비례해서 loss의 양을 잘 조절할 수 있습니다.

4. CycleGAN

Style Transfer

X 도메인에서 Y 도메인으로 바꾸는 과정

X와 X햇의 거리 차이 최소화

발전

  • Deep Photo Transfer
    • 낮의 이미지를 밤의 이미지로 바꿔줌
  • Style GAN

    • 어린아이 사진을 넣으면 사람의 어린 아이 버전을 만들어줌
  • Star GAN

    • 금발의 특징을 선택하면 금발로 바꿔줌
    • 성별을 선택해서 바꿔줌
    • 특징을 선택해 사진을 변형

5. CAN

Creative Adversarial Networks

일반적으로 GAN은 창의성을 자극할만한 장치나 Loss가 없습니다. 그래서 우리가 가지고 있는 데이터의 분포를 따르는 새로운 데이터를 생성하게 됩니다.

CAN은 판별자가 어떤 스타일의 예술품인지를 헷갈리게 해서 스타일들의 중간에 creative space를 생성합니다. 일반적인 바닐라 GAN에서 판별자가 하는 역할인 가짜 이미지 판별에 추가로 어떤 스타일에 속하는 이미지인지까지 판별하는 역할을 부여하고, 생성자는 그 판별자를 속이는 것을 목적으로 합니다. 이를 위해 어떤 스타일인지 헷갈리게 하기 위해서 CAN에서는 크로스 엔트로피 로스를 사용해서 특정 스타일, 클래스일 확률을 높게 예측할 때 패널티를 부여하게 됩니다.


느낀 점

화질 복구 프로젝트 해보고 싶다. GAN 기반으로 많은 연구를 할 수 있는 주제인 것 같다.

2개의 댓글

comment-user-thumbnail
2024년 2월 10일

어려운 AI 분야에 대해서 알기 쉽게 설명해주신 것 같아요~~ 잘 읽었습니다!

1개의 답글