Develog

Autoencoder 본문

Technology/AI (2026)

Autoencoder

Priv 2026. 4. 11. 01:25

Non-Variational Autoencoder

MNIST를 사용한 오토인코더 훈련

MNIST는 인공지능 훈련용으로 준비된 가장 기초적인 데이터 세트이다.

MNIST에는 손 글씨로 작성한 흑백 숫자 이미지 784개가 포함되어 있다. MNIST를 활용한 훈련을 통해 오토인코더의 목적이 입력값과 출력값을 최대한 동일하게 만드는 것임을 알 수 있다. 이를 평가할 때는 MSE(평균 제곱 오차) 손실 함수가 사용된다.

MNIST가 오토인코더를 통과하는 과정을 단계별로 표현하면 아래와 같다.

  • 인코더: 데이터 압축하기. 784차원으로 구성된 복잡한 MNIST의 이미지 데이터가 2 ~ 10개가량의 작은 핵심 데이터로 압축된다. 압축된 결과물은 잠재 변수($Z$)가 된다.
  • 잠재 공간: 인코더에 의해 데이터가 가장 작게 압축되면 만들어지는 결과물. 데이터의 가장 본질적인 특징만 남게 된다.
  • 디코더: 데이터 복원 및 재구성하기. 잠재 공간 정보를 활용해 입력된 데이터로 재복원한다.

잠재 공간 시각화

잠재 공간을 시각화하면 학습할 수 있는 특성을 평가하는 것이 가능하다. 오토인코더는 입력 데이터에서 핵심적인 특징만 압축(인코더)하고 이를 바탕으로 잠재 공간을 형성한다. 이 잠재 공간을 시각화하면 인코더를 통해 추출한 특징에 따라 데이터가 잠재 공간 속에서 어떤 군집을 어디에 이루고 있는지 확인할 수 있다.

디코딩

CNN(합성곱 신경망)을 활용하는 오토인코더를 생성할 때는 입력 데이터의 중요한 특성만 남기고 나머지는 삭제하는 인코딩 작업을 수행해야 한다. 그렇다면 한 번 압축된 데이터를 원래 크기로 복원(디코딩)하기 위해서는 어떻게 해야 하는가?

  • 최근접 이웃법(Nearest Neighbour): 입력이 2 x 2 사이즈라면, 출력을 4 x 4 사이즈로 그대로 복사해 확장하는 방법. 주변의 값을 그대로 복사해 사용하므로 결과물 제작 속도는 빠르지만, 품질은 떨어지기 쉽다.
  • 이선형 보간법(Bilinear): 보간법을 사용하여 A값과 B값 사이의 중간값을 채운다. 수학적으로 연산하는 방법이기 때문에 최근접 이웃법보다 결과물 품질이 더 좋다.

라벨 없이 어떻게 학습할 것인가?

라벨은 머신러닝 과정에서 제대로 학습한 것인지 알려주는 정답지 역할을 한다. 즉, 사용자가 고양이 사진을 넣으면 라벨은 이 사진이 고양이 사진이라는 것을 알려준다.

오토인코더의 목표는 입력받은 데이터를 최대한 똑같이 다시 그려내는 '입력값의 복원'이다. 이 오토인코더는 입력 데이터 그 자체를 라벨(정답지)로 취급하는 비지도 학습 방식을 통해 라벨을 따로 제공하지 않아도 스스로 학습이 가능한 '비지도 학습' 방식을 사용한다.

오토인코더는 입력 데이터에서 유용한 정보를 추출(인코딩)하고, 이 추출된 정보는 다른 데이터의 분류 작업에 활용한다. 인코더를 사용하면 유용한 정보를 추출할 수 있기 때문에 인코더는 라벨 없는 학습의 필수 요소에 해당한다. 인코더에 의해 압축된 데이터의 특징 데이터를 $Z$라고 표현하며, 오토 인코더는 디코딩을 수행할 때 이 $Z$를 활용해 원본 데이터로 복원해야 한다.

원본 데이터를 압축하여 데이터의 핵심 특징만 남기기 때문에 복원(디코딩) 과정을 거치면 원본 데이터와 100% 동일하게 나올 수 없다. '손실 함수'는 이 원본 데이터 $X$와 복원 데이터 $X'$ 사이의 차이를 계산하는 함수이며 손실 함수의 값이 작을수록 더 정확하게 복원했음을 의미한다.

소프트맥스 함수 (Softmax function)

오토인코더 학습을 진행하고 나면 인코더가 추출한 특징 Z를 활용해 분류 작업을 수행해야 한다. 이진 분류가 두 개의 답 중에 하나를 고르는 문제를 푸는 것이었다면, 다중 클래스 분류는 3개 이상의 답 중에 하나를 고르는 문제를 푸는 것과 같다. 소프트맥스 함수는 이러한 다중 클래스 분류 문제를 풀기 위해 사용되는 함수이다.

소프트맥스 함수는 분류해야 하는 정답지(클래스)의 총 개수를 $K$라고 할 때, $K$차원의 벡터를 입력받아 각 클래스에 대한 확률을 추정한다. 확률 추정이 완료되면 그중에서 값이 가장 큰 항목을 정답으로 지목한다. 이때 소프트맥스 함수가 계산하는 확률의 총합은 항상 1이다.

Non-Variational Autoencoder의 한계

"새로운 Z 생성이 새로운 X 생성보다 훨씬 어렵다."

일반적인 NVAE(Non-Variational Autoencoder)는 데이터 $X$를 $Z$로 압축할 뿐, $Z$에 어떠한 규칙을 요구하지는 않는다. 이 때문에 잠재 공간($Z$) 속에 점이 흩어져있는데, 임의로 어떤 지점을 찍어야 의미가 있는 데이터가 저장된 곳인지 파악할 방법이 없다. 그러므로 규칙 없이 퍼져있는 잠재 공간 속에 유효한 의미를 지닌 새로운 점($Z$)을 생성하는 것도 매우 어렵다.

Variational Autoencoder

NVAE의 한계를 극복하기 위해 개량된 오토인코더이다.

VAE는 모든 $Z$가 그래프의 가운데가 산처럼 볼록 튀어나온 형태의 정규 분포(가우시안 분포) 속에 모이도록 강제하기 때문에 분포 중앙 근처에 아무 $Z$나 찍어도 디코더가 그럴싸한 결과물을 만들어낼 것임을 기대할 수 있다.

VAE는 데이터의 학습과 더불어 학습된 모델로부터 샘플링을 통해 새로운 데이터를 생성하는 것을 목표로 한다. 또한 완성된 이미지, $X$는 눈에 보이지 않는 특징을 정의하는 속성, 잠재 표현($Z$)으로부터 생성되었다고 가정한다.

  • $Z$: 이미지 속 물체의 색상, 크기, 방향 등에 대한 값
  • $X$: $Z$를 통해 만들어진 이미지

VAE는 입력값을 통해 학습을 수행하고 나면 사전 분포($p(z)$)에서 $Z$를 추출한다. 추출된 $Z$는 조건부 분포($p(x \mid z)$)의 입력이 되어 새로운 데이터 $X$를 얻는다.

VAE 훈련시키기

VAE는 학습시키기가 까다롭다고 알려져 있다.

VAE 모델을 학습시키기 위해서는 데이터가 나타날 확률($pθ​(x)$)을 최대화해야 한다. 우리는 $Z$를 관측할 수 없어서 모든 가능한 $Z$에 대해서 적분을 수행해야 하지만, 현실적으로 모든 $Z$를 적분하는 것은 불가능하다.

어떠한 데이터 $X$는 반드시 어떠한 원인 $Z$ 때문에 만들어진 결과물이다. 따라서 $X$의 등장 원인을 추적하기 위해서는 세상에 존재하는 모든 $Z$에 대해 아래와 같은 연산을 수행해야 한다.

  • 어떤 특징 $Z$가 선택될 확률: $p(z)$
  • 특징 $Z$가 주어졌을 때 데이터 $X$가 만들어질 확률: $p(x \mid z)$

위의 두 확률을 곱한 뒤에 모든 가능한 $Z$를 더해야 데이터 $X$가 나올 하나의 전체 확률이 완성된다. 이때 잠재 공간 속 $Z$는 연속적인 숫자로 이루어져 있기 때문에 아래와 같이 더하기(적분)를 수행해야 한다.

  • $pθ​(x)=∫pθ​(x \mid z)pθ​(z)dz$

적분의 결과인 $p(x)$는 한계 가능도 또는 증거라고 부르며, 모든 가능한 $Z$에 대한 연산을 마쳤을 때 데이터 $X$가 나올 확률을 의미한다. 또한 사후 확률($p(z \mid x)$)은 데이터 $X$가 주어졌을 때, 이 데이터를 만들어 낸 $Z$를 역추적하는 확률을 의미한다. 다만, 잠재변수 $Z$는 무한히 많은 값을 가질 수 있는 연속적인 공간이기 때문에 위의 적분을 실제로 연산하는 것은 현실적으로 불가능하다.

베이즈 정리($p(x)=p(z \mid x)/p(x \mid z)p(z)​$)로 이러한 문제를 해결하려고 시도해도 적분 결과($p(x)$)를 모르기 때문에 사후 확률($p(z \mid x)$)을 모르고, 사후 확률을 모르기 때문에 적분 결과도 모른다. 이 때문에 적분을 수행할 수 없다면 베이즈 정리 또한 VAE 학습에 도움이 되지 않는다.

인코더 네트워크 & 디코더 네트워크

온전한 사후 확률은 현실적으로 연산할 수 없으므로, 정답 대신 근삿값을 연산하는 '확률 분포'를 사용해야 한다. 이 확률 분포는 평균과 표준 편차를 이용하여 추측된 결괏값을 의미한다.

  • 인코더 네트워크($qϕ​(z \mid x)$): 입력 데이터 $X$를 받아서 잠재 코드 $Z$의 분포를 출력한다.
  • 디코더 네트워크($pθ​(x \mid z)$): 잠재 코드 $Z$를 받아서 복원 데이터 $X'$의 평균을 출력한다.

인코더의 출력은 데이터 $X$가 잠재 공간 어디에 위치할 것인지 평균($μz \mid x$​)과 표준 편차($Σz \mid x​$)로 연산된다. 즉, '진짜 정답'에 해당하는 온전한 사후 확률값은 구할 수 없으므로 '가짜 정답'을 이용하여 인코더를 학습시킨다. 이렇게 학습된 인코더는 데이터 $X$를 넣으면 그럴듯한 $Z$의 분포(평균과 분산)를 내뱉는다.

디코더의 출력은 특정한 값(숫자)이 아닌 분포이다. NVAE는 복원된 데이터 $X'$를 출력하지만, VAE의 디코더는 출력 데이터 $X$에 대한 확률 분포(정규 분포; 가우시안 분포)를 정의한다. 즉, VAE 디코더의 출력은 가우시안 분포의 평균값일 뿐이다.

VAE가 결괏값을 출력하는 '근사' 과정은 인코더가 학습을 반복하며 엉터리 $Z$를 출력하다가 서서히 진짜 사후 확률 $p$에 최대한 비슷해지도록 차이를 줄여나가는 과정을 의미한다. 여기서 인코더와 디코더가 얼마나 닮았는지를 계산하는 수식을 ELBO라고 부른다.

로그 가능도

수학적으로 로그 가능도($log\ pθ​(x \mid z)$)를 최대화하는 것은 원본 데이터 $X$와 네트워크 출력값 $μ$ 사이의 거리를 의미하는 $L2$ 거리를 최소화하는 것과 동일한 의미를 지닌다. 즉, 복원을 최대한 잘하기 위해 MSE(Mean Squared Error)를 줄이는 행동은 수학적으로 정답이 나올 확률을 높이는 행동과 같다.

Disentangling

데이터의 특징을 학습할 때 서로 복잡하게 얽혀있는 특징들을 독립적인 요소로 분리해 내는 것.

사람의 얼굴처럼 복합적인 특징(안경의 유무, 얼굴의 각도 등)이 섞인 데이터는 특징들이 한꺼번에 뭉뚱그려서 학습된다. Disentangling 처리가 이루어진다면 복합적인 특징들을 개별적으로 분리하여 조절할 수 있게 된다. 이를 위해 VAE는 잠재 변수($Z$)가 서로 독립적인 표준 정규 분포를 따르도록 강제하여 각 차원($Z_1, Z_2, ...$)이 서로 상관관계를 가지지 않도록 각 차원에 서로 겹치지 않는 특징을 분리해서 저장하도록 유도한다.

Disentangling을 활용하면 아래와 같은 장점을 기대할 수 있다.

  • 제어 가능성: 숫자 5를 유지하면서 오른쪽으로 15도 눕히라는 명령처럼 원하는 특징만 선택해서 변형할 수 있다.
  • 해석 가능성: 블랙박스처럼 기능과 역할을 인지하기 어려운 잠재 변수들이 어떤 의미를 지니는 것인지 해석할 수 있게 된다.
  • 학습 효율 강화: 특징들을 개별적으로 다룰 수 있다면 데이터가 적어도 모델이 입력 데이터의 규칙을 더 빨리 학습할 수 있게 된다.

Variational Autoencoder의 한계

VAE로 이미지를 복원하면 흐릿한 형태가 된다. 이는 VAE가 가우시안 분포의 형태를 따르도록 강제하는 특성 때문이다.

입력된 이미지를 최대한 똑같이 복원하는 것에만 집중한다면 입력된 데이터마다 잠재 공간 속 점이 분포를 이루지 않고 불규칙적으로 확산된다. 이 경우, 임의의 값을 이용해 새로운 이미지를 생성하고자 명령한다면 잠재 공간 속 비어 있는 공간이 너무 많아져서 예측할 수 없는 결과물이 나오게 된다. 이러한 문제를 방지하기 위해 VAE는 모든 데이터를 원점 근처에 모여서 종 모양을 가지는 가우시안 분포를 형성하도록 유도한다.

  • 재구성의 오차: 똑같이 복원하는 것을 최우선시한다.
  • KL 발산: 가우시안 분포를 형성하도록 만드는 것을 최우선시한다.

KL 발산의 영향력이 재구성의 오차보다 강하게 적용되면, 서로 다른 사진(숫자 1과 숫자 7)의 $Z$ 값이 서로 겹치게 된다. 디코더 입장에서 이 문제를 바라보면 숫자 1과 숫자 7 중에서 무엇을 그려야 하는지 혼란에 빠지게 된다. 이 경우 오차를 최소화하기 위해 디코더는 1과 7을 겹친 듯한 중간 지점의 흐릿한 이미지를 그리게 된다.

이러한 한계 때문에 VAE는 단독으로 이미지 생성 용도로 활용되지 않는다. 그 대신, 차원을 축소(인코딩)하고 복원(디코딩)하여 방대한 계산량을 지닌 이미지도 효율적으로 다룰 수 있도록 하는 용도로 사용된다.

  • Latent Diffusion Model: VAE의 인코더로 이미지를 아주 작은 잠재 공간으로 압축한 뒤, 복잡한 연산을 다른 모델(디퓨전)로 처리하고 VAE의 디코더로 압축된 이미지를 복원한다.

생성 모델의 삼각관계

VAE, GAN, Diffusion 모델은 '고품질, '빠른 속도', '다양성'이라는 세 가지 요소에서 삼각관계를 이루고 있다. 이러한 삼각관계 때문에 현재 VAE는 데이터를 효율적으로 압축하여 디퓨전 모델이 작업을 빠르게 처리할 수 있도록 보조하는 역할로 주로 사용된다. VAE를 통해 느린 연산 속도를 보강한 디퓨전 모델은 GAN을 완전히 대체할 수 있어 현재 대세가 되었다.

  • GAN (높은 품질, 낮은 다양성, 빠른 속도): 데이터가 있는 지점을 날카롭게 찾아서 아주 선명한 이미지를 만들 수 있다.
  • VAE (낮은 품질, 높은 다양성, 빠른 속도): 데이터가 있는 곳과 없는 곳을 모두 학습한다.
  • Diffusion (높은 품질, 높은 다양성, 느린 속도): 데이터의 분포를 가장 정확하게 따라가기 때문에 품질이 가장 좋다.

'Technology > AI (2026)' 카테고리의 다른 글

Transformer  (0) 2026.04.21
Generative Adversarial Networks  (0) 2026.04.21
Optimization  (0) 2026.04.10
Probabilistic Modeling  (0) 2026.04.09
Data & AI  (0) 2026.04.08
Comments