🤖 Deep Learning

AE(Auto Encoder) vs VAE(Variational Auto Encoder)

date
May 29, 2025
slug
vae
author
status
Public
tags
Deep Learning
Generative Models
Diffusion Models
summary
AE는 주로 데이터 압축 및 특징 추출에 중점을 두는 반면, VAE는 새로운 데이터를 생성하는 생성 모델로써의 능력에 더 중점을 둡니다.
type
Post
thumbnail
category
🤖 Deep Learning
updatedAt
May 31, 2025 10:10 AM
AE(Autoencoder, 오토인코더)와 VAE(Variational Autoencoder, 변이형 오토인코더)는 둘 다 신경망을 사용하여 데이터의 저차원 표현(잠재 공간, latent space)을 학습하는 비지도 학습 모델입니다. 하지만 그 목표와 잠재 공간을 다루는 방식에서 중요한 차이가 있습니다.
간단히 말해, AE는 주로 데이터 압축 및 특징 추출에 중점을 두는 반면, VAE는 새로운 데이터를 생성하는 생성 모델(Generative Model)로서의 능력에 더 중점을 둡니다.

오토인코더 (AE, Autoencoder)

  • 목표: 입력 데이터를 압축하여 저차원의 잠재 공간으로 인코딩(encoding)했다가, 다시 원래 차원으로 디코딩(decoding)하여 입력 데이터와 최대한 유사하게 복원하는 것을 목표로 합니다. 즉, 입력과 출력이 같은 '항등 함수'를 근사하려고 합니다.
  • 구조:
    • 인코더 (Encoder): 입력 데이터를 받아 저차원의 잠재 벡터(latent vector)로 압축합니다.
    • 잠재 공간 (Latent Space) / 병목 (Bottleneck): 인코더가 생성한 압축된 표현이 존재하는 공간입니다.
    • 디코더 (Decoder): 잠재 벡터를 받아 원래 차원의 데이터로 복원합니다.
  • 학습 방식: 입력 데이터와 복원된 데이터 간의 복원 손실(Reconstruction Loss) (예: Mean Squared Error)을 최소화하도록 학습합니다.
  • 잠재 공간의 특징:
    • AE는 잠재 공간의 구조에 대해 특별한 제약을 가하지 않습니다. 따라서 학습된 잠재 공간은 불연속적이거나 의미론적으로 잘 구조화되어 있지 않을 수 있습니다.
    • 잠재 공간의 특정 지점에서 샘플링하여 새로운 데이터를 생성하려고 해도, 그 지점이 학습 데이터가 밀집된 영역에서 벗어나 있다면 의미 없는 결과가 나올 가능성이 높습니다.
  • 주요 용도:
    • 차원 축소 (Dimensionality Reduction)
    • 특징 학습 (Feature Learning)
    • 데이터 노이즈 제거 (Denoising Autoencoder)
    • 데이터 압축

변이형 오토인코더 (VAE, Variational Autoencoder)

  • 목표: AE와 유사하게 입력 데이터를 인코딩하고 디코딩하지만, 생성 모델로서의 역할을 강조합니다. 즉, 학습 데이터의 분포를 학습하여 그럴듯한 새로운 데이터를 생성하는 것을 목표로 합니다.
  • 구조: AE와 유사하지만, 인코더의 출력이 다릅니다.
    • 인코더 (Encoder): 입력 데이터를 받아 잠재 공간에서의 확률 분포의 파라미터(일반적으로 정규 분포의 평균(μ)과 분산(σ^2))를 출력합니다.
    • 잠재 공간 (Latent Space): 인코더가 출력한 평균과 분산을 따르는 확률 분포(예: 정규 분포)에서 샘플링하여 잠재 벡터를 얻습니다. 이 샘플링 과정에 '재매개변수화 트릭(Reparameterization Trick)'이 사용되어 역전파가 가능해집니다.
    • 디코더 (Decoder): 샘플링된 잠재 벡터를 받아 데이터를 복원(생성)합니다.
  • 학습 방식: 두 가지 손실 함수를 함께 사용합니다:
      1. 복원 손실 (Reconstruction Loss): AE와 동일하게 입력 데이터와 복원된 데이터 간의 유사도를 측정합니다.
      1. KL 발산 (KL Divergence) 손실 / 정규화 항: 인코더가 학습한 잠재 공간의 확률 분포가 우리가 가정한 사전 분포(Prior Distribution, 보통 표준 정규 분포 N(0,1))와 유사해지도록 강제합니다. 이는 잠재 공간이 연속적이고 잘 구조화되도록 만듭니다.
  • 잠재 공간의 특징:
    • KL 발산 손실 덕분에 VAE의 잠재 공간은 연속적이고 부드러우며(smooth), 의미론적으로 의미 있는 구조를 가지게 됩니다. 즉, 잠재 공간에서 가까운 지점들은 유사한 데이터를 생성하고, 한 지점에서 다른 지점으로 이동할 때 데이터가 점진적으로 변합니다.
    • 이러한 구조 덕분에 학습된 사전 분포에서 새로운 잠재 벡터를 샘플링하고 디코더에 통과시키면 새롭고 그럴듯한 데이터를 생성할 수 있습니다.
  • 주요 용도:
    • 데이터 생성 (이미지, 텍스트, 오디오 등)
    • 잠재 변수 모델링
    • 데이터 보간 (Interpolation)

AE와 VAE의 핵심 차이점 요약

특징
오토인코더 (AE)
변이형 오토인코더 (VAE)
주요 목표
데이터 압축, 특징 학습, 복원
데이터 생성, 잠재 공간의 확률 분포 학습
잠재 공간
결정론적 매핑 (하나의 잠재 벡터)
확률론적 매핑 (분포의 파라미터 → 샘플링)
잠재 공간 구조
제약 없음, 불연속적이거나 비구조적일 수 있음
연속적, 부드러움, 사전 분포(예: 정규 분포)를 따르도록 강제
생성 능력
제한적 (잠재 공간에서 샘플링하기 어려움)
뛰어남 (잠재 공간에서 샘플링하여 새로운 데이터 생성 가능)
손실 함수
복원 손실
복원 손실 + KL 발산 손실 (정규화)
모델 유형
표현 학습 모델
생성 모델

VAE의 잠재 공간과 샘플링 과정

일반적인 오토인코더(AE)는 입력 데이터 x가 주어지면 인코더를 통해 하나의 고정된 잠재 벡터 z를 만듭니다. z=Encoder(x)
하지만 VAE는 다릅니다. VAE의 인코더는 입력 데이터 x가 주어졌을 때, 잠재 공간에서 이 데이터가 어떤 확률 분포를 따르는지를 나타내는 파라미터들을 출력합니다. 가장 흔하게는 정규 분포(Gaussian Distribution)를 가정하며, 이 경우 인코더는 다음 두 가지를 출력합니다:
  1. 평균 (Mean, μ): 이 데이터 포인트가 잠재 공간에서 가질 가능성이 가장 높은 중심 위치.
  1. 분산 (Variance, σ^2) 또는 로그 분산 (Log Variance, logσ^2): 이 데이터 포인트가 잠재 공간에서 얼마나 퍼져 있을 수 있는지(불확실성)를 나타내는 값. (실제로는 학습 안정성을 위해 로그 분산을 출력하고, 이를 변환하여 표준편차 σ를 구하는 경우가 많습니다.)
즉, 인코더의 출력은 다음과 같습니다: (μ,σ^2)=Encoder(x)

"샘플링"의 의미

이제 인코더가 출력한 평균(μ)과 분산(σ^2)을 가진 정규 분포 N(μ,σ^2)를 알고 있습니다. "샘플링"이란, 이 확률 분포로부터 실제로 하나의 값(여기서는 잠재 벡터 z)을 뽑아내는 과정을 의미합니다.
정규 분포는 종 모양의 그래프를 가지며, 평균(μ) 주변의 값들이 나올 확률이 높고, 평균에서 멀어질수록 나올 확률이 낮아집니다. VAE는 이 분포에서 "무작위로" (하지만 분포의 형태를 반영하여) 하나의 점, 즉 잠재 벡터 z를 선택합니다.
왜 그냥 평균(μ)을 사용하지 않고 샘플링을 할까요?
  • 생성 능력: VAE의 목표 중 하나는 새로운 데이터를 생성하는 것입니다. 잠재 공간이 연속적이고 부드러운 분포를 가지도록 강제하면(KL 발산 손실을 통해), 이 분포의 여러 지점에서 샘플링하여 다양한 데이터를 생성할 수 있습니다. 만약 항상 평균값만 사용한다면, 잠재 공간의 다양성을 충분히 활용하지 못하게 됩니다.
  • 불확실성 모델링: 분산(σ^2)을 통해 각 데이터 포인트의 잠재 표현에 대한 불확실성을 모델링할 수 있습니다.
  • 정규화 효과: KL 발산 손실과 함께 샘플링 과정은 잠재 공간이 특정 사전 분포(보통 표준 정규 분포 N(0,1))를 따르도록 강제하여, 잠재 공간이 너무 특정 데이터에만 맞춰지거나 과적합되는 것을 방지하고, 더 일반화된 표현을 학습하도록 돕습니다.

재매개변수화 트릭 (Reparameterization Trick)

여기서 한 가지 중요한 기술적인 문제가 있습니다. "무작위 샘플링" 과정은 미분이 불가능하여 신경망의 학습 과정인 역전파(Backpropagation)를 방해합니다.
이를 해결하기 위해 "재매개변수화 트릭(Reparameterization Trick)"이라는 기법을 사용합니다.
z를 N(μ,σ^2)에서 직접 샘플링하는 대신, 다음과 같이 변환합니다:
z=μ+σ⋅ϵ
여기서:
  • μ: 인코더가 출력한 평균
  • σ: 인코더가 출력한 분산으로부터 계산된 표준편차
  • ϵ: 표준 정규 분포 N(0,1)에서 샘플링된 고정된 무작위 노이즈 (평균이 0이고 분산이 1인 정규 분포에서 뽑은 임의의 값)
이렇게 하면:
  1. 무작위성은 ϵ에만 의존하게 됩니다. ϵ은 학습 과정과 무관한 외부에서 주어지는 값입니다.
  1. μ와 σ는 인코더의 출력(즉, 신경망의 파라미터에 의해 결정됨)이므로 미분이 가능합니다.
  1. 따라서 전체 잠재 벡터 z를 생성하는 과정이 미분 가능해져서, 역전파를 통해 인코더와 디코더를 학습시킬 수 있게 됩니다.

결론적으로, VAE는 다음과 같은 과정을 거칩니다:
  1. 입력 데이터 x가 인코더에 들어갑니다.
  1. 인코더는 잠재 공간에서의 확률 분포(예: 정규 분포)의 파라미터인 평균 μ와 분산 σ^2를 출력합니다.
  1. 이 평균 μ와 표준편차 σ (분산에서 계산)를 사용하여, 표준 정규 분포에서 샘플링한 노이즈 ϵ과 결합하여 최종 잠재 벡터 z=μ+σ⋅ϵ를 "샘플링" 합니다.
  1. 이 샘플링된 잠재 벡터 z가 디코더로 들어가 데이터를 복원하거나 새로운 데이터를 생성합니다.
이 "샘플링" 과정은 VAE가 잠재 공간의 확률적 특성을 학습하고 이를 바탕으로 다양한 데이터를 생성할 수 있게 하는 핵심적인 메커니즘입니다.

어떻게 1개의 입력으로 평균(μ)과 표준편차(σ)를 만들 수 있을까요?

이것은 신경망(인코더)의 구조와 학습 방식 덕분입니다.
VAE의 인코더는 일반적인 신경망과 유사한 구조를 가집니다. 예를 들어, 여러 개의 완전 연결 계층(fully connected layers)이나 컨볼루션 계층(convolutional layers)으로 구성될 수 있습니다.
핵심은 인코더의 마지막 출력 계층입니다.
  1. 입력 데이터 처리: 입력 데이터 x가 인코더의 여러 계층을 통과하면서 특징(feature)들이 추출되고 변환됩니다.
  1. 두 개의 출력 헤드(Output Heads): 인코더의 마지막 부분은 두 개의 별도 출력 경로(또는 "헤드")를 가지도록 설계됩니다.
      • 첫 번째 헤드: 잠재 공간에서의 평균(μ) 벡터를 출력합니다. 이 벡터의 차원 수는 우리가 정의한 잠재 공간의 차원 수와 같습니다.
      • 두 번째 헤드: 잠재 공간에서의 로그 분산(logσ^2) 벡터를 출력합니다. (분산 σ^2을 직접 출력하는 대신 로그 분산을 출력하는 이유는 학습 안정성과 음수가 아닌 값을 보장하기 위함입니다.) 이 벡터의 차원 수도 잠재 공간의 차원 수와 같습니다.
  1. 신경망의 학습:
      • 인코더 신경망의 가중치(weights)와 편향(biases)은 학습 데이터를 통해 최적화됩니다.
      • 학습 과정에서 손실 함수(복원 손실 + KL 발산 손실)를 최소화하는 방향으로 가중치가 업데이트됩니다.
      • 이 과정에서 인코더는 입력 데이터 x를 보고 "이 데이터 x를 가장 잘 나타내는 잠재 공간에서의 정규 분포는 평균이 μ이고 분산이 σ^2인 분포이다" 라고 "판단"하도록 학습됩니다.
      • 즉, 신경망은 입력 데이터의 패턴을 인식하여, 그 패턴에 해당하는 적절한 μ와 σ^2 값을 예측(predict) 또는 추정(estimate)하도록 훈련되는 것입니다.
간단한 비유:
만약 우리가 사람의 키와 몸무게를 입력받아, 그 사람의 "건강 점수"를 나타내는 평균과 표준편차를 예측하는 신경망을 만든다고 상상해 보세요.
  • 입력: 키 (예: 175cm), 몸무게 (예: 70kg)
  • 신경망 (인코더): 이 키와 몸무게 정보를 바탕으로 여러 계산을 수행합니다.
  • 출력:
    • 건강 점수 평균 (예: 85점)
    • 건강 점수 표준편차 (예: 5점)
이처럼, VAE의 인코더도 복잡한 입력 데이터(이미지 픽셀 값들, 텍스트 임베딩 등)를 받아, 그 데이터를 잠재 공간에서 표현할 수 있는 정규 분포의 파라미터인 μ와 σ^2를 "계산해내는" 함수라고 생각할 수 있습니다. 이 "계산"은 신경망의 학습된 가중치를 통해 이루어집니다.
요약:
하나의 입력 데이터가 인코더 신경망을 통과하면, 인코더의 마지막 부분에 설계된 두 개의 별도 출력 경로가 각각 해당 입력 데이터에 대한 잠재 공간에서의 평균 벡터(μ)로그 분산 벡터(logσ^2)를 출력합니다. 이는 신경망이 입력 데이터의 특징을 바탕으로 해당 분포의 파라미터를 "추정"하도록 학습되기 때문에 가능합니다.

잠재 공간과 데이터의 표현

  1. 잠재 공간 (Latent Space):
      • VAE는 원본 데이터를 더 낮은 차원의 공간인 잠재 공간으로 압축하여 표현하려고 합니다. 이 잠재 공간은 원본 데이터의 중요한 특징들을 함축하고 있어야 합니다.
      • 예를 들어, 손글씨 숫자 이미지 데이터셋(MNIST)을 학습한다면, 잠재 공간의 각 점은 특정 숫자 이미지의 압축된 표현이 됩니다.
  1. 입력 데이터 x의 잠재 표현 z:
      • 우리가 원하는 것은 각 입력 데이터 x (예: 특정 숫자 '7' 이미지)에 대해 잠재 공간에서 이 x를 잘 나타내는 점(잠재 벡터 z)을 찾는 것입니다.

VAE의 확률론적 접근

일반적인 오토인코더(AE)는 입력 x에 대해 하나의 고정된 잠재 벡터 z를 결정론적으로 계산합니다.
하지만 VAE는 여기서 더 나아가 확률론적인 관점을 도입합니다.
  • "입력 x가 주어졌을 때, 이 x에 해당하는 최적의 잠재 벡터 z는 정확히 이 점이다!"라고 단정하는 대신,
  • "입력 x가 주어졌을 때, 이 x에 해당하는 잠재 벡터 z는 아마도 이 평균(μ)을 중심으로 이 정도의 표준편차(σ)를 가지는 영역(확률 분포) 안에 있을 것이다!"라고 생각합니다.
즉, VAE의 인코더는 입력 데이터 x를 보고, 이 x에 대한 잠재 벡터 z가 어떤 확률 분포 p(z∣x)를 따르는지 추정합니다. 그리고 계산의 편의성과 일반성을 위해 이 확률 분포 p(z∣x)를 정규 분포(Gaussian Distribution)로 가정하는 경우가 많습니다.
따라서, 인코더가 출력하는 μ와 σ는 다음과 같습니다:
  • μ (평균): 입력 x에 대응되는 잠재 벡터 z들이 가장 밀집되어 있을 것으로 예상되는 중심 위치 (잠재 공간에서의 좌표).
  • σ (표준편차): 입력 x에 대응되는 잠재 벡터 z들이 그 중심(μ)으로부터 어느 정도 퍼져 있을 수 있는지(불확실성의 정도).

비유를 통한 이해

손글씨 숫자 '7' 이미지를 예로 들어보겠습니다.
  • 입력 x: 누군가가 쓴 '7' 이미지.
  • VAE 인코더의 역할: 이 '7' 이미지를 보고, "이 이미지를 잠재 공간에서 표현한다면, 아마도 '이상적인 7의 형태'를 나타내는 중심점(μ) 근처에 있을 것이고, 필체의 미세한 차이 때문에 이 정도의 흩어짐(σ)을 가질 것이다"라고 판단하여 μ와 σ를 출력합니다.
즉, μ와 σ는 "특정 입력 데이터 x에 대한 잠재 벡터 z의 분포"에 대한 파라미터입니다.
이 분포에서 z를 샘플링한다는 것은, "이상적인 7의 형태(μ)"를 중심으로 약간의 "개성(σ⋅ϵ)"을 더한 구체적인 잠재 벡터 하나를 뽑아내는 것과 같습니다. 그리고 이 z를 디코더에 넣으면 다시 '7' 이미지가 (원본과 약간 다를 수 있는, 하지만 여전히 '7'로 인식 가능한) 생성되는 것입니다.
이것이 VAE가 단순한 복원을 넘어 새로운 데이터를 생성할 수 있는 이유 중 하나입니다. 잠재 공간을 확률 분포로 모델링함으로써, 그 분포 내의 다양한 지점에서 샘플링하여 다양한 결과물을 만들어낼 수 있기 때문입니다.