생성적 적대 신경망

**생성적 적대 신경망**(영어: Generative Adversarial Network, **GAN**)은 기계 학습의 한 종류로, 주로 비지도 학습에 사용되는 인공신경망 모델의 한 프레임워크이다. 2014년 이언 굿펠로와 몬트리올 대학의 동료들이 처음 제안했다.

GAN은 생성자와 구분자라는 두 개의 신경망이 서로 경쟁하는 독특한 구조를 가진다. 이 구조는 종종 위조지폐를 만들려는 '위조지폐범'(생성자)과 이를 감별하려는 '경찰'(구분자)의 관계에 비유된다. 생성자는 실제 데이터와 구별할 수 없는 가짜 데이터를 생성하도록 학습하고, 구분자는 입력된 데이터가 실제 데이터인지 가짜 데이터인지 가능한 한 정확하게 판별하도록 학습한다.

이러한 적대적 경쟁 과정을 통해, 생성자는 점차 실제 데이터의 통계적 분포와 매우 유사한 데이터를 생성하는 능력을 갖추게 되며, 구분자의 판별 능력 또한 함께 향상된다. GAN은 특히 컴퓨터 비전 분야에서 사실적인 이미지 생성, 이미지 대 이미지 변환, 초해상화 등에서 획기적인 성과를 보여주었다.

## 역사
GAN은 2014년 몬트리올 대학의 박사 과정 학생이던 이언 굿펠로에 의해 처음 고안되었다. 굿펠로는 친구들과 술집에서 학술적인 토론을 하던 중 이 아이디어를 떠올렸다고 알려져 있다. 그는 최대 가능도 추정의 어려움을 피하면서도 강력한 생성 모델을 만들 방법을 모색하고 있었다.

초기 아이디어는 '위조지폐범과 경찰'이라는 게임 이론적 비유에서 시작되었다. 굿펠로와 그의 동료들은 같은 해 6월 "Generative Adversarial Networks"라는 제목의 논문을 신경정보처리시스템학회 (NIPS, 현 NeurIPS)에 제출하며 이 개념을 공식적으로 발표했다.

이 논문은 딥러닝 커뮤니티에 큰 반향을 일으켰다. 메타 AI의 수석 과학자이자 2018년 튜링상 수상자인 얀 르쿤 교수는 GAN을 "지난 10년간 기계 학습 분야에서 가장 흥미로운 아이디어"라고 극찬했다.

## 구조 및 작동 원리
GAN은 두 개의 개별적인 인공신경망, 즉 생성자와 구분자로 구성된다.
가운데|섬네일|205x205픽셀|GAN의 학습 과정 도식화. 1) 구분자(D)가 실제 데이터와 생성된 데이터를 구별하도록 학습하고, 2) 생성자(G)가 구분자를 속이도록 학습한다.

### 생성자
생성자(G)는 가상의 데이터를 생성하는 역할을 한다. 이 네트워크는 일반적으로 정규 분포나 균등 분포를 따르는 저차원의 무작위 잡음 벡터를 입력으로 받는다. 이 입력 벡터를 잠재 벡터(z)라고 부르며, 이 벡터가 존재하는 공간을 잠재 공간이라고 한다.

생성자의 임무는 이 잠재 벡터 z를 실제 데이터(예: 이미지)와 유사한 형태의 데이터 G(z)로 변환(매핑)하는 것이다. 생성자는 학습 초기에는 의미 없는 잡음과 같은 결과물을 만들지만, 학습이 진행됨에 따라 점차 실제 데이터와 구별하기 어려운 정교한 결과물을 생성하도록 업데이트된다.

### 구분자
구분자(D)는 이진 분류기 역할을 하는 신경망이다. 구분자는 특정 데이터 x를 입력받아, 이 데이터가 훈련 데이터셋에서 가져온 실제 데이터인지, 아니면 생성자(G)가 만들어낸 가짜 데이터인지 판별한다.

구분자는 실제 데이터 x에 대해서는 1 (또는 1에 가까운 값, D(x) \approx 1)을 출력하고, 생성자가 만든 가짜 데이터 G(z)에 대해서는 0 (또는 0에 가까운 값, D(G(z)) \approx 0)을 출력하도록 학습된다. 즉, 구분자의 출력 D(x)는 입력 x가 실제일 확률을 나타낸다.

### 학습 과정
GAN의 학습은 생성자(G)와 구분자(D)가 서로 경쟁하는 제로섬 게임으로 볼 수 있다. 이 학습 과정은 다음과 같은 최소최대 목적 함수 V(D, G)를 통해 공식화된다.

:  \min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{\text{data}}(x)}[\log D(x)] + \mathbb{E}_{z \sim p_{z}(z)}[\log(1 - D(G(z)))] 

이 수식의 의미는 다음과 같다.
* \mathbb{E}_{x \sim p_{\text{data}}(x)}[\log D(x)]: 실제 데이터 x가 입력되었을 때, 구분자가 D(x)를 1(실제)로 판별할 확률을 최대화한다.
* \mathbb{E}_{z \sim p_{z}(z)}[\log(1 - D(G(z)))]: 생성자가 만든 가짜 데이터 G(z)가 입력되었을 때, 구분자가 D(G(z))를 0(가짜)으로 판별할 확률(즉, 1 - D(G(z)))을 최대화한다.

학습은 두 단계로 나뉘어 반복적으로 수행된다.

첫 번째 단계는 구분자(D) 학습으로, 생성자(G)의 가중치를 고정한 채, 실제 데이터 배치와 생성된 가짜 데이터 배치를 구분자에 입력한다. 구분자는 실제 데이터는 1로, 가짜 데이터는 0으로 정확히 분류하도록 학습되며, 즉 위 목적 함수 V(D, G)를 최대화하도록 가중치를 업데이트한다.

두 번째 단계는 생성자(G) 학습으로, 구분자(D)의 가중치를 고정한 채, 새로운 잠재 벡터 z로부터 가짜 데이터 G(z)를 생성하여 구분자에 입력한다. 생성자는 구분자가 이 가짜 데이터를 1(실제)로 잘못 판별하도록 학습되며, 즉 D(G(z))를 1로 만드는 방향으로, 또는 \log(1 - D(G(z))) 값을 최소화하도록 가중치를 업데이트한다.

이론적으로 이 경쟁 과정이 안정적으로 수렴하면, 생성자는 실제 데이터의 분포 p_{\text{data}}를 완벽하게 모방하게 되고, 구분자는 어떤 데이터가 입력되든 실제인지 가짜인지 판별할 확률이 50% (D(x) = D(G(z)) = 0.5)가 되는 내시 균형 상태에 도달한다.

## 주요 GAN 변형 모델
초기의 바닐라 GAN 이후, 학습 불안정성을 개선하고 성능을 높이기 위한 수많은 변형 모델이 제안되었다.

### 심층 합성곱 GAN
2015년 제안된 DCGAN (Deep Convolutional GAN)은 GAN의 구조에 합성곱 신경망 구조를 성공적으로 적용한 모델이다. DCGAN은 불안정한 GAN 학습을 안정화하기 위한 몇 가지 아키텍처 지침을 제시했으며, 이는 이후 GAN 기반 이미지 생성 모델의 표준이 되었다. 구체적으로, 생성자에서는 전치 합성곱을 사용하여 이미지를 업샘플링하고, 구분자에서는 스트라이드 합성곱을 사용하여 다운샘플링한다. 또한 풀링 레이어를 제거하고, 생성자와 구분자 양쪽에 배치 정규화를 사용하여 학습을 안정화했다.

### 조건부 GAN
CGAN (Conditional GAN)은 생성 과정에 추가적인 '조건' 정보 y (예: 클래스 레이블, 텍스트 설명, 다른 이미지 등)를 함께 입력하는 모델이다. 생성자와 구분자 모두 이 조건 y를 입력받아, p(x|y)와 같이 특정 조건에 맞는 데이터를 생성하도록 학습된다. 예를 들어, "숫자 7"이라는 레이블을 주면 숫자 7의 이미지를 생성하도록 할 수 있다.

### 바서슈타인 GAN
WGAN (Wasserstein GAN)은 기존 GAN의 불안정한 학습 과정과 모드 붕괴 문제를 해결하기 위해 제안되었다. WGAN은 두 확률 분포 간의 거리를 측정하는 척도로 바서슈타인 거리 (또는 Earth-Mover's distance)를 사용한다. 이는 기존 GAN이 사용하던 JS 발산보다 더 안정적인 학습 신호(그레이디언트)를 제공하여 학습을 크게 안정시켰다.

### CycleGAN
CycleGAN은 2017년 발표된 모델로, 쌍을 이루지 않은 데이터셋 간의 이미지 대 이미지 변환을 가능하게 했다. 예를 들어, 특정 화가의 화풍 이미지를 모네의 그림과 정확히 짝이 맞는 사진 없이도 학습할 수 있다. 이는 '도메인 A'의 이미지를 '도메인 B'로 변환했다가 다시 '도메인 A'로 복원했을 때 원본과 유사해야 한다는 순환 일관성 손실 개념을 도입하여 가능해졌다.

### StyleGAN
StyleGAN은 엔비디아에서 개발한 모델로, 극도로 사실적인 고해상도 인물 얼굴 이미지를 생성하는 것으로 유명하다. StyleGAN은 잠재 벡터 z를 바로 입력하는 대신, 여러 층에 걸쳐 '스타일' 정보로 변환하여 주입하는 '스타일 기반' 생성자 구조를 사용한다. 이를 통해 생성된 이미지의 세부적인 속성(예: 머리 스타일, 성별, 연령)을 높은 수준에서 제어할 수 있게 되었다.

## 응용 분야
GAN은 다양한 분야에서 놀라운 결과물을 만들어내고 있다. 가장 대표적인 응용 분야는 이미지 생성 및 편집으로, StyleGAN을 이용한 가상 인물 생성이나 생성된 이미지의 특정 속성(예: 웃는 표정, 머리색)을 편집하는 데 사용된다. 또한, Pix2Pix나 CycleGAN 같은 모델을 사용하여 스케치를 사진으로, 낮 사진을 밤 사진으로, 위성 이미지를 지도 이미지로 변환하는 등의 이미지 대 이미지 변환 작업도 수행한다.

이 외에도 다양한 컴퓨터 비전 작업에 활용되는데, SRGAN과 같이 저해상도 이미지를 선명한 고해상도 이미지로 복원하는 초해상화나, 이미지의 일부가 손상되거나 가려졌을 때 주변 맥락을 이용해 비어있는 부분을 자연스럽게 채워 넣는 인페인팅 등이 있다. 특히 의료 영상과 같이 데이터 수집이 어려운 분야에서는 데이터 증강을 목적으로 GAN을 이용해 실제와 유사한 데이터를 대량 생성하여 인공지능 모델의 학습 데이터로 활용한다.

GAN의 응용은 시각 데이터를 넘어 비전 외 분야로도 확장되고 있다. DALL-E와 같은 현대 모델의 초기 기반(예: AttnGAN)으로 사용되어, "빨간 모자를 쓴 아보카도"와 같은 텍스트 설명을 이미지로 생성하는 텍스트-이미지 생성, 새로운 멜로디를 작곡하거나 특정 인물의 목소리를 합성하는 음악 및 음성 생성, 2D 이미지를 기반으로 3D 모델 생성, 그리고 특정 속성을 가진 새로운 분자 구조를 생성하는 신약 개발 등에도 활용된다.

## 한계점 및 과제
GAN은 강력한 기술이지만 여러 고질적인 문제점을 안고 있다.

첫째로 학습 불안정성이 크다. 생성자와 구분자 간의 학습 균형을 맞추는 것이 매우 어려워, 한쪽이 다른 쪽보다 너무 빠르게 학습하면(예: 구분자가 너무 뛰어나서 생성자가 생성한 족족 0으로 판별하면) 생성자가 학습할 신호(그레이디언트)가 사라져 학습이 실패할 수 있다 (기울기 소실 문제).

둘째는 모드 붕괴 (Mode Collapse) 현상이다. 이는 생성자가 구분자를 속이기 가장 쉬운, 특정 소수의 결과물만을 생성하게 되는 현상으로, 예를 들어 다양한 인물 얼굴을 생성하도록 학습했지만 한두 가지 특정 얼굴 형태만 반복해서 생성하는 경우이다. 이는 생성된 결과물의 다양성을 심각하게 저해한다.

마지막으로, 생성된 결과물의 품질을 객관적으로 평가하기 어려운 정량적 평가의 어려움이 있다. 생성된 이미지가 '얼마나 사실적인지'와 '얼마나 다양한지'를 측정하기 위해 인셉션 스코어나 프레셰 인셉션 거리와 같은 척도가 사용되지만, 이들 역시 완벽하지 않으며 인간의 주관적인 평가와 다를 수 있다.

## 사회적 영향 및 윤리적 문제
GAN 기술, 특히 고해상도 이미지 및 비디오 생성 능력은 심각한 사회적, 윤리적 문제를 야기한다.

### 딥페이크와 가짜 정보
가장 큰 우려는 딥페이크 기술이다. 딥페이크는 GAN(과 오토인코더)을 사용하여 특정 인물의 얼굴이나 목소리를 다른 비디오나 오디오에 합성하는 기술을 말한다.

이는 가짜 뉴스 제작, 유명인의 발언 조작, 정치적 여론 조작, 비동의적 음란물(가짜 포르노) 제작 등에 악용될 수 있으며, 이미 사회적 혼란과 심각한 명예 훼손, 사기 피해를 일으키고 있다. 이에 따라 딥페이크를 탐지하고 방지하기 위한 '딥페이크 탐지' 기술 또한 GAN을 이용해 함께 연구되고 있다.

### 저작권 및 예술
GAN이 생성한 예술 작품(AI 아트)의 저작권 귀속 문제도 논란거리이다. 생성된 작품의 저작권이 GAN 모델을 만든 개발자에게 있는지, 모델을 학습시킨 원본 데이터의 저작자에게 있는지, 아니면 모델을 사용한 사용자에게 있는지 법적, 윤리적 기준이 모호하다.

## 같이 보기
* 딥러닝
* 인공신경망
* 오토인코더
* 확산 모델
* 딥페이크

## 외부 링크
*  - 이언 굿펠로의 2014년 원본 GAN 논문 구현 코드
* 이언 굿펠로의 GAN 프레젠테이션 (유튜브)

## 각주

분류:기계 학습 알고리즘
분류:비지도 학습
분류:2014년 소프트웨어
분류:인지과학
분류:인공신경망
분류:생성형 인공지능