GAN

Younghwan Cha·2022년 9월 24일
0

ML

목록 보기
3/18

GAN 이란?

Generative Adverserial Network, 줄여서 GAN 이라고 불리운다.
단어 하나하나 보면, 생성 대립 네트워크다.
생성...대립 네트워크...? 듣기만해도 어지럽지만 한번 자세하게 보자.
GAN 에는 크게 두가지의 role 이 존재한다. 바로 Generator 와 Descriminator 이다.
Generator 란, 말 그대로 생성자이다. 무엇을 생성할까?
GAN 에서 원하는 결과물일 것이다. 사람, 동물, 사물 등 무엇이든 원하는 결과를 생성해 내는 생성자이다. 레오나르도 다빈치의 그림을 학습하고 생성하는 모델이라면, 생성자는 레오나르도 다빈치의 그림을 만들어 낼 것이다.
Descriminator 란? 생성자의 생성물을 보고 진짜인지 가짜인지 판별하는 판별자이다. 그러니까 정리해보자면, GAN 이란 생성자와 판별자의 대립 구조인 것 이다. 생성자는 진짜 같이 만들려고 노력하고, 판별자는 가짜를 판별해 내고 그에 대한 피드백을 전달해준다. 생성창과 방패, 뚫으려는 자와 막으려는 자, 속이려는 자와 잡으려는 자의 숨막히는 관계가 GAN 인 것이다.

모델 학습

  1. 먼저, Generator 와 Discriminator 를 연결 시킨다.
  2. 이를 통해서, Generator 가 Discriminator 를 속이는 능력을 향상 시키는 방향으로
    학습 시키게 된다.
    생성 모델은 모델을 통해 데이터의 분포를 학습하는 것을 목표로 한다.
    구체적으로 말하자면 데이터가 가지고 있는 latent space 를 학습한다고 한다.
  3. 결국 GAN 은 Generator 의 weight 를 업데이트 함으로써 Discriminator 가 fake img 를 보았을 때 "진짜" 라고 판단할 수 있는 이미지를 만드는 방향으로 학습하게 되는 것이다.
  4. 여기서 중요한 사실은, training 중간에 Discriminator 를 frozen(학습이 가능하지 않은 상태) 로 둔다는 것이다. 이는, GAN 을 학습하는 중간에 Discriminator 의 weight 가 업데이트 되지 않는 다는 것을 의미한다.

latent space

여기서, latent space 라는 개념은 무엇을 말하는 걸까?
latent 이란, 데이터가 가지고 있는 잠재적인 변수이다.
latent vector 는 한 이미지가 가지고 있는 잠재적인 벡터 형태이다.
그리고 이런 latent vector 들이 모여서 latent space 가 형성되게 된다.
Latent space에는 우리가 학습시킬 이미지들이 latent vector의 분포 형태로 존재하게 되고 우리는 모델을 통해서 이미지가 가지고 있는 latent의 분포를 학습하게 된다.

[ref]
https://dacon.io/competitions/official/235946/codeshare/5499

profile
개발 기록

0개의 댓글