생성 신경망(Generative Neural Networks)은 기존 데이터의 패턴을 학습하여 새로운 데이터를 생성하는 인공지능 모델이다. 이는 기존의 판별 모델(Discriminative Model)이 주어진 데이터를 분류하거나 예측하는 것과는 근본적으로 다른 접근 방식이다.
• 판별 모델 vs 생성 모델
- 판별 모델(Discriminative Model):
입력 데이터 X가 주어졌을 때 출력 Y의 확률 P(Y|X)를 학습한다.
예를 들어, 고양이 사진이 주어졌을 때 "이것은 고양이다"라고 판별하는 것이다.
- 생성 모델(Generative Model):
데이터의 전체 확률 분포 P(X)를 학습하여 새로운 데이터를 생성한다.
예를 들어, 고양이의 특징을 학습하여 실제로는 존재하지 않는 새로운 고양이 이미지를 만들어내는 것이다.
• 생성 모델의 주요 목표
생성 모델은 다음과 같은 목표를 가지고 설계된다:
1) 고품질 샘플 생성:
실제 데이터와 구별하기 어려운 고품질의 새로운 데이터를 생성
2) 다양성 확보:
한 가지 패턴만 반복하지 않고 다양한 변형을 생성
3) 제어 가능성:
사용자가 원하는 특징을 가진 데이터를 생성할 수 있도록 제어
4) 잠재 표현 학습:
데이터의 본질적인 특징을 압축된 형태로 표현
생성 모델은 이미지, 텍스트, 음성, 비디오 등 다양한 형태의 데이터를 생성할 수 있으며, 최근에는 예술 창작, 의료 영상 생성, 신약 개발, 게임 콘텐츠 제작 등 광범위한 분야에서 활용되고 있다.
GAN은 두 개의 신경망 모델이 서로 경쟁하면서 더 나은 결과를 만들어 내는 강화학습이다. 특히 이미지 생성 분야에서 뛰어난 성능을 보이고 있다. 화가 반 고흐의 화풍을 모방하여 새로운 그림을 그리는 등 놀라운 결과물들을 보여주고 있는데, 특히 2018년에는 GAN이 생성한 그림이 크리스티 미술품 경매에서 43만 달러에 낙찰되기도 했다.
그렇다면 GAN은 어떤 방식으로 학습할까? GAN은 기존의 인공신경망과는 다르게 두 개의 인공신경망이 서로 경쟁하며 학습을 진행한다. 이를 판별 모델과 생성 모델이라고 하며, 각각은 서로 다른 목적을 가지고 학습한다.
- 판별 모델(Discriminator Model):
진짜 데이터와 가짜 데이터 중 어떤 것이 진짜 데이터인지를 판별한다.
- 생성 모델(Generative Model):
주어진 데이터와 최대한 유사한 가짜 데이터를 생성한다.
GAN의 동작 방식은 위조지폐범 판별 문제로 쉽게 이해할 수 있다. 위조지폐범은 판별 모델을 속이기 위한 진짜 같은 위조지폐를 만들고, 판별 모델은 위조지폐범이 만든 위조지폐를 찾아내기 위해 서로 경쟁적으로 학습을 한다. 이 과정을 통해 두 모델의 성능은 꾸준히 향상된다.
• 1단계:
생성자는 무작위 노이즈(잠재 벡터 z)로부터 가짜 이미지를 생성한다.
• 2단계:
판별자는 진짜 이미지와 생성된 가짜 이미지를 받아서 각각이 진짜일 확률을 출력한다.
• 3단계:
판별자는 진짜 이미지를 진짜로, 가짜 이미지를 가짜로 정확히 분류하도록 학습한다.
• 4단계:
생성자는 판별자를 속이기 위해, 즉 판별자가 가짜 이미지를 진짜로 판단하도록 학습한다.
• 5단계:
이 과정을 반복하면서 생성자는 점점 더 진짜 같은 이미지를 만들고, 판별자는 점점 더 정교하게 구별하는 능력을 갖추게 된다.
이상적인 상황에서는 생성자가 완벽하게 진짜 같은 이미지를 만들어내어 판별자가 진짜와 가짜를 50%의 확률로만 구분할 수 있게 된다. 이를 내쉬 균형(Nash Equilibrium)이라고 한다.
GAN의 학습은 수학적으로 미니맥스(Minimax) 게임으로 표현된다. 생성자 G와 판별자 D는 다음과 같은 목적 함수를 최적화한다:
1) 수식의 의미 해석
• 판별자의 목표 (maximize V)
- 첫 번째 항 \(\mathbb{E}_{x \sim p_{data}(x)}[\log D(x)]\):
실제 데이터 x에 대해 D(x)를 최대화 (진짜를 진짜로 판별)
- 두 번째 항 \(\mathbb{E}_{z \sim p_z(z)}[\log(1 - D(G(z)))]\):
생성된 데이터 G(z)에 대해 1-D(G(z))를 최대화 (가짜를 가짜로 판별)
판별자 \(D\)는 \(V\)를 최대화하려고 하므로, 진짜와 가짜를 정확히 구분하려고 한다.
• 생성자의 목표 (minimize V)
- 생성자는 두 번째 항을 최소화하려고 한다.
- \(\log(1 - D(G(z)))\)를 최소화한다는 것은 D(G(z))를 최대화한다는 의미이다.
- 즉, 판별자가 생성된 이미지를 진짜로 판별하도록 만든다.
2) 예시로 이해하기
• 판별자 입장:
"이건 진짜야!"라고 확신하고 싶음.
다음과 같이 학습한다.
진짜에 대해 D(x) → 1
가짜에 대해 D(G(z)) → 0
• 생성자 입장:
"내가 만든 것도 진짜처럼 보여야 해!"
다음과 같이 학습한다.
𝐷(𝐺(𝑧))→1
이 둘이 반복적으로 경쟁하면서, 생성자는 점점 더 정교한 가짜를 만들고, 판별자는 점점 더 정교하게 구분하려고 합니다.
3) 실제 학습에서의 개선
실제로는 생성자 학습 시 \(\log(1 - D(G(z)))\)를 최소화하는 대신 \(\log D(G(z))\)를 최대화한다. 이는 학습 초기에 생성자의 그래디언트가 소실되는 문제를 해결하기 위함이다.
2014년 Ian Goodfellow가 처음 제안한 이후 GAN은 다양한 변형이 개발되었다. 각 변형은 원본 GAN의 한계를 극복하거나 특정 작업에 최적화되어 있다.
1) DCGAN (Deep Convolutional GAN, 2015)
- 합성곱 신경망(CNN) 구조를 GAN에 도입한 최초의 성공적인 모델
- 완전 연결 계층 대신 합성곱 계층과 전치 합성곱(Transposed Convolution) 사용
- Batch Normalization을 사용하여 학습 안정성 향상
- 생성자에서 ReLU, 판별자에서 LeakyReLU 활성화 함수 사용
- 고해상도 이미지 생성이 가능해짐
2) CGAN (Conditional GAN, 2014)
- 조건(condition)을 추가하여 원하는 특징을 가진 데이터 생성
- 예: 특정 숫자를 생성하거나, 특정 레이블을 가진 이미지 생성
- 생성자와 판별자 모두에 조건 정보를 입력으로 제공
- 목적 함수: \(\min_G \max_D V(D,G) = \mathbb{E}_{x}[\log D(x|y)] + \mathbb{E}_{z}[\log(1-D(G(z|y)))]\)
3) Pix2Pix (2016)
- 이미지-투-이미지 변환(Image-to-Image Translation)을 수행하는 조건부 GAN
- 스케치를 사진으로, 흑백 사진을 컬러로, 낮 풍경을 밤 풍경으로 변환 가능
- U-Net 구조의 생성자와 PatchGAN 판별자 사용
- L1 손실과 GAN 손실을 함께 사용하여 이미지 품질 향상
4) CycleGAN (2017)
- 짝지어진 데이터 없이도 이미지 스타일 변환 가능
- 예: 말을 얼룩말로, 여름 풍경을 겨울 풍경으로 변환
- 순환 일관성 손실(Cycle Consistency Loss)을 도입
- A → B → A 변환 후 원본과 유사해야 한다는 제약 조건
- 두 개의 생성자와 두 개의 판별자를 사용
5) StyleGAN (2018) 및 StyleGAN2 (2019)
- NVIDIA에서 개발한 고품질 얼굴 이미지 생성 모델
- 스타일 기반 생성자 구조로 이미지의 다양한 특징을 세밀하게 제어
- Adaptive Instance Normalization (AdaIN)을 사용하여 스타일 정보 주입
- 1024×1024 해상도의 사실적인 얼굴 이미지 생성 가능
- StyleGAN2에서는 artifact 문제 개선 및 품질 향상
- ThisPersonDoesNotExist.com 같은 서비스의 기반 기술
6) Progressive GAN (2017)
- 저해상도에서 시작하여 점진적으로 해상도를 높이는 방식
- 학습 안정성과 생성 품질을 동시에 개선
- 최종적으로 1024×1024 고해상도 이미지 생성 가능
- StyleGAN의 기반이 되는 기술
7) BigGAN (2018)
- 대규모 데이터셋(ImageNet)으로 학습된 고해상도 이미지 생성 모델
- 클래스 조건부 생성으로 특정 카테고리의 이미지 생성
- Truncation trick을 사용하여 품질과 다양성 조절
- 512×512 해상도의 다양한 객체 이미지 생성
GAN은 강력한 생성 모델이지만 여러 가지 한계와 도전과제를 안고 있다.
1) Mode Collapse (모드 붕괴)
Mode Collapse는 GAN의 가장 심각한 문제 중 하나로, 생성자가 데이터의 다양성을 무시하고, 판별자를 속일 수 있는 하나 또는 몇 가지 패턴만 반복적으로 생성하는 현상이다.
예를 들어, 숫자 이미지를 생성하는 GAN이 0부터 9까지 다양한 숫자를 생성해야 하는데,
판별자를 잘 속이는 '7'이라는 숫자만 계속 생성하는 경우이다.
• 원인:
- 생성자가 실제 데이터 분포 전체를 학습하지 못하고 일부만 학습
- 판별자의 취약점을 찾아 그 부분만 집중적으로 공략
- 생성자와 판별자 간의 불균형한 학습
• 해결 방법:
- Unrolled GAN: 여러 단계 앞을 내다보며 학습
- Minibatch Discrimination: 생성된 샘플들 간의 다양성을 명시적으로 측정
- Feature Matching: 판별자의 중간 특징을 매칭하도록 학습
2) 학습 불안정성
GAN은 두 개의 신경망이 동시에 학습하면서 서로 경쟁하기 때문에 학습이 매우 불안정한다.
•문제점:
- 하이퍼파라미터에 매우 민감함
- 학습률, 배치 크기 등의 조절이 어려움
- 학습 과정에서 갑자기 성능이 저하되는 경우 발생
- Gradient Vanishing 또는 Exploding 문제
•해결 방법:
- Spectral Normalization: 판별자의 가중치를 정규화
- Wasserstein GAN (WGAN): 손실 함수를 Earth Mover's Distance로 변경
- Two Time-scale Update Rule (TTUR): 생성자와 판별자에 다른 학습률 적용
- Batch Normalization, Layer Normalization 사용
3) 평가 지표의 부재
생성된 이미지의 품질을 객관적으로 평가하기 어렵다.
• 평가 방법:
- Inception Score (IS): 생성된 이미지의 품질과 다양성을 측정
- Fréchet Inception Distance (FID): 생성된 이미지와 실제 이미지의 분포 차이 측정 (낮을수록 좋음)
- Human Evaluation: 사람이 직접 평가 (주관적이지만 가장 신뢰도 높음)
4) 학습 데이터 요구량
고품질의 결과를 얻기 위해서는 대량의 학습 데이터가 필요한다.
- StyleGAN은 수만 장의 고품질 얼굴 이미지로 학습
- 특정 도메인에서는 충분한 데이터 확보가 어려움
• 해결 방법:
- Transfer Learning: 사전 학습된 모델을 활용
- Data Augmentation: 데이터 증강 기법 활용
- Few-shot Learning: 적은 데이터로도 학습 가능한 기법
5) 계산 비용
고해상도 이미지 생성이나 대규모 모델 학습에는 막대한 계산 자원이 필요한다.
- StyleGAN2 학습에는 수백 시간의 GPU 시간 필요
- 일반 사용자가 처음부터 학습하기 어려움
GAN은 다양한 분야에서 혁신적인 응용 사례를 만들어내고 있다.
1) 이미지 생성 및 편집
- 얼굴 생성: 실제 존재하지 않는 사람의 사실적인 얼굴 생성 (ThisPersonDoesNotExist.com)
- 나이 변환: 젊은 얼굴을 노년으로, 또는 그 반대로 변환
- 얼굴 속성 편집: 머리 색깔, 표정, 성별 등을 자유롭게 변경
- 초해상화: 저해상도 이미지를 고해상도로 변환
2) 스타일 변환
- 예술 작품 생성: 특정 화가의 화풍을 모방한 새로운 그림 생성
- 사진 스타일 변환: 사진을 유화, 수채화, 만화 스타일 등으로 변환
- 계절 변환: 여름 풍경을 겨울로, 낮을 밤으로 변환
3) 의료 영상
- 의료 영상 합성: 부족한 의료 영상 데이터를 생성하여 학습 데이터 증강
- 영상 복원: 노이즈가 있는 의료 영상을 깨끗하게 복원
- MRI/CT 변환: MRI 영상을 CT 영상으로 또는 그 반대로 변환
- 질병 진단 보조: 정상 영상과 비정상 영상의 차이를 학습하여 질병 탐지
4) 패션 및 디자인
- 가상 의류 착용: 옷을 입지 않고도 착용 모습을 확인
- 디자인 생성: 새로운 의류, 신발, 액세서리 디자인 자동 생성
- 제품 디자인: 가구, 인테리어 등의 디자인 제안
5) 엔터테인먼트
- 게임 콘텐츠 생성: 게임 맵, 캐릭터, 텍스처 자동 생성
- 영화 특수효과: 얼굴 대체, 나이 변환, 배경 합성
- Deepfake: 영상 속 인물의 얼굴을 다른 사람으로 대체 (윤리적 문제 존재)
6) 데이터 증강
- 학습 데이터 부족 해결: 소량의 데이터로부터 다양한 변형 생성
- 이상 탐지: 정상 데이터를 학습하여 이상 데이터 감지
GAN의 발전과 함께 윤리적 문제도 대두되고 있다:
- Deepfake 악용: 허위 정보 생성, 사생활 침해, 명예 훼손
- 저작권 문제: 학습 데이터의 저작권 및 생성물의 소유권
- 편향성: 학습 데이터의 편향이 생성 결과에 반영
- 악의적 사용: 가짜 신분증, 가짜 뉴스 생성 등
이러한 문제들을 해결하기 위해 Deepfake 탐지 기술, 워터마킹, 법적 규제 등이 연구되고 있다.
VAE는 GAN과는 다른 접근 방식으로 데이터를 생성하는 생성 모델이다. VAE는 오토인코더(Autoencoder)의 변형으로, 데이터를 압축했다가 복원하는 과정에서 데이터의 잠재적 표현(latent representation)을 학습한다.
1) 오토인코더의 기본 개념
일반적인 오토인코더는 다음과 같이 구성된다:
- 인코더(Encoder): 입력 데이터 x를 저차원의 잠재 벡터 z로 압축
- 디코더(Decoder): 잠재 벡터 z로부터 원본 데이터 x를 복원
목표는 입력과 출력이 최대한 같아지도록 학습하는 것이다.
이 과정에서 데이터의 중요한 특징이 잠재 벡터 z에 압축되어 저장된다.
2) VAE의 핵심 아이디어
일반 오토인코더는 각 입력에 대해 하나의 고정된 잠재 벡터를 생성한다.
반면 VAE는 잠재 공간에서 확률 분포를 학습한다.
- 인코더는 입력 x를 받아 평균(μ)과 분산(σ²)을 출력한다.
- 이 평균과 분산으로 정규분포 \(N(μ, σ²)\)를 정의한다.
- 이 분포에서 샘플링한 z를 디코더에 입력하여 데이터를 복원한다.
- 새로운 데이터를 생성할 때는 학습된 잠재 공간에서 임의의 점을 샘플링하여 디코더에 입력한다.
3) VAE가 GAN보다 나은 점
- 학습 안정성: GAN처럼 두 네트워크가 경쟁하지 않아 학습이 더 안정적
- 잠재 공간의 의미: 잠재 공간이 연속적이고 보간(interpolation)이 자연스러움
- 명확한 손실 함수: 수학적으로 잘 정의된 손실 함수 (ELBO)
- Mode Collapse 없음: 모든 데이터 모드를 커버하려고 시도
4) VAE의 한계
- 흐릿한 생성 이미지: GAN에 비해 생성된 이미지가 흐릿한 경향
- 복원 손실과 정규화의 trade-off: 두 목표 사이의 균형 맞추기 어려움
VAE는 변분 추론(Variational Inference)을 기반으로 한다. 목표는 데이터의 사후 확률 분포 \(p(z|x)\)를 근사하는 것이다.
1) 손실 함수의 두 가지 항
• 복원 손실 (Reconstruction Loss)
\[\mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)]\]
- 디코더가 잠재 벡터로부터 원본 데이터를 얼마나 잘 복원하는지 측정
- 실제로는 MSE (Mean Squared Error) 또는 Binary Cross-Entropy로 계산
- 이 항을 최대화하면 복원이 잘 됨
• KL Divergence (정규화 항)
\[D_{KL}(q_\phi(z|x) \| p(z))\]
- 학습된 사후 분포가 사전 분포에 얼마나 가까운지 측정
- 잠재 공간이 표준 정규분포를 따르도록 강제
- 이 항을 최소화하면 잠재 공간이 연속적이고 구조화됨
- 새로운 샘플을 생성할 때 \(N(0, I)\)에서 샘플링 가능
2) Reparameterization Trick
확률적 샘플링 과정을 미분 가능하게 만들기 위한 기법:
\[ z = \mu + \sigma \odot \varepsilon, \quad \varepsilon \sim N(0, I) \]
여기서 ⊙는 원소별 곱셈(element-wise multiplication)이다.
이렇게 하면 역전파가 가능해져서 인코더를 학습할 수 있다.
1) 이미지 생성
- MNIST, CIFAR-10 등의 데이터셋에서 새로운 이미지 생성
- GAN보다 다양성은 좋지만 선명도는 다소 떨어짐
2) 이미지 보간 (Interpolation)
- 두 이미지의 잠재 벡터를 선형 보간하여 자연스러운 중간 이미지 생성
- 예: 웃는 얼굴과 찡그린 얼굴 사이의 중간 표정들
3) 이상 탐지 (Anomaly Detection)
- 정상 데이터로 VAE를 학습
- 복원 오차가 큰 샘플을 이상치로 판단
- 제조업 불량품 검사, 금융 사기 탐지 등에 활용
4) 데이터 압축
- 고차원 데이터를 저차원 잠재 공간으로 압축
- 차원 축소 기법으로 활용 (PCA의 비선형 대안)
5) 준지도 학습 (Semi-supervised Learning)
- 레이블이 있는 데이터와 없는 데이터를 함께 활용
- 레이블을 잠재 변수의 일부로 모델링
6) 분자 설계 (Drug Discovery)
- 분자 구조를 잠재 공간에 인코딩
- 원하는 특성을 가진 새로운 분자 생성
- 신약 개발에 활용
디퓨전 모델은 크게 두 가지 과정으로 구성된다:
1) Forward Process (순방향 과정, 확산 과정)
2) Reverse Process (역방향 과정, 복원 과정)
| 특성 | GAN | VAE | Diffusion |
|---|---|---|---|
| 생성 품질 | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 생성 다양성 | ⭐⭐⭐ (Mode Collapse 위험) | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 학습 안정성 | ⭐⭐ (어려움) | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 생성 속도 | ⭐⭐⭐⭐⭐ (매우 빠름) | ⭐⭐⭐⭐⭐ (매우 빠름) | ⭐⭐ (느림, 개선 중) |
| 조건부 생성 | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ (매우 뛰어남) |
| 계산 비용 | 중간 | 낮음 | 높음 |
| 해석 가능성 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| 대표 모델 | StyleGAN, CycleGAN | β-VAE, VQ-VAE | DALL-E 2, Stable Diffusion |