AI 101
생성적 적대적 네트워크(GAN)란 무엇인가?

생성적 적대적 네트워크(GANs)는 새로운 데이터를 생성할 수 있는 신경망 아키텍처의 유형입니다. 학습된 패턴에 따라 새로운 데이터를 생성할 수 있습니다. GAN은 인간의 얼굴이나 다른 객체의 이미지 생성, 텍스트-이미지 번역, 이미지의 한 유형을 다른 유형으로 변환, 이미지의 해상도 향상(슈퍼 해상도) 등을 수행할 수 있습니다. GAN은 완전히 새로운 데이터를 생성할 수 있기 때문에 많은 최첨단 AI 시스템, 애플리케이션 및 연구의 선두에 있습니다. 그러나 GAN은 정확히 어떻게 작동할까요? GAN이 작동하는 방식과 주요 용도를 살펴보겠습니다.
생성 모델 및 GAN 정의
GAN은 생성 모델의 예입니다. 대부분의 AI 모델은 감독 및 비감독 모델의 두 가지 범주 중 하나로 나눌 수 있습니다. 감독 학습 모델은 일반적으로 입력의 다른 범주를 구별하거나 분류하는 데 사용됩니다. 반면에 비감독 모델은 일반적으로 데이터의 분포를 요약하는 데 사용되며 종종 데이터의 가우시안 분포를 학습합니다. 데이터의 분포를 학습하기 때문에 이 학습된 분포에서 샘플을 뽑아 새로운 데이터를 생성할 수 있습니다.
다른 생성 모델은 데이터를 생성하고 확률 분포를 계산하는 방법이 다릅니다. 예를 들어, 나이브 베이즈 모델은 입력 특성 및 생성 클래스에 대한 확률 분포를 계산하여 작동합니다. 나이브 베이즈 모델이 예측을 렌더링할 때 다양한 변수의 확률을 계산하고 결합하여 가장 가능성 있는 클래스를 결정합니다. 다른 비-딥 러닝 생성 모델에는 가우시안 혼합 모델 및 잠재 디리클레 할당(Latent Dirichlet Allocation, LDA)이 있습니다. 딥 러닝 기반 생성 모델에는 제한된 볼츠만 머신(Restricted Boltzmann Machines, RBMs), 변분 오토인코더(Variational Autoencoders, VAEs) 및 물론 GAN이 있습니다.
생성적 적대적 네트워크는 2014년 Ian Goodfellow에 의해 처음 제안되었으며, 2015년 Alec Redford 및 다른 연구자에 의해 개선되어 GAN에 대한 표준 아키텍처가 개발되었습니다. GAN은 실제로 두 개의 다른 네트워크가 결합된 것입니다. GAN은 두 개의 부분으로 구성됩니다. 생성 모델과 판별 모델, 즉 생성기와 판별기입니다.
GAN 아키텍처
생성적 적대적 네트워크는 생성기 모델과 판별기 모델이 결합된 아키텍처로 구성됩니다. 생성기 모델의 작업은 학습된 패턴을 기반으로 새로운 데이터 예제를 생성하는 것입니다. 판별기 모델의 작업은 이미지(이미지에 대해 훈련된 경우)를 분석하고 생성된/가짜 이미지인지 실제 이미지인지 결정하는 것입니다.

두 모델은 게임 이론적 방식으로 훈련됩니다. 생성기 모델의 목표는 판별기 모델을 속이는 이미지 생성입니다. 반면에 판별기 모델의 작업은 생성기 모델을 이겨내고 생성기 모델이 생성한 가짜 이미지를 감지하는 것입니다. 모델이 서로 경쟁하는 결과로 두 모델 모두 개선됩니다. 판별기는 실제 이미지와 생성된 이미지의 구분에 성공했는지 여부에 대한 피드백을 받습니다. 생성기는 판별기에 의해 거짓으로 표시된 이미지에 대한 정보를 받습니다. 두 모델 모두 훈련过程에서 개선되며, 실제 데이터와 거의 구별할 수 없는 가짜 데이터를 생성할 수 있는 생성 모델을 훈련하는 것이 목표입니다.
가우시안 분포가 생성된 후 생성 모델을 사용할 수 있습니다. 생성기 모델은 초기에 임의의 벡터를 받고 가우시안 분포를 기반으로 변환합니다. 즉, 벡터는 생성을 시드합니다. 모델이 훈련되면 벡터 공간은 데이터의 가우시안 분포의 압축된 버전 또는 표현이 됩니다. 데이터 분포의 압축된 버전은 잠재 공간 또는 잠재 변수라고 합니다. 나중에 GAN 모델은 잠재 공간 표현에서 점을 그리기 위해 생성 모델에 제공할 수 있습니다. 이는 훈련 데이터와 매우 유사한 새로운 데이터를 생성하는 데 사용할 수 있습니다.
판별기 모델은 전체 훈련 도메인의 예제를 받습니다. 이는 실제 데이터와 생성된 데이터 예제로 구성됩니다. 실제 예제는 훈련 데이터 세트에 포함되며 가짜 데이터는 생성기 모델에 의해 생성됩니다. 판별기 모델을 훈련하는 과정은 기본적인 이진 분류 모델 훈련과 정확히 동일합니다.
GAN 훈련 과정
가상 이미지 생성 작업에 대한 전체 훈련 과정을 살펴보겠습니다.
먼저 GAN은 실제 이미지로 구성된 훈련 데이터 세트를 사용하여 훈련됩니다. 이는 판별기 모델이 생성된 이미지와 실제 이미지를 구별하도록 설정합니다. 또한 생성기가 새로운 데이터를 생성하는 데 사용하는 데이터 분포를 생성합니다.
생성기는 임의의 숫자 벡터를 받고 가우시안 분포를 기반으로 변환하여 이미지로 반환합니다. 생성된 이미지와 훈련 데이터 세트의 일부 실제 이미지는 판별기 모델에 제공됩니다. 판별기는 받은 이미지에 대해 확률적 예측을 렌더링하며 0과 1 사이의 값을 출력합니다. 여기서 1은 일반적으로 실제 이미지이고 0은 가짜 이미지입니다.

이중 피드백 루프가 작동합니다. 판별기는 이미지의 실제값을 받고 생성기는 판별기에 의해 수행되는 성능에 대한 피드백을 받습니다.
생성기 모델과 판별기 모델은 서로 게임을 합니다. 게임 이론적 방식으로 훈련됩니다. 생성기 모델의 목표는 판별기 모델을 속이는 이미지 생성입니다. 반면에 판별기 모델의 목표는 생성기 모델을 이겨내고 생성기 모델이 생성한 가짜 이미지를 감지하는 것입니다. 판별기 모델이 실제 이미지와 가짜 이미지를 구별할 수 있을 때 생성기 모델의 매개변수는 업데이트되지 않습니다. 그러나 판별기 모델이 실제 이미지와 가짜 이미지를 구별할 수 없을 때 생성기 모델의 매개변수는 업데이트됩니다. 반대로 생성기 모델이 판별기 모델을 속일 수 있을 때 생성기 모델의 매개변수는 업데이트되지 않습니다. 생성기 모델이 판별기 모델을 속일 수 없을 때 생성기 모델의 매개변수는 업데이트됩니다.
이상적으로 생성기는 실제 이미지와 구별할 수 없을 정도로 실제 이미지와 매우 유사한 데이터를 생성할 수 있습니다. 즉, 판별기는 실제 이미지와 가짜 이미지를 항상 50%의 확률로 렌더링합니다. 생성된 이미지는 실제 이미지와 구별할 수 없을 것입니다. 실제로 GAN은 이 지점에 도달하지 못할 수 있습니다. 그러나 생성 모델은 완벽하게 유사한 이미지를 생성할 필요는 없습니다. GAN이 사용되는 많은 작업에 유용할 수 있습니다.
GAN 애플리케이션
GAN은 이미지 생성 및 이미지 구성 요소 생성과 관련된 여러 애플리케이션을 가지고 있습니다. GAN은 필요한 이미지 데이터가 부족하거나 제한된 경우에 사용됩니다. GAN을 사용하는 몇 가지 일반적인 사용 사례를 살펴보겠습니다.
데이터셋에 대한 새로운 예제 생성
GAN은 단순한 이미지 데이터셋에 대한 새로운 예제를 생성하는 데 사용할 수 있습니다. 훈련 예제가 몇 개만 있고 더 많은 예제가 필요할 때 GAN을 사용하여 새로운 훈련 데이터를 생성할 수 있습니다.
고유한 인간 얼굴 생성

이 여성은 실제로 존재하지 않습니다. 이 이미지는 StyleGAN에 의해 생성되었습니다. 사진: Owlsmcgee via Wikimedia Commons, Public Domain (https://commons.wikimedia.org/wiki/File:Woman_1.jpg)






