AI VIDEO BRIEFING

GAN(생성적 적대 신경망) 원리 입문: 생성자·판별자·로그 손실 쉽게 정리

실존하지 않는 얼굴을 만들어내는 GAN의 원리를, 2x2 픽셀 '기울어진 세계' 예시로 생성자와 판별자, 로그 손실, 적대적 학습까지 손으로 따라가며 설명합니다.

GAN 쉽게 이해하기: 위조범과 경찰처럼 겨루는 두 신경망의 원리 영상 대표 이미지

핵심 메시지

  • GAN(생성적 적대 신경망)은 생성자와 판별자라는 두 신경망이 위조범과 경찰처럼 서로 겨루며 함께 성장하는 구조다.
  • 판별자는 진짜 이미지와 생성자가 만든 가짜를 구별하도록, 생성자는 판별자를 속여 가짜를 진짜로 분류하게 만들도록 학습한다.
  • 두 신경망의 오차 함수는 로그 손실로 정의되며 서로 반대 방향으로 다투지만, 각 손실이 자기 쪽 가중치만 갱신하므로 충돌 없이 둘 다 개선된다.
  • 강사는 2x2 픽셀 흑백 화면뿐인 '기울어진 세계'라는 단순 예시로, 깊은 학습 라이브러리 없이 파이썬만으로 GAN을 만들어 직관과 수식을 함께 보여준다.

쉽게 이해하기

GAN(Generative Adversarial Networks, 생성적 적대 신경망)은 이안 굿펠로와 몬트리올의 동료들이 제안한 기계학습의 큰 진전이다. 가장 화제가 된 응용은 얼굴 생성으로, 'this person does not exist' 같은 사이트에서 볼 수 있는 인물 사진들은 실제로는 존재하지 않는 사람들이며 전부 신경망이 만들어낸 것이다. 강사 루이스 세라노는 이 복잡해 보이는 기술을 아주 단순한 예시로 풀어낸다.

GAN의 핵심은 서로 겨루는 한 쌍의 신경망이다. 하나는 생성자(generator), 다른 하나는 판별자(discriminator)다. 강사는 이를 위조범과 경찰에 비유한다. 위조범은 끊임없이 가짜 그림을 만들고 경찰은 이를 잡아내려 하는데, 위조범은 잡힐 때마다 실력을 키워 결국 경찰을 완전히 속이는 완벽한 그림을 그리게 된다. 마찬가지로 생성자는 가짜 이미지를 만들고, 판별자는 진짜와 가짜를 구별하도록 학습하며, 생성자는 판별자를 속이도록 학습한다.

이해를 돕기 위해 강사는 화면 해상도가 2x2 픽셀뿐이고 모두가 45도로 기울어진 '기울어진 세계'를 상상한다. 이 세계의 얼굴은 화면에서 대각선(역슬래시) 모양으로 보인다. 흰 픽셀은 0, 검은 픽셀은 1로 값을 매긴다. 판별자는 왼쪽 위와 오른쪽 아래 픽셀 값을 더하고 나머지 두 모서리 값을 빼는 방식으로 얼굴을 가려낸다. 얼굴이면 이 값이 크고(예: 2) 잡음 이미지면 작다(예: -0.5). 여기에 기준값 1을 두고 시그모이드를 적용해 얼굴일 확률을 구한다.

생성자도 같은 직관을 거꾸로 쓴다. 0과 1 사이 임의의 입력값 z를 받아, 왼쪽 위·오른쪽 아래는 큰 값이 나오도록 양의 가중치를, 나머지 모서리는 작은 값이 나오도록 음의 가중치를 두면 어떤 입력이 들어와도 항상 얼굴 모양을 만들어낸다. 강사는 처음에는 가중치를 눈대중으로 정해 보여주지만, 실제로는 오차 함수와 역전파로 최적의 가중치를 학습한다고 설명한다.

학습에 쓰이는 오차 함수는 로그 손실이다. 정답이 1이면 -log(예측), 정답이 0이면 -log(1-예측)을 쓴다. 예측이 정답에서 멀수록 값이 커진다(예: -log(0.1)≈2.3은 크고 -log(0.9)≈0.1은 작다). 학습 과정에서 생성자는 임의의 z로 가짜 이미지를 만들고 판별자에 통과시킨다. 이때 판별자는 가짜이므로 0을 내야 해 -log(1-D(G(z)))를 오차로 쓰고, 생성자는 판별자가 1을 내길 원하므로 -log(D(G(z)))를 오차로 쓴다. 두 오차는 서로 반대로 다투지만 각자 자기 쪽 가중치만 바꾸므로 충돌 없이 둘 다 발전한다.

주요 인사이트

  • GAN은 단일 신경망이 아니라 생성자와 판별자가 적대적으로 경쟁하는 '한 쌍의 시스템'이며, 이 경쟁 자체가 학습의 동력이다.
  • 판별자와 생성자는 정반대의 목표를 갖지만, 판별자용 손실은 판별자 가중치만, 생성자용 손실은 생성자 가중치만 갱신하기 때문에 서로 부딪히지 않고 함께 좋아진다.
  • 로그 손실은 정답이 1일 때와 0일 때 형태를 달리해, 예측이 정답에 가까우면 작은 오차, 멀면 큰 오차를 주도록 설계된다.
  • GAN의 학습은 결국 역전파와 경사 하강법의 반복이다. 임의의 z로 가짜를 만들고, 판별하고, 진짜 이미지도 함께 넣어 양쪽 가중치를 조금씩 갱신하는 과정을 수없이 되풀이한다.
  • 복잡한 딥러닝 프레임워크 없이도 2x2 픽셀 예시로 GAN의 핵심 직관과 수식을 모두 구현할 수 있어, 개념 학습에 매우 효과적이다.

자주 묻는 질문

GAN의 생성자와 판별자는 각각 무슨 일을 하나요?

생성자는 임의의 입력으로부터 가짜 이미지를 만들어내고, 판별자는 주어진 이미지가 진짜인지 생성자가 만든 가짜인지 구별합니다. 생성자는 판별자를 속이도록, 판별자는 속지 않도록 서로 겨루며 학습합니다.

두 신경망의 오차 함수가 서로 반대인데 왜 충돌하지 않나요?

생성자용 오차 -log(D(G(z)))와 판별자용 오차 -log(1-D(G(z)))는 목표가 정반대지만, 각 오차의 미분이 자기 쪽 신경망의 가중치만 갱신합니다. 그래서 서로 부딪히지 않고 두 신경망이 함께 개선됩니다.

왜 로그 손실(log loss)을 오차 함수로 쓰나요?

예측이 정답에 가까우면 작은 오차를, 멀면 큰 오차를 주기 때문입니다. 정답이 1이면 -log(예측)을, 0이면 -log(1-예측)을 써서 둘 다 '틀릴수록 크게 벌점을 주는' 성질을 만족시킵니다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗

관련 AI 소식