GAN
더 많은 작업
- Generative Adversarial Network; 생성적 적대 신경망; 적대적 생성 신경망; 생산적 적대 신경망
- 가짜를 만드는 생성자와 진짜·가짜를 가리는 판별자를 서로 경쟁시켜 학습하는 생성 모델
GAN(Generative Adversarial Network, 생성적 적대 신경망)은 2014년 이언 굿펠로(Ian Goodfellow) 등이 제안한 생성 모델이다.[1] 무작위 잡음을 받아 데이터를 만들어 내는 생성자(generator)와, 들어온 데이터가 진짜 학습 데이터인지 생성자가 만든 가짜인지 판정하는 판별자(discriminator) 두 신경망을 동시에 학습시킨다. 판별자는 속지 않으려 하고 생성자는 판별자를 속이려 하는 2인 미니맥스 게임이며, 균형에 이르면 생성자가 만든 데이터의 분포가 실제 데이터 분포와 같아진다.
한국어 번역어가 "생성적 적대 신경망", "적대적 생성 신경망" 등으로 갈려 IT위키는 약어 GAN을 제목으로 쓴다.
GAN은 2010년대 후반 사실적인 사람 얼굴 생성(StyleGAN), 쌍 없는 이미지 변환(CycleGAN), 초해상도(SRGAN) 등으로 이미지 생성 분야를 이끌었고, 딥페이크가 사회 문제로 떠오른 계기도 되었다. 2021년 무렵부터 이미지 생성의 주도권은 확산 모델로 넘어갔지만, 한 번의 순전파로 결과를 내는 속도 덕분에 음성 합성 보코더, 실시간 변환, 확산 모델의 증류와 오토인코더 학습 등에서 적대적 손실은 여전히 쓰인다.
- 위 그림을 쉽게 그린 아래 그림
| 구분 | 구성 요소 | 입력 | 출력·목표 |
|---|---|---|---|
| 기능 모듈 | 생성자 G | 사전 분포(보통 정규 분포나 균등 분포)에서 뽑은 잡음 벡터 z | 데이터 공간의 표본 G(z). 판별자가 진짜로 판정하게 만드는 것이 목표 |
| 판별자 D | 실제 데이터 x 또는 생성 데이터 G(z) | 입력이 진짜일 확률 D(·). 진짜는 1, 가짜는 0에 가깝게 내는 것이 목표 | |
| 학습 방식 | 경쟁 학습 | 두 모델을 번갈아 갱신하는 미니맥스 게임 | |
| 레이블 없는 학습 | 사람이 붙인 레이블 없이 "진짜/가짜"라는 자동으로 정해지는 신호만으로 학습(비지도 학습). 조건부 GAN은 레이블을 조건으로 함께 쓴다 | ||
판별자는 일반적인 이진 분류기이고, 생성자는 판별자를 거쳐 오는 기울기만으로 학습된다. 생성자는 실제 데이터를 직접 보지 않는다는 점이 특징이다. 원 논문은 두 망 모두 다층 퍼셉트론으로 구성해 역전파만으로 학습할 수 있으며, 학습에도 생성에도 마르코프 연쇄나 근사 추론이 필요 없다는 점을 강조했다.[1]
원 논문의 가치 함수는 다음과 같다.[1]
- 판별자는 를 최대화한다. 진짜 데이터에서는 , 가짜에서는 이 되게 하는 것으로, 이진 교차 엔트로피를 최소화하는 것과 같다.
- 생성자는 를 최소화한다. 생성자가 관여하는 것은 둘째 항뿐이다.
생성자를 고정하면 최적 판별자는 이다. 이것을 대입하면 생성자의 목표는 실제 분포 와 생성 분포 사이의 젠슨-섀넌 발산(JSD)을 최소화하는 것이 되고, 전역 최적해는 , 이때 판별자는 모든 곳에서 1/2을 낸다.[1] 판별자가 더는 진짜와 가짜를 구별하지 못하는 이 상태를 흔히 내시 균형에 비유한다. 다만 이 결과는 함수 공간 전체에서 최적화할 수 있다는 가정 아래의 이야기이고, 실제 신경망을 경사법으로 번갈아 학습할 때 수렴이 보장되는 것은 아니다.
학습 초기에는 생성자가 형편없어 판별자가 가짜를 쉽게 가려낸다. 이때 는 포화되어 기울기가 거의 0이 된다. 그래서 원 논문부터 생성자는 대신 를 최대화하도록 학습하는 방법을 권했다.[1] 최적점은 같지만 초기 기울기가 훨씬 크다. 실제 구현의 "GAN 손실"은 대부분 이 비포화(non-saturating) 형태다.
- 실제 데이터에서 미니배치 x를, 사전 분포에서 잡음 z를 뽑는다.
- 생성자를 고정한 채 판별자를 한 단계(또는 k단계) 갱신한다. 진짜는 1, 가짜는 0으로 맞히는 방향이다.
- 판별자를 고정한 채 새 잡음으로 가짜를 만들고, 판별자가 이것을 1로 판정하는 방향으로 생성자를 갱신한다.
- 1~3을 반복한다.
판별자와 생성자에 서로 다른 학습률을 주는 두 시간 척도 갱신 규칙(TTUR)은 약한 가정 아래 국소 내시 균형으로 수렴함이 증명되었다.[2]
GAN은 하나의 손실을 내려가는 최적화가 아니라 두 망이 서로의 목표를 움직이는 게임이라 학습이 불안정하기로 유명하다.
| 현상 | 내용 | 대표 대응 |
|---|---|---|
| 모드 붕괴(mode collapse) | 생성자가 판별자를 잘 속이는 몇 가지 표본만 반복해서 만들고 데이터의 다양성을 놓침 | 미니배치 판별[3], WGAN |
| 기울기 소실 | 판별자가 너무 강하면 생성자에게 쓸 만한 기울기가 가지 않음. 두 분포의 지지집합이 겹치지 않으면 JSD가 상수가 됨 | 비포화 손실, LSGAN, WGAN |
| 진동·발산 | 두 망이 서로를 쫓으며 수렴하지 않고 맴돎 | 스펙트럼 정규화[4], 기울기 페널티, TTUR |
| 하이퍼파라미터 민감성 | 구조, 학습률, 배치 크기에 따라 결과 차이가 큼 | DCGAN의 구조 지침, 점진적 성장 |
| 평가의 어려움 | 가능도를 직접 계산할 수 없어 손실 값이 품질을 말해 주지 않음 | 인셉션 점수(IS), 프레셰 인셉션 거리(FID)[2] |
FID는 생성 이미지와 실제 이미지를 사전학습된 인셉션 신경망의 특징 공간에 올려 두 분포의 평균과 공분산 차이를 재는 지표로, TTUR 논문에서 제안되어 이후 이미지 생성 모델 전반의 표준 지표가 되었다.[2]
| 이름(연도) | 핵심 아이디어 | 의의 |
|---|---|---|
| 조건부 GAN, cGAN(2014)[5] | 생성자와 판별자 모두에 레이블 등 조건 y를 입력 | 원하는 숫자의 MNIST 손글씨처럼 조건에 맞춘 생성 |
| DCGAN(2015)[6] | 합성곱 구조, 배치 정규화, 완전연결층 제거 등 구조 지침 | 이미지 GAN의 표준 뼈대. 잠재 벡터 산술(안경 쓴 남자 - 남자 + 여자 = 안경 쓴 여자)로 주목 |
| InfoGAN(2016)[7] | 잠재 코드 일부와 생성 결과 사이의 상호 정보량을 최대화 | 레이블 없이 글씨체, 회전 같은 해석 가능한 요인을 분리 |
| Pix2Pix(2016)[8] | 입력 이미지를 조건으로 하는 cGAN | 스케치→사진, 흑백→컬러 등 쌍 있는 이미지 변환 |
| SRGAN(2016)[9] | 적대 손실 + 지각 손실로 초해상도 | 4배 확대에서 사진 같은 질감 복원 |
| StackGAN(2016)[10] | 1단계가 문장에서 밑그림, 2단계가 세부를 그림 | 문장으로 256×256 이미지 생성 |
| 3D-GAN(2016)[11] | 3차원 복셀 합성곱으로 생성 | 3D 물체 형상 생성 |
| LSGAN(2016)[12] | 판별자 손실을 최소 제곱으로 | 시그모이드 교차 엔트로피의 기울기 소실 완화 |
| WGAN(2017)[13], WGAN-GP(2017)[14] | JSD 대신 바서슈타인 거리를 추정. 판별자를 비평가(critic)로 바꾸고 립시츠 조건을 가중치 잘라내기(WGAN) 또는 기울기 페널티(WGAN-GP)로 강제 | 학습 안정화, 손실 곡선이 품질과 상관 |
| CycleGAN(2017)[15] | 두 방향 변환 G: X→Y, F: Y→X와 순환 일관성 손실 F(G(x))≈x | 쌍 없는 데이터로 말↔얼룩말, 사진↔모네 화풍 변환 |
| DiscoGAN(2017)[16] | 쌍 없는 두 도메인 사이의 관계를 발견 | 가방 이미지에서 비슷한 느낌의 신발 생성 등 |
| ProGAN(2017)[17] | 저해상도에서 시작해 층을 점점 덧붙임 | 1024×1024 얼굴 생성 |
| SAGAN(2018)[18] | 생성자·판별자에 셀프 어텐션 추가 | 먼 영역 사이의 일관성 |
| BigGAN(2018)[19] | 대규모 배치·모델, 직교 정규화와 잘라내기 기법(truncation trick) | ImageNet 128×128에서 IS 166.5, FID 7.4로 당시 기록 경신 |
| StyleGAN(2018)[20], StyleGAN2(2019)[21], StyleGAN3(2021)[22] | 매핑망이 만든 스타일 벡터를 층마다 주입해 자세·정체성 같은 큰 특성과 주근깨·머리카락 같은 세부를 분리 | 엔비디아 연구진. 고해상도 얼굴 생성의 대명사, 고해상도 얼굴 데이터셋 FFHQ 공개 |
| SPADE/GauGAN(2019)[23] | 의미 분할 지도로 정규화층을 공간별로 조절 | 색칠한 영역 지도에서 풍경 사진 생성 |
| HiFi-GAN(2020)[24] | 멜 스펙트로그램에서 파형을 만드는 보코더, 주기 패턴을 보는 판별자 | V100 GPU 한 장에서 22.05kHz 음성을 실시간의 167.9배 속도로 생성 |
| GigaGAN(2023)[25] | StyleGAN을 대규모 텍스트-이미지 학습에 맞게 확장 | 512px 이미지를 0.13초에 생성. GAN도 텍스트-이미지 생성에 쓸 수 있음을 보임 |
- 이미지 생성과 편집: 얼굴·풍경 생성, 잠재 공간 보간과 속성 편집, 화풍 변환, 흑백 이미지 채색.
- 초해상도와 복원: SRGAN 계열은 저해상도 이미지나 영상을 키우면서 질감을 복원한다.
- 이미지 변환: Pix2Pix(쌍 있는 데이터), CycleGAN·DiscoGAN(쌍 없는 데이터).
- 음성 합성: 음성 합성 파이프라인의 마지막 단계인 보코더에서 HiFi-GAN 같은 GAN 기반 모델이 자기회귀 보코더보다 훨씬 빠르게 음성을 만든다.[24]
- 데이터 증강: 의료 영상처럼 데이터가 적은 분야에서 학습용 합성 데이터를 만든다.
- 다른 생성 모델의 부품: 잠재 확산 모델의 오토인코더를 학습할 때 복원 이미지가 흐려지지 않도록 적대 손실을 더하는 방식이 쓰이고, 확산 모델을 1~4단계 생성으로 줄이는 적대적 확산 증류(ADD)도 판별자를 쓴다.[26]
- 악용: 실존 인물의 얼굴을 바꾸거나 존재하지 않는 인물 사진을 만드는 데 쓰여 딥페이크 문제를 낳았다.
굿펠로는 2014년 몬트리올 대학교 박사과정 시절, 동료의 졸업을 축하하던 몬트리올의 술집에서 "두 신경망을 서로 맞붙이면 어떨까"라는 착상을 얻었고, 그날 밤 집에서 새벽까지 코드를 짜 시험했더니 처음부터 동작했다고 회고했다.[27] 논문은 2014년 6월 arXiv에 공개되고 같은 해 NeurIPS(당시 NIPS)에서 발표되었다.[1] 공저자에는 지도교수 요슈아 벤지오(Yoshua Bengio)도 있다.
초기 GAN은 작은 흑백 이미지 수준이었지만, 2015년 DCGAN이 합성곱 구조 지침을 정리하면서 실용적인 이미지 생성이 가능해졌다. 2016년 굿펠로는 NIPS에서 GAN 튜토리얼을 열어 다른 생성 모델과의 비교와 연구 과제를 정리했다.[28] 2017~2019년에는 WGAN 계열의 안정화, ProGAN·BigGAN·StyleGAN의 고해상도화가 이어지며 GAN이 이미지 생성의 사실상 표준이었다. GigaGAN 논문도 이 시기를 "StyleGAN 같은 기법과 함께 GAN이 사실상 표준이던 때"로 정리한다.[25]
2020년 DDPM 이후 확산 모델이 빠르게 발전했고, 2021년 OpenAI의 다리왈(Prafulla Dhariwal)과 니컬(Alex Nichol)은 논문 제목 그대로 "확산 모델이 이미지 합성에서 GAN을 이긴다"는 결과를 내놓았다. ImageNet 256×256에서 FID 4.59를 기록하고 25번의 순전파만으로 BigGAN-deep과 같은 품질을 내면서도 분포를 더 넓게 덮었다고 보고했다.[29] 2022년 DALL-E 2, 스테이블 디퓨전 이후 대규모 텍스트-이미지 생성은 자기회귀 모델과 확산 모델이 표준이 되었다.[25] 밀린 이유는 대체로 다음과 같이 정리된다.
- 확산 모델은 단순한 회귀 손실 하나로 안정적으로 학습되어 규모를 키우기 쉽다. GAN은 StyleGAN 구조를 단순히 키우면 금방 불안정해졌다.[25]
- 확산 모델은 데이터 분포 전체를 덮는 경향이 있어 다양성이 높고, GAN은 모드 붕괴로 다양성이 떨어지기 쉽다.[29]
- 텍스트 같은 복잡한 조건을 넣고 분류기 없는 가이던스로 품질과 다양성을 조절하는 방법이 확산 모델 쪽에서 먼저 정립되었다.
반면 GAN은 한 번의 순전파로 생성하므로 수십 단계 이상 반복하는 확산 모델보다 추론이 훨씬 빠르다. 그래서 실시간성이 중요한 음성 보코더, 영상 처리, 모바일 환경에서는 여전히 쓰이고, 확산 모델의 단계 수를 줄이는 증류에도 적대 손실이 다시 쓰인다.
- ↑ 1.0 1.1 1.2 1.3 1.4 1.5 Ian J. Goodfellow 외, 〈Generative Adversarial Nets〉, NeurIPS 2014. arXiv:1406.2661
- ↑ 2.0 2.1 2.2 Martin Heusel 외, 〈GANs Trained by a Two Time-Scale Update Rule Converge to a Local Nash Equilibrium〉, NeurIPS 2017. arXiv:1706.08500
- ↑ Tim Salimans 외, 〈Improved Techniques for Training GANs〉, NeurIPS 2016. arXiv:1606.03498
- ↑ Takeru Miyato 외, 〈Spectral Normalization for Generative Adversarial Networks〉, ICLR 2018. arXiv:1802.05957
- ↑ Mehdi Mirza, Simon Osindero, 〈Conditional Generative Adversarial Nets〉, 2014. arXiv:1411.1784
- ↑ Alec Radford, Luke Metz, Soumith Chintala, 〈Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks〉, ICLR 2016. arXiv:1511.06434
- ↑ Xi Chen 외, 〈InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets〉, NeurIPS 2016. arXiv:1606.03657
- ↑ Phillip Isola 외, 〈Image-to-Image Translation with Conditional Adversarial Networks〉, CVPR 2017. arXiv:1611.07004
- ↑ Christian Ledig 외, 〈Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network〉, CVPR 2017. arXiv:1609.04802
- ↑ Han Zhang 외, 〈StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks〉, ICCV 2017. arXiv:1612.03242
- ↑ Jiajun Wu 외, 〈Learning a Probabilistic Latent Space of Object Shapes via 3D Generative-Adversarial Modeling〉, NeurIPS 2016. arXiv:1610.07584
- ↑ Xudong Mao 외, 〈Least Squares Generative Adversarial Networks〉, ICCV 2017. arXiv:1611.04076
- ↑ Martin Arjovsky, Soumith Chintala, Léon Bottou, 〈Wasserstein GAN〉, ICML 2017. arXiv:1701.07875
- ↑ Ishaan Gulrajani 외, 〈Improved Training of Wasserstein GANs〉, NeurIPS 2017. arXiv:1704.00028
- ↑ Jun-Yan Zhu 외, 〈Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks〉, ICCV 2017. arXiv:1703.10593
- ↑ Taeksoo Kim 외, 〈Learning to Discover Cross-Domain Relations with Generative Adversarial Networks〉, ICML 2017. arXiv:1703.05192
- ↑ Tero Karras 외, 〈Progressive Growing of GANs for Improved Quality, Stability, and Variation〉, ICLR 2018. arXiv:1710.10196
- ↑ Han Zhang 외, 〈Self-Attention Generative Adversarial Networks〉, ICML 2019. arXiv:1805.08318
- ↑ Andrew Brock, Jeff Donahue, Karen Simonyan, 〈Large Scale GAN Training for High Fidelity Natural Image Synthesis〉, ICLR 2019. arXiv:1809.11096
- ↑ Tero Karras, Samuli Laine, Timo Aila, 〈A Style-Based Generator Architecture for Generative Adversarial Networks〉, CVPR 2019. arXiv:1812.04948
- ↑ Tero Karras 외, 〈Analyzing and Improving the Image Quality of StyleGAN〉, CVPR 2020. arXiv:1912.04958
- ↑ Tero Karras 외, 〈Alias-Free Generative Adversarial Networks〉, NeurIPS 2021. arXiv:2106.12423
- ↑ Taesung Park 외, 〈Semantic Image Synthesis with Spatially-Adaptive Normalization〉, CVPR 2019. arXiv:1903.07291
- ↑ 24.0 24.1 Jungil Kong, Jaehyeon Kim, Jaekyoung Bae, 〈HiFi-GAN: Generative Adversarial Networks for Efficient and High Fidelity Speech Synthesis〉, NeurIPS 2020. arXiv:2010.05646
- ↑ 25.0 25.1 25.2 25.3 Minguk Kang 외, 〈Scaling up GANs for Text-to-Image Synthesis〉, CVPR 2023. arXiv:2303.05511
- ↑ Axel Sauer 외, 〈Adversarial Diffusion Distillation〉, 2023. arXiv:2311.17042
- ↑ Martin Giles, 〈The GANfather: The man who's given machines the gift of imagination〉, MIT Technology Review, 2018년 2월 21일. technologyreview.com
- ↑ Ian Goodfellow, 〈NIPS 2016 Tutorial: Generative Adversarial Networks〉, 2016. arXiv:1701.00160
- ↑ 29.0 29.1 Prafulla Dhariwal, Alex Nichol, 〈Diffusion Models Beat GANs on Image Synthesis〉, NeurIPS 2021. arXiv:2105.05233

