[GAN] Introduction

zekim·2021년 5월 19일
0

[GAN]

목록 보기
1/1

Adversarial Network

2014년 Ian Goodfellow는 새로운 네트워크를 발표하였고, 그 네트워크의 이름은 GAN이였다. 기존에 제시되었던 다양한 네트워크들의 변형이 아닌 완전히 새로운 네트워크를 제시한 것이다.

자세히 살펴보면, 고양이인지 아닌지를 구별하는 네트워크가 존재한다고 하자. 판별하는 과정에서 고양이가 맞다면 "1", 아니라면 "0"의 값을 결과값으로 내뱉을 것이다. 또 다른 신경망은 여기서 조금 변화를 주어 단순 고양이 인지 아닌지를 판별하는 것이 아닌, 실제 고양이 이미지인지, 사람이 그린 고양이 이미지인지를 분류하는 네트워크라고 하자. 이전 예제와의 차이는 단지 입력의 차이이고, 두개의 다른 신경망은 서로 다른 두 이미지를 분류하도록 훈련할 것이다.
다음으로, 사람이 그린 고양이 이미지를 직접 찾아서 넣어주는 대신, 사람이 그린 것 같은 고양이 이미지를 생성해 주는 장치가 있다고 하자. 그렇게 된다면, 가짜 이미지를 준비하는 대신 장치를 이용해 가짜 이미지를 "생성"하면 되는 것이다.
가짜 이미지를 생성하는 과정에서 "정말 그럴듯한 가짜 이미지"를 생성하는 네트워크가 있다고 생각해보면, 진짜 이미지인지 가짜 이미지인지를 구별하는 네트워크는 분류가 상당히 어려워 질 것이다.

이러한 과정을 이용한 네트워크가 Ian Goodfellow가 제시한 GAN이다. 여기서 진짜같은 가짜 이미지를 생성하는 네트워크를 "Generator(생성기)", 진짜 고양이 이미지와 생성된 가짜 고양이 이미지를 분류하는 네트워크를 "Discriminator(판별기)"라고 부른다.

그렇다면 네트워크의 훈련 과정을 들여다보자.

먼저, Generator을 훈련하기 위해서는 적절한 손실함수의 정의가 필요하며, 다음과 같은 두가지의 조건을 만족해야 한다.

  • Discriminator을 속이게되면 Generator에 보상이 주어진다.
  • Discriminator을 속이지 못하면 Generator에 벌이 주어진다.

Generator의 성능이 좋지 못하다면, discriminator은 문제없이 진짜 이미지와 가짜 이미지를 구별할 것이다. 하지만, generator은 discriminator을 속이지 못하면 벌을 받게 되므로, 훈련을 진행할 수록 더욱 진짜같은 이미지를 생성하게 될 것이다. Generator의 성능이 좋아질 수록, discriminator의 성능도 증가 할 것이며, 결과적으로는 서로 적대적 관계로 경쟁하며 훈련이 진행된다.

이러한 구조가 바로 Generative Adversarial Network(GAN)인 것이다.

Training GAN

GAN은 generator와 discriminator 모두를 훈련하며, 훈련 과정에서 두 모델이 다음과 같은 과정으로 동시에 훈련된다.

  • Discriminator에 실제 이미지가 입력으로 들어왔을 때, 1.0의 출력값이 나와야하며 이를 바탕으로 discriminator가 업데이트 된다.
  • Discriminator에 generator로부터 생성된 가짜 이미지가 입력으로 들어왔을 때, 0.0의 출력값이 나와야하며 이를 바탕으로 discriminator가 업데이트 된다.
  • Generator의 학습을 위해 생성된 이미지를 discriminator에 통과시켜 1.0의 출력값이 나와야하며, 이를 바탕으로 generator만 학습시킨다.

이 훈련의 과정에 대해 설명을 덧붙이면, discriminator은 진짜와 가짜 이미지를 구별해야하기 때문에 진짜 이미지가 들어왔을 때 출력값이 1.0(True label), 가짜 이미지가 들어왔을 때 출력값이 0.0(False label)이 되어야한다. 하지만, generator은 가짜 이미지를 진짜 이미지로 속여야하므로, 생성된 가짜 이미지를 discriminator에 입력으로 들어갔을 때, 출력값이 1.0(True label)이 되어야 discriminator을 속인 것이기 때문에 출력이 1.0(True label)이 되도록 학습이 진행되게 되는 것이다.

이와같이 GAN의 구조는 적대적으로 훈련이 진행되며, generator와 discriminator의 성능의 균형이 이루어 있지 않는다면 훈련이 상당히 어렵다. 이러한 부분에 대한 연구가 활발히 이루어져 있어 관심이 있다면 찾아보면 좋을 것 같다.

0개의 댓글