논문읽으면서 Variational Autoencoder 복기

A Hierarchical Latent Vector Model for Learning Long-Term Structure in Music | Papers With Code

 

Papers with Code - A Hierarchical Latent Vector Model for Learning Long-Term Structure in Music

Implemented in 7 code libraries.

paperswithcode.com

 

기본적으로 우리 모델은 autoencoder이며, 다시 말해 정확하게 input을 reconstruct하는 것을 목표로 한다.

그러나 우리는 추가적으로 새로운 sample을 만들어내고 잠재 공간의 interpolation과 attribute vector의 연산을 수행하길 원한다.

이러한 특성을 위해 우리는 Variational autoencoder를 채택했다.

 

1. intro

 

autoencoder에 적용된 공통의 제약사항은 input에 대한 정보를 더 낮은 차원의 latent code로 압축하는 것이다.

 

이상적으로 이는 모델이 데이터셋의 중요한 변량 요인을 가지는 압축된 representation을 생성하게 한다.

 

이 목표를 위해 Variational Autoencoder가 다음과 같은 제약사항을 두었다.

 

잠재변수 z가 사전확률분포 p(z)를 따르는 random variable이다

 

그럴 때, 데이터 생성 모델은 z ~ p(z), x ~ p(x|z)이다.

 

VAE는 사후확률분포 p(z|x)에 근사하는 encoder $q_{\lambda}(z|x)$likelihood p(x|z)를 매개변수화한 decoder $p_{\theta}(x|z)$를 포함한다.

 

실제로 encoder(근사 사후확률분포 p(z|x))decoder(likelihood p(x|z))parameter $\lambda$와 $\theta$를 가지는 neural network로 각각 매개변수화할 수 있다.

 

Variational Inference 방법을 이용해서 우리는 근사 사후확률 $q_{\lambda}(z|x)$ 과 실제 사후확률 p(z|x) 사이의 KL divergence를 최소화하는 방식으로 사후확률을 추론할 수 있다.

 

이를 위해 evidence lower bound(ELBO)를 최대화하는 방식을 사용한다.

 

 
 

ELBO에 대한 gradient를 나이브하게 계산하는 것은 z를 얻기 위해 사용되는 sampling 연산 때문에 불가능하다.

 

일반적으로 p(z)가 정규분포를 따른다고 가정한다. 구체적으로 다음과 같이 표시한다.

 

 

2. beta-VAE and FREE BITS

 

VAE에서 사용되는 ELBO를 해석하는 한가지 방법은 두가지 항을 각각 구분지어 고려하는 것이다.

 
 

 

첫 번째는 정확한 reconstruction을 위해 $q_{\lambda}(z|x)$로부터 zsampling할 확률 p(x|z)를 높이는 것으로 생각할 수 있다.

 

두번째는 $q_{\lambda}(z|x)$를 사전확률에 가깝게 하는 것이다. p(z)로부터 latent codesampling하여 더욱 실제에 가까운 데이터를 생성할 수 있게하는 것이다.

 

이들 항들이 samplereconstruction의 퀄리티 사이에 trade off 관계에 있다는 것,

 

혹은 동일하게는 $q_{\lambda}(z|x)$encoding된 정보의 양인 ratedata likelihooddistortion사이의 관계로도 볼 수 있다.

 

ELBO는 이러한 trade off를 직접적으로 컨트롤하는 방법이 아니다.

 

ELBO에 대한 일반적인 변형은 hyperparameter인 $\beta$를 사용하여..

 
 
 

으로 나타내는 것이다.

 

$\beta$가 1보다 작다는 것은 모델이 reconstruction qualitycompact representation을 배우는 것보다 우선시하는 것이다.

 

이러한 trade-off를 조정하는 다른 접근은 KL divergence항을 적절한 threshold를 넘지 않도록 만드는 것이다.

 

 
 

이는 KL divergence항이 $q_{\lambda}(z|x)$를 사용하여 p(z)로부터 codesampling하는데 필요한 정보량을 측정한다는 점에서 근거하는 것이다.

 

3. latent space manipulation

 

autoencoder의 더 넓은 목표는 데이터의 compact representation을 학습하는 것이다.

 

창의적인 응용을 위해서 우리는 model이 학습한 latent space를 추가적으로 이용하는 것이다.

 

첫 번째로 실제 데이터포인트로 mapping되는 latent space의 한 점이 주어지면 근처의 점은 의미적으로 비슷한 데이터포인트로 mapping된다.

 

이는 latent space에서 두 점을 연결하는 연속인 곡선 사이의 모든 점들이, 데이터 공간 내에서 부드러운 의미적인 interpolation을 만드는 데이터포인트의 연속으로 decoding될 수 있음을 말한다.

 

두 번째로 우리는 latent space가 데이터셋에서 의미있는 그룹을 구분해내길 원한다.

 

이상적으로 likelihoodKL divergence항이 test data에서 충분히 작다면, 이러한 요구사항들이 VAE에 의해 만족될 수 있다.

 

구체적으로 z1,z2x1,x2에 대응하는 latent vector라고 하자.

 

latent space에서 linear interpolation은 다음과 같이 계산된다.

 

 
 
여기서 0 <= $\alpha$ <= 1이다.
 
우리 목표는 $p_{\theta}(x | c_{\alpha})$가 모든 $\alpha$에 대하여 실질적인 데이터포인트라면, $p_{\theta}(x | c_{\alpha})$는 $\alpha$가 0에서 1로 변함에 따라 의미론적인 방법으로 전이시킬 수 있고, 
 
작은 $\delta$에 대하여 $p_{\theta}(x | c_{\alpha})$가 개념적으로 $p_{\theta}(x | c_{\alpha + \delta})$와 비슷하게 만족시키는 것이다.
 
 

VAElatent space에 대한 사전확률이 구형의 정규분포(spherical)를 따른다면, 고차원의 사전확률에서 얻은 sample은 단위 초구형의 균일분포(uniform distribution on the unit hypersphere)에서 얻은 sample과 실제적으로 구별할 수 없다는 사실이 알려져있다.

 

그래서 보통 linear interpolation 대신에 spherical interpolation을 사용한다.

 

autoencoder에 대한 추가적인 테스트로 attribute vector에 대한 연산이 있다.

 

attribute vector는 특정한 attribute를 나타내는 데이터포인트들의 집합에 대한 latent vector를 평균한 것이다.

 

일반적으로 attribute vectorattributepair들로 계산이 되는데, 예를 들어 안경이 있는 사람 이미지와, 안경이 없는 사람이미지이다.

 

attribute를 발견하는 모델의 능력은 encodingAlatent code로 얻은 attribute A를 빼고, attribute B를 더하여 decoding 시켰을 때, A 대신에 B가 나오는 것에 있다.

 
 
 
 
 4.recurrent VAE

 

다양한 신경망 구조에서 VAEencoder decoder로 고려하고 있는 동안에 우리는 recurrent encoderdecoder에 더욱 흥미가 있다.

 

구체적으로 encoder $q_{\lambda}(z|x)$recurrent neural network이고 latent vector zRNNhidden vector $h_{T}$의 함수이다.

 

decoder $p_{\theta}(x | z)$samplinglatent vector zdecoder RNNinitial state로 사용하여 autoregressive하게 output y를 생성한다.

 

모델은 inputreconstruct하기 위해 training된다.

 

즉, $y_{i} = x_{i}, i = 1,2,...,T$가 되도록 말이다.

 

 

그러면서 보통의 VAE처럼 사전확률 p(z)에 근사하는 사후확률 $q_{\lambda}(z|x)$을 학습한다.

 

이 접근에는 2가지 결함이 있다.

 

먼저 RNN은 그 자체로 강력한 autoregressive model이다. 그 결과 decoder가 데이터의 효과적인 모델을 만드는데 충분히 강력하여 latent code를 무시하게 된다.

 

latent code를 무시하면서 ELBOKL divergence항이 거의 0에 가까워져서 모델이 효과적임에도 autoencoder로서 기능을 하지 못한다.

 

두 번째로는 모델이 반드시 전체 sequence를 하나의 latent vector로 압축한다는 점이다. 이는 sequence의 길이가 길면 효과가 좋지 못한다는 것은 상식이다.

 

 

아니 왜 색이 안바뀜..

TAGS.

Comments