음악 생성

[논문리뷰] - A Hierarchical Latent Vector Modelfor Learning Long-Term Structure in Music (Music Vae-1)

김다응 2023. 1. 15. 05:32
728x90

1. Introduction

Generative 모델의 정의 : p(x) 분포에서 x 를 생성하기 위해 사용됨

두가지 notes 를 interpolate 함

 

Gan 이나 Pixel CNN 과 Wave Net 같이 다양한 generative 모델이 있음

p(z|x) p(z) , z latent vector 가 존재하는 데이터로 부터 생성될 수도 있고 latent space 로 부터 생성될 수도 있음

 

- 주어진 averaging latent codes

- encoding : data point 기존 학습된 (brown hair 이라는 벡터에서) 새로운 vector 를 추가할 수 있음 ( blond hair)

- realistic intermediate datapoint : 잠재 벡터 간 보간 및 디코딩 포인트는 현실적인 평균 데이터를 생성할 수 있음

 

대부분의 작업은 연속적인 데이터를 갖고 있음 (이미지와 같은) sequential data 를 모델링하는 것 두문 task

특히 악보와 같은 개별 token seq 의 경우 autoregressive decoder를 사용하여야 함

 autoregression 이 더 효과적인 이유는 autoencoder 가 latent code 를 무시하기 때문임 (?)

짧은 문장들에서는 성공적인 생성을 보여주었지만 아주 긴 sequence 에 대해서는 어려웠음

 

긴 sequence 에 대한 modeling 문제 극복을  위해 계층적 순환 디코더가 있는 auto encoder 를 도입함

 

본 논문에서는 음표의 sequence 모델링에 초점을 맞추었음

대중음악은 특히

1. 한 곡의 음절 사이가 반복되고 변화되는 장기적 구조를 보임

2. 다중 음악

두가지 특성을 가지고 있음

 

2. Background

기본적으로 본 모델은 auto encoder 임

즉 입력을 정확하게 재구성하는 것이 목표

추가적으로 latent space interpolate 및 속성 벡터의 산술을 원하였기 때문에 vae 를 사용함

 

2.1 vae

auto encoder 는 input 에 대한 정보를 저차원의 latent code 로 압축하게 됨

모델이 데이터 셋의 중요한 변동 요인을 capture 하는 압축된 representations 를 생성하도록 한다

이 목표를 추구하기 위해 variational Auto encoder 는 latent code z 가 Prior p(z) 에 따라 분포된 random 변수라는

제약 조건을 둔다.

따라서 데이터 생성 모형은

다음과 같아진다. VAE 는 P(z|a) 를 근사하는 인코더 qx(z|x) 와 우도 p(x) 를 parameterize 하는 디코더 P seta(x|z) 로 구성됨

 

실제로 대략적인 후방 및 우도 분포는 각각 매개 변수 lambda 및 seta 를 가진  신경망에 의해 parametrize 되며

vae 프레임워크에 따라 ELBO 를 최대화하여 인코더에서의 근사 posterior 과 실제 posterior P(z|x) 사이의 KL 차이를 최소화 하여 후방 추론을 수행한다

 

위의 공식에서

와 KL 에 대한 expectation 이 취해짐 ELBO 를 통한 기울기를 계산하는 것은 z 를 얻는데 사용되는 sampling 작업 때문에

불가능함 따라서 p(z) 를 가우스 함수라고 가정하여

로 대체함으로써 이를 해결할 수 있음

 

2.1.1 B-VAE 

VAE 에서 사용되는 ELBO 를 해석하는 방법은

 

2.1.1 B-vae and Free Bits

VAE 에서 ELBO 를 해석하는 한가지 방법은 

두가지 용어를 고려하는 것이다

첫번째 E 는 정확한 재구성을 보장하기 위해 q (z|x) 의 z 샘플에 대해 p(x) 가 높음을 요구하는 것

두번째는 q (z|x) 가 p(z) 에서 latent code 를 샘플링하여 현실적인 데이터를 생성할 수 있도록 presense 에 근접하도록 장려함

B < 1 을 설정하면 모델이 compact 한 representation learning 보다 reconstruction quality 를 우선시 할 수 있음

 

이 임계값을 활용하는 것은 posterior 학습할 때에 사용되는 free bit 의 buget(?) 의 모델에 제공하는 것과 같음

수정된 objectives 는 likelihood 의 하한을 최적화 하지는 않지만 여전히 모델을 vae 라고 부름

 

2.1.2 Latent Space Manipulation

auto encoder 의 광범위한 목표는 데이터의 representation 을 배우는 것

latent space 를 사용하면 latent 변수의 변화를 통해 다른 결과 값을 얻을 수 있음

 

1. 현실의 데이터 포인트에 매핑되는 latent space 의 point 가 주어지면 근처의 latent space 포인트는

의미적으로 유사한 데이터 포인트에 매핑되어야 함

extrapolation 을 통해 latent space 에서 두 점을 연결하는 연속 곡선을 따라 있는 모든 점들이 데이터 공간에서 보간을 생성하는 일련의 data point 로 디코딩 될 수 있어야함

 

latent space 가 매끄럽고 현실의 데이터에 매핑되지 않는 부분 즉 구멍이 포함되지 않기를 요구함

 

2. latent space 가 데이터에서 의미있는 그룹을 분리하길 바람

 

이러한 요구사항은 vae 에 의해 충족되어야 함

 

test 데이터에서 likeli hood 및 kl 발산이 모두 충분히 작은 경우

잠재 공간의 점 사이를 보간하고 데이터 공간의 해당 point 가 의미 있는 방식으로 보간되는지 여부를 테스트한다.

 

만약 z1 과 z2 가 데이터 점 x1 과 x2 에 해당하는 잠재 벡터라면 계산을 통해 latent space 에서 선형 보간을 수행할 수 있음

 

정리 덜함

 

2.2 Recurrent VAEs

recurrent encoder 및 decoder 가 있는 모델에 대해 관심을 가짐

인코더인 q (z|x) 는 입력 시퀀스 x = {x1, x2, ..., xT} 를 처리하고 hidden state h1, h2 , ... , hT 의 시퀀스를 생성하는 반복 신경망임

latent code z 에 대한 분포의 매개 변수는 ht 의 함수로 설정됨 Decoder P (x|z) 는 sampling 된 latent vector z 를 사용하여 output sequence y = {y1, y2, : .y} 를 자동 회귀적으로 생성하는 decoder RNN 의 초기 

본 모델은 입력 시퀀스 Yi = Xi, i {1, ..., T} 를 재구성하고 표준 VAE 에서와 같이 이전 p(z) 에 가까운 대략적인 후방 q (z|x) 를 학습하도록 훈련됨

sequence 의 자기 회귀 모델

반복적인 vae 에서 디코더는 그 자체로 데이터의 효과적인 모델을 생성할 수 있을만큼 충분히 강력하여 latent code 를 무시할 수 있음. latent code 를 무시하면 모델이 더이상 auto encoder 역할을 하지 않음에도 불구하고 ELBO 의 KL 발산항을 0으로 수렴하도록 할 수 있음

 

둘째로 모델은 전체 시퀀스를 단일 잠재 벡터로 압축해야함

짧은 시퀀스에 대해서는 효과를 봤지만 시퀀스의 길이가 증가함에 따라 실패하게 됨

이러한 문제를 해결하기 위해 계층적 RNN 을 사용하여 이러한 문제를 해결하는 latent variational auto encoder 를 제안함