가짜를 만드는 생성자와 가짜를 가려내는 판별자, 두 신경망이 서로 겨루며 함께 실력이 느는 생성 모델이다. 진짜 같은 가짜 데이터를 만들어 얼굴 이미지 생성, 사진 변환, 부족한 학습 데이터 보강에 쓴다.
| 역할 | 하는 일 | 목표 |
|---|---|---|
| 생성자 (Generator) | 가짜 데이터를 만든다 | 판별자를 속인다 |
| 판별자 (Discriminator) | 진짜와 가짜를 가려낸다 | 속지 않는다 |
위조지폐범과 감별사가 경쟁하며 둘 다 발전하는 것과 같다. 이름에 '적대적(Adversarial)'이 붙은 것도 이 경쟁 구조 때문이다. 이 경쟁을 계속 반복하면 생성자는 판별자도 구분하기 어려울 만큼 정교한 가짜를 만들게 된다.
GAN은 목적에 따라 여러 갈래로 나뉜다. 무엇을 만들거나 바꾸고 싶은지에 맞춰 고르면 된다.
| 변형 | 이럴 때 쓴다 |
|---|---|
| 조건부 GAN (Pix2Pix 등) | 스케치를 사진으로, 낮 사진을 밤 사진으로 바꿀 때 |
| StyleGAN | 나이·표정·머리 스타일을 조절하며 실사 같은 얼굴을 만들 때 |
| CycleGAN | 짝지은 학습 데이터 없이 말 사진을 얼룩말로 바꾸는 식의 변환을 할 때 |
GAN은 학습이 까다롭기로 유명하다. 두 신경망의 실력 균형이 깨지면 학습이 무너진다. 판별자가 너무 강하면 생성자가 배울 신호를 못 받고, 생성자가 너무 앞서면 판별자가 쓸모없어진다.
모드 붕괴도 자주 생긴다. 생성자가 다양한 결과를 만들지 않고 판별자를 잘 속이는 특정 패턴만 되풀이하는 현상이다.
요즘 이미지 생성은 이런 한계를 상당 부분 극복한 Diffusion 모델이 GAN의 자리를 많이 차지했다. 그래도 GAN은 결과를 내는 속도가 빠르고 일부 분야에서는 여전히 강해서, 빠른 응답이 중요한 작업이라면 지금도 고려할 만하다.
GAN이 가장 많이 쓰인 곳은 이미지다. 세상에 없는 사람의 얼굴을 만들거나, 흑백 사진에 색을 입히거나, 흐린 저해상도 이미지를 선명하게 키우는 일이 모두 GAN으로 된다. 의료 이미지처럼 학습 데이터가 부족할 때는 GAN으로 합성 이미지를 만들어 데이터를 채우기도 한다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 얼굴·인물 이미지 생성 | StyleGAN으로 실존하지 않는 얼굴을 만들고 나이·표정을 조절한다 |
| 사진 복원·편집 | 흑백 사진에 색을 입히고, 저해상도 이미지를 선명하게 키운다 |
| 학습 데이터 보강 | 의료 이미지처럼 데이터가 부족할 때 합성 이미지로 채운다 |
| 빠른 이미지 변환 | 응답 속도가 중요할 때 Diffusion 대신 한 번에 결과를 낸다 |