AI 기초

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

mm
Unite.AI를 Google의 선호 소스에 추가

생성적 적대적 네트워크(GANs)는 새로운 데이터를 생성하는 패턴을 학습하는 신경망 아키텍처의 유형입니다. GANs는 인간의 얼굴이나 다른 객체의 이미지, 텍스트-이미지 번역, 이미지의 해상도를 높이는 것(슈퍼 리졸루션) 등 다양한 응용 분야에서 사용할 수 있습니다. GANs는 완전히 새로운 데이터를 생성할 수 있기 때문에 많은 최신 AI 시스템, 애플리케이션 및 연구의 선두에 있습니다. 그러나 GANs는 정확히 어떻게 작동하는지 살펴보겠습니다.

생성적 모델과 GANs의 정의

GAN은 생성적 모델의 예입니다. 대부분의 AI 모델은 감독 학습 모델과 비감독 학습 모델의 두 가지 범주로 나눌 수 있습니다. 감독 학습 모델은 일반적으로 입력의 다른 범주를 구별하거나 분류하는 데 사용됩니다. 반면에 비감독 학습 모델은 일반적으로 데이터의 분포를 요약하는 데 사용되며 종종 가우시안 분포를 학습합니다. 데이터의 분포를 학습하기 때문에 새로운 데이터를 생성할 수 있습니다.

다른 생성적 모델은 데이터를 생성하고 확률 분포를 계산하는 다양한 방법을 가지고 있습니다. 예를 들어, 나이브 베이즈 모델은 입력 특성과 생성 클래스에 대한 확률 분포를 계산하여 작동합니다. 나이브 베이즈 모델이 예측을 렌더링할 때, 다양한 변수의 확률을 계산하고 결합하여 가장 가능성 있는 클래스를 결정합니다. 다른 비-딥 러닝 생성 모델에는 가우시안 믹스처 모델과 잠재 디리클레 할당(LDA)이 있습니다. 딥 러닝 기반 생성 모델에는 제한된 볼츠만 머신(RBMs), 변분 오토인코더(VAEs) 및 GANs가 있습니다.

생성적 적대적 네트워크는 2014년 Ian Goodfellow에 의해 처음 제안되었으며, 2015년 Alec Redford와 다른 연구자에 의해 개선되어 표준화된 GAN 아키텍처가 개발되었습니다. GANs는 실제로 두 개의 다른 네트워크가 결합된 것입니다. GANs는 생성 모델과 판별 모델로 구성되어 있습니다.

GAN 아키텍처

생성적 적대적 네트워크는 생성 모델과 판별 모델이 결합된 아키텍처로 구성됩니다. 생성 모델의 역할은 학습 데이터에서 학습한 패턴을 기반으로 새로운 데이터 예제를 생성하는 것입니다. 판별 모델의 역할은 이미지(이미지에 대한 훈련을 가정할 때)를 분석하고 이미지의 본질을 판단하는 것입니다.

두 모델은 게임 이론적인 방식으로 서로 경쟁합니다. 생성 모델의 목표는 판별 모델을 속이는 이미지들을 생성하는 것입니다. 반면에 판별 모델의 목표는 생성 모델을 물리치고 생성 모델이 생성한 가짜 이미지를 감지하는 것입니다. 모델이 서로 경쟁함으로써 두 모델 모두 개선됩니다. 판별 모델은 실제 이미지와 가짜 이미지에 대한 피드백을 받으며, 생성 모델은 판별 모델이 가짜 이미지로 식별한 이미지에 대한 피드백을 받습니다. 두 모델 모두 훈련 과정에서 개선되며, 생성 모델이 실제 이미지와 거의 구별할 수 없는 가짜 이미지를 생성하는 것을 목표로 합니다.

가우시안 분포가 생성된 후, 생성 모델을 사용할 수 있습니다. 생성 모델은 초기에 랜덤 벡터를 받으며, 이 벡터를 가우시안 분포에 따라 변환합니다. 즉, 벡터는 생성을 시드합니다. 모델이 훈련되면, 벡터 공간은 데이터의 가우시안 분포의 압축된 버전 또는 표현이 됩니다. 데이터 분포의 압축된 버전은 잠재 공간 또는 잠재 변수라고 합니다. 나중에 GAN 모델은 잠재 공간 표현을 가져와서 그로부터 점을 그리며, 생성 모델에 사용하여 훈련 데이터와 매우 유사한 새로운 데이터를 생성할 수 있습니다.

판별 모델은 전체 훈련 도메인에서 예제를 받습니다. 이는 실제 데이터와 생성 데이터 예제로 구성됩니다. 실제 예제는 훈련 데이터셋에 포함되며, 가짜 데이터는 생성 모델에 의해 생성됩니다. 판별 모델의 훈련 과정은 기본적인 이진 분류 모델 훈련과 동일합니다.

GAN 훈련 과정

가상적인 이미지 생성 작업을 위한 전체 훈련 과정을 살펴보겠습니다.

먼저, GAN은 실제 이미지로 구성된 훈련 데이터셋을 사용하여 훈련됩니다. 이는 판별 모델이 생성된 이미지와 실제 이미지를 구별하도록 설정합니다. 또한 생성 모델이 새로운 데이터를 생성하는 데 사용할 데이터 분포를 생성합니다.

생성 모델은 랜덤한 수치 데이터 벡터를 받으며, 이를 가우시안 분포에 따라 변환하여 이미지로 반환합니다. 생성된 이미지와 실제 이미지(훈련 데이터셋에서 일부)는 판별 모델에 입력됩니다. 판별 모델은 받은 이미지에 대한 확률적 예측을 출력하며, 0에서 1 사이의 값을 출력합니다. 여기서 1은 일반적으로 실제 이미지이고 0은 가짜 이미지입니다.

판별 모델은 실제 이미지와 가짜 이미지를 구별하는 데 성공할 때, 판별 모델의 매개변수는 변경되지 않습니다. 그러나 판별 모델이 실제 이미지와 가짜 이미지를 구별하지 못할 때, 판별 모델의 매개변수는 크게 업데이트됩니다. 반대로, 생성 모델은 판별 모델을 속일 수 있을 때, 생성 모델의 매개변수는 변경되지 않습니다. 그러나 생성 모델이 판별 모델을 속일 수 없을 때, 생성 모델의 매개변수는 업데이트됩니다.

이상적으로, 생성 모델은 판별 모델이 실제 이미지와 가짜 이미지를 구별할 수 없을 때까지 성능을 개선할 수 있습니다. 이는 판별 모델이 실제 이미지와 가짜 이미지를 모두 50%의 확률로 출력할 때입니다. 이는 생성된 이미지가 실제 이미지와 거의 구별할 수 없음을 의미합니다. 실제로, GANs는 일반적으로 이 지점에 도달하지 못합니다. 그러나 생성 모델은 완벽하게 유사한 이미지를 생성할 필요는 없습니다. 생성 모델은 여전히 많은 작업에서 유용하게 사용될 수 있습니다.

GAN 응용

GANs는 이미지 생성 및 이미지 구성 요소와 관련된 다양한 응용 분야를 가지고 있습니다. GANs는 일반적으로 필요한 이미지 데이터가 부족하거나 제한된 경우에 사용됩니다. GANs의 일반적인 사용 사례를 살펴보겠습니다.

데이터셋에 대한 새로운 예제 생성

GANs는 단순한 이미지 데이터셋에 대한 새로운 예제를 생성하는 데 사용할 수 있습니다. 훈련 예제가 몇 개만 있고 더 많은 예제가 필요할 때, GANs를 사용하여 새로운 훈련 데이터를 생성할 수 있습니다.

고유한 인간 얼굴 생성

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

충분히 훈련된 GANs는 매우 실제적인 인간 얼굴 이미지를 생성할 수 있습니다. 이러한 생성된 이미지는 얼굴 인식 시스템을 훈련하는 데 사용할 수 있습니다.

이미지-이미지 번역

GANs는 이미지 번역에 탁월합니다. GANs는 흑백 이미지를 색상화하거나, 스케치 또는 드로잉을 사진 이미지로 번역하거나, 이미지를 낮은 해상도에서 높은 해상도로 변환하는 데 사용할 수 있습니다.

텍스트-이미지 번역

텍스트-이미지 번역은 GANs를 사용하여 가능합니다. 텍스트와 함께 제공된 이미지와 함께 텍스트-이미지 번역을 훈련할 수 있습니다.

이미지 편집 및 수리

GANs는 기존 이미지를 편집하는 데 사용할 수 있습니다. GANs는 비 또는 눈과 같은 요소를 이미지에서 제거할 수 있습니다. 또한 GANs는 오래된, 손상된 이미지를 수리하는 데 사용할 수 있습니다.

슈퍼 리졸루션

슈퍼 리졸루션은 저해상도 이미지를 받아서 이미지에 더 많은 픽셀을 삽입하여 이미지의 해상도를 개선하는 과정입니다. GANs는 이미지를 받아서 더 높은 해상도의 버전을 생성하는 데 훈련될 수 있습니다.

블로거이자 프로그래머로 Machine Learning Deep Learning 주제에 전문가입니다. 다니엘은 다른 사람들이 AI의 힘을 사회적善으로 사용하는 것을 돕기를 희망합니다.