VAE를 이해하려면 Autoencoder를 이해해야 하는데, AE를 이해하려면 Factor Analysis(FA)를 이해해야 하고, FA를 이해하려면 Principal Component Analysis(PCA)를 이해해야 한다. 즉 PCA → FA → AE → VAE 흐름으로 이해하면 된다.
위 방법들은 모두 Dimension Reduction 방법의 종류이고, 주어진 데이터에 대해 저차원으로 압축하여 데이터에 대한 본질적인 특징 —저차원 표현— 을 추출하고, 그 특징을 기반으로 원본 데이터를 복구하는 모델에 해당한다.
가장 먼저 차원 축소의 형식으로 사용된 방법이 PCA였고, 그것을 일반화한 모델이 FA이고, 그것을 Encoder-Decoder 구조로 신경망에 적용한 것이 Autoencoder이다. 이후 Autoencoder를 생성 모델 형태로 만든 것이 바로 Variational Autoencoder(VAE)이다.
PCA의 기본 아이디어는 고차원 데이터 $\bold{x} \in \mathbb{R}^D$를 원본 데이터에 대한 ‘좋은 근사’를 표현하는 저 차원 부분 공간 $\bold{z} \in \mathbb{R}^L$에 대한 선형 직교투영을 찾는 것이다.
이를 위해 입력 $\bold{x}$를 $\bold{z} = \bold{W}^\top \bold{x}$로 project(또는 encode)하고 $\bold{z}$를 다시 unproject(또는 decode) 하여 $\hat{\bold{x}} = \bold{Wz}$를 얻는다. 그 다음 decode한 $\hat{\bold{x}}$를 원래의 입력 $\bold{x}$와 $\ell_2$ 거리로 가깝게 한다. 이를 위해 다음의 reconstruction error (또는 distortion)을 정의한다.
$$ \mathcal{L}(\bold{W}) \triangleq {1\over N} \sum_{n=1}^N \|\bold{x}_n - \text{decode}(\text{encode}(\bold{x}_n;\bold{W});\bold{W})\|_2^2 $$
구체적으로 (unlabeled) 데이터셋 $\mathcal{D} = \{\bold{x}_n:n=1:N\}$을 가졌다고 가정하자. 여기서 $\bold{x}n \in \mathbb{R}^D$이다. 이것을 $N \times D$ 데이터 행렬 $\bold{X}$로 표현할 수 있다. 데이터 중심화를 보장하기 위해 $\bar{\bold{x}} = {1 \over N} \sum{n=1}^N \bold{x}_n = \bold{0}$을 가정한다.
각 $\bold{x}_n$을 저차원 표현 $\bold{z}_n \in \mathbb{R}^L$로 근사하기를 원한다. 각 $\bold{x}_n$이 기저 함수 $\bold{w}_1, ... , \bold{w}_L$의 weighted combination의 측면으로 ‘설명된다’고 가정한다. 여기서 $\bold{w}_k \in \mathbb{R}^D$이고 가중치는 $\bold{z}n \in \mathbb{R}^L$로 주어진다. 즉 $\bold{x}n \approx \sum{k=1}^L z{nk} \bold{w}_k$라고 가정한다. 벡터 $\bold{z}_n$는 $\bold{x}_n$의 저차원 표현이고, 데이터에서 관찰되지 않은 latent 또는 ‘숨겨진’ 것으로 구성되기 때문에 latent vector 라고 불린다. 이 잠재 변수들의 집합은 latent factors라고 불린다.
이 근사에 의해 생긴 오류를 다음과 같이 측정할 수 있다.
$$ \begin{aligned} \mathcal{L}(\bold{W}, \bold{Z}) &= {1 \over N} \|\bold{X} - \bold{ZW}^\top \|_F^2 \\&= {1\over N} \|\bold{X}^\top - \bold{WZ}^\top\|F^2 \\&= {1 \over N}\sum{n=1}^N\|\bold{x}_n - \bold{Wz}_n\|^2 \end{aligned} $$
여기서 $\bold{Z}$의 행은 $\bold{X}$의 행의 저차원 버전을 포함한다. 이것은 $\hat{\bold{x}}_n = \bold{Wz}_n$을 이용하여 각 $\bold{x}_n$을 근사하기 때문에 (average) reconstruction error라고 한다.
$\bold{W}$가 직교 행렬이라는 제약조건을 이용하여 이것을 최소화하기를 원한다. $\hat{\bold{W}} = \bold{U}_L$을 설정하여 최적 해를 구할 수 있다. 여기서 $\bold{U}_L$은 경험적 공분산 행렬의 가장 큰 고유값들의 $L$개 고유벡터를 포함한다.
FA는 선형 저차원 표현을 계산하는 PCA의 비선형을 포함한 일반화 형태이다. Factor analysis는 다음과 같이 관측 데이터 $\bold{x}$가 잠재 변수 $\bold{z}$의 선형 결합으로 표현되는 모델이다. 이때 관측과 잠재 변수는 모두 가우시안이고 따라서 FA는 선형 가우시안 잠재 변수 생성 모델(linear-Gaussian latent variable generative model)에 해당한다. —물론 비가우시안 분포를 따르는 FA도 존재한다.
$$ \begin{aligned} p(\bold{z}) &= \mathcal{N}(\bold{z}|\boldsymbol{\mu}_0, \boldsymbol{\Sigma}_0) \\ p(\bold{x}|\bold{z},\boldsymbol{\theta}) &= \mathcal{N}(\bold{x}|\bold{Wz} + \boldsymbol{\mu}, \boldsymbol{\Psi} )\end{aligned} $$
여기서 $\bold{W}$는 $D \times L$ 행렬이고 factor loading matrix라고 한다. $\boldsymbol{\Psi}$는 대각 $D \times D$ 공분산 행렬이다. FA는 가우시안 분포의 low-rank 버전으로 생각할 수 있다.
관찰이 잠재 변수에 영향 받는다는 점은 state-space model(SSM)과도 유사하지만, FA는 정적인 데이터 구조를 다루는 반면 SSM은 동적인 시스템을 다룬다는 점에 차이가 있다.