오늘 연구실 세미나에서 VAE에 대한 내용을 다뤄서 간단히 정리해보았다.
예시를 한번 들어보겠다.
$x \in \mathbb{R}^n, \;\;z \in \mathbb{R}^m, \;\; A \in \mathbb{R}^{n \times m}$ 에서
$x$ : raw data point
$z$: hidden or latent representation ($m<n$)
$A$ : matrix for linear transform
$v$ : independent and identically distributed gaussian noise( 독립 항등 가우시안 분포 노이즈 )
$x = Az + v$ 로 생성되었다고 가정한다. 이 경우 raw data point인 $x$ 는 $z$ 로부터 linear transform을 통해 noisily generated되었다.
이는 PCA라는 고전적 방법의 가정과 일치하며, PCA는 $z$를 찾는 과정이라 할 수 있다.
일반적으로 우리는 raw data $x$ 만을 보게되고 $z$에는 접근하지 않는다. 이것이 $z$를 hidden / latent representation이라 일컫는 이유이다.
그렇지만 우리는 더 근본적이고 압축된 데이터의 표현인 $z$에 접근하면 좋을 것이다. ⇒ 어떠한 알고리즘에 사용할 유용한 input이 될 수 있다.
그러나 PCA는 $x$가 $z$의 선형변환인 경우만 가정하므로 실패하는 경우가 많다.
$z$가 매우 복잡하고, $x$와 선형관계가 아닌 경우가 많기 때문이다.
그래서 사용하게 되는 것이 AutoEncoder이다.
VAE라는 말만 들으면 낯설게 느껴지지만 딥러닝을 공부해 본 사람이라면 autoencoder는 많이 들어본 단어일 것이다.

https://blog.keras.io/building-autoencoders-in-keras.html
AutoEncoder란 원본 $x$로부터 저차원의 representation $z$를 구해 스스로 네트워크를 학습하는 방법이다.