스킬캠퍼스
Day 16 · Autoencoder & VAE
강의

오늘 끝나면

Autoencoder & VAE

  • Autoencoder & VAE의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 Autoencoder이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

힌튼 2006 → 킹마 2013 — 잠재공간과 재매개변수화 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

  • 실습의 기본값을 먼저 관찰
  • 입력값이나 모드를 한 번 이상 바꿔 결과 비교
  • 왜 결과가 바뀌었는지 한 문장으로 설명

AI · Day 16 / 생성 모델

압축의 미학,
생성의 씨앗

데이터를 좁은 병목에 욱여넣었다 다시 펼침. 오토인코더는 그 압축으로 본질을 배움. VAE는 그 압축을 확률분포로 바꿈. 그래서 본 적 없는 데이터를 만드는 첫 생성 모델이 됨.

P.01AI · Day 16

딥러닝이 죽었다던 시절

2006년, 신경망은 두 번째 겨울. "Deep한 망은 학습 안 됨"이 상식이었음. 연구자 대부분이 SVM·부스팅으로 떠남.

근데 2006년 Geoffrey Hinton이 Science에 논문 한 편 던짐. 제목은 Reducing the Dimensionality of Data with Neural Networks. 깊은 망도 학습됨. 그 도구가 Autoencoder임.

이게 딥러닝 2차 부활의 신호탄임. AlexNet보다 6년 빠름. 압축이라는 단순한 아이디어가 멈춘 분야를 다시 움직임.

딥러닝 2차 부활 · 2006
1987 · BallardAE 아이디어 원조1988 · Bourlard선형 AE = PCA 증명2006 · HintonDeep AE · 2차 부활2008 · VincentDenoising AE2013 · KingmaVAE 등장2017 · van den OordVQ-VAE → DALL·E연도 ↓

파란 점이 분기점 — Hinton(2006)이 부활을, Kingma(2013)가 생성을 열었다

P.02AI · Day 16

병목이 의미를 만든다

구조는 모래시계임. 입력을 좁은 병목으로 압축함. 다시 원래 크기로 펼쳐 자기 자신을 복원함.

학습 목표는 하나, ‖x − x̂‖² 줄이기. 복원 결과가 원본과 얼마나 비슷한지 MSE로 잼. 근데 왜 병목을 둠? 병목 없으면 망은 입력을 그대로 복사하는 항등 함수만 배움. 손실 0이라 제일 쉬운 답이라 그럼.

병목을 강제하면 달라짐. 784차원을 32차원으로 줄이려면 망은 어쩔 수 없이 7이라는 개념, 0의 둥근 정도 같은 본질만 골라 담음. 활성화가 선형이면 이 해는 PCA와 똑같음. 비선형을 넣는 순간 PCA를 압도함.

ENCODER → 병목 → DECODER
x · 784z · 32병목x̂ · 784Encoder fθDecoder gφ압축 → 복원

좁은 병목이 항등 함수를 막고 본질만 남긴다 — 손실은 ‖x − x̂‖²

P.03AI · Day 16

점이 아니라 분포로

학습 끝난 AE에 질문 하나. 랜덤 잠재 벡터를 디코더에 넣으면 새 숫자가 나옴? 결과는 대부분 쓰레기 이미지임.

왜? AE는 각 샘플을 잠재 공간의 점 하나에 박아둘 뿐, 그 사이는 안 채움. 점과 점 사이엔 디코더가 본 적 없는 큰 공백이 있음. 거기서 뽑으면 의미 없는 출력이 나옴.

2013년 Kingma·Welling이 전환점을 만듦. 잠재 z를 점이 아니라 분포로 인코딩하자는 것. 인코더가 μσ를 내놓음. 손실에 KL 항을 더해 잠재 공간을 표준정규 쪽으로 끌어당김. 그러면 공간이 빈틈없이 연속됨. 어디서 뽑아도 그럴듯한 결과가 나옴. 이 연속성이 VAE를 생성 모델로 만든 비밀임.

AE 공백 vs VAE 연속
잠재 공간 탐험기 · z를 끌어 디코더가 그리는 숫자를 본다
잠재 평면 z (드래그)
017
z = (0.00, 0.00)
디코더 출력 x̂ (12×12)
선명도 ≈ 35%
현재 모드
VAE
가까운 점까지
0.88
선명도
35%
프로토타입 사이 — VAE라 매끄럽게 섞임
점 사이 공백으로 z를 끌어보면: AE는 깨지고, VAE는 두 숫자를 매끄럽게 모핑함. 이 연속성이 VAE를 생성 모델로 만든 비밀.
P.04AI · Day 16

역전파를 가능하게 한 한 수

VAE를 학습하려면 경사하강법이 필요함. 근데 한가운데 샘플링이라는 미분 불가능한 연산이 끼어 있음.

z ~ N(μ, σ²)에서 z를 뽑는 순간, 이건 랜덤 노드라 기울기가 정의 안 됨. 디코더 쪽 손실을 인코더의 μ, σ까지 흘려보낼 길이 끊김. Kingma의 해법은 단순함. 랜덤성을 바깥으로 밀어냄.

z = μ + σ · ε, 여기서 ε ~ N(0,1). 이제 랜덤한 건 외부 노이즈 ε뿐임. μ·σ로 가는 경로는 완전히 결정론적임. 그래서 기울기가 흐름. 샘플링을 연산 그래프 밖으로 빼낸 이 한 수가 나중에 Normalizing Flow·Diffusion 설계에까지 영향 줌.

파이썬 코드 보기
def reparameterize(mu, logvar):
    std = torch.exp(0.5 * logvar)   # sigma
    eps = torch.randn_like(std)     # eps ~ N(0,1)
    z = mu + std * eps              # z = mu + sigma*eps
    return z
# 단 3줄. 이 3줄이 VAE를 작동하게 했다.
REPARAMETERIZATION TRICK
μσε~N(0,1)×+zz = μ + σ · ε결정론적 경로 → 기울기 OK

랜덤성을 ε으로 밀어내 μ, σ는 결정론적 — 그래서 역전파가 통한다

P.05AI · Day 16

정상만 봐도 이상을 찾는다

AE의 가장 강력한 실무 응용은 이상 탐지임. 원리는 단순함. 정상 데이터만으로 학습하면 AE는 정상만 잘 복원함.

그래서 처음 보는 불량 샘플이 들어오면 재구성 오차가 크게 튐. 정상과 이상의 오차 분포가 갈라짐. 불량 유형별 라벨도 필요 없음. 반도체 웨이퍼 결함 검출, 제조 라인 품질 검사, 금융 이상거래 탐지가 모두 이 원리임. 라벨링 비용이 사실상 0으로 수렴함.

이 챕터의 교훈 셋. 첫째, 제약이 의미를 만듦 — 자원이 무한하면 우선순위가 사라짐. 둘째, 정답 하나가 아니라 가능성의 분포를 다룸. 셋째, 미분 가능성이 곧 학습 가능성임. 내일은 VAE의 흐릿함을 정면으로 깬 GAN을 만남.

Q. 왜 VAE가 만든 이미지는 GAN보다 흐릿할까?VAE의 재구성 손실은 MSE/BCE, 즉 픽셀별 평균 오차를 줄임. 모델이 불확실할 때 최적해는 "여러 정답의 평균"이 됨. 평균 이미지는 흐려짐. 게다가 KL 항이 잠재를 표준정규로 강제해 표현력을 제한함. 반면 GAN은 판별자가 선명한 샘플을 요구해서 또렷함 (대신 mode collapse 위험 있음).
재구성 오차 분포
임계값▢ 정상■ 이상재구성 오차 →

정상만 학습 → 이상은 복원 실패 → 오차가 임계값 너머로 튄다 (AUC 0.85~0.95)

3줄 요약

  1. 1힌튼 2006 → 킹마 2013 — 잠재공간과 재매개변수화
  2. 2Autoencoder & VAE은 준비운동 → 지도학습 → 시퀀스 → 생성모델 → 실무 적용 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

Autoencoder

힌튼 2006 → 킹마 2013 — 잠재공간과 재매개변수화

모델

입력을 받아 예측이나 출력을 만드는 계산 규칙

손실

예측이 정답에서 얼마나 빗나갔는지 재는 숫자