VAE에 대해 이해하기전에 autoencoder부터 보면

Autoencoder?

Autoencoder 기본 구조

오토인코더는 입력 데이터 X를 받아 더 낮은 차원의 latent representation Z로 인코딩한 뒤, 이를 다시 입력 데이터와 같은 차원의 출력 X′로 복원하는 신경망 구조이다. 크게 두부분으로 나뉘는데,

  1. 인코더 : 입력 데이터 X를 받아 잠재 표현 Z로 변환
  2. 디코더(Decoder): 잠재 표현 Z를 받아 원본 데이터와 유사한 데이터 X′로 복원함

오토인코더의 한계

전통적인 오토인코더는 데이터의 잠재 표현 Z를 어떻게 사용해 새로운 샘플을 생성할지에 대한 명확한 방법이 없고, 잠재 공간의 분포에 대한 가정이 없기 때문에, 잠재 변수 Z에서 샘플을 임의로 추출하여 의미 있는 새로운 데이터를 생성하기 어렵다.

그래서 새로운 데이터에 대해서 reconstruction이 어렵고, 때문에 학습을 위해 encoder decoder 다 가져다 쓰지만, 실제로 쓰이는건 encoder.

Variational Auto Encoder?

Untitled

VAE는 이러한 한계를 극복하기 위해 잠재 공간의 분포에 대한 가정을 도입했음. VAE는 잠재 변수 Z가 특정 확률 분포(예: 가우시안 분포)를 따른다고 가정한다.

  1. 인코더: 입력 데이터 X로부터 잠재 변수 Z의 분포의 매개변수(평균이나 분산등)를 예측한다. 이를 통해 잠재 공간에서 각 데이터 포인트 주변의 분포를 모델링한다.
  2. 디코더: 잠재 공간에서 샘플링된 잠재 변수 Z를 사용해 원본 데이터를 복원하려고 시도한다

VAE의 핵심은 인코더가 예측한 분포로부터 잠재 변수 Z를 샘플링해서, 이 샘플을 사용해 디코더가 원본 데이터와 유사한 새로운 데이터를 생성할 수 있도록 하는것.

이 과정은 또한 데이터가 잠재 공간에 어떻게 배치되는지를 학습하게 하며, 이를 통해 새로운 데이터를 생성할 때 잠재 공간에서 의미 있는 점을 선택할 수 있게 됨.