ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [논문] - A Hierarchical Latent Vector Model for Learning Long-Term Structure in Music, 2018
    개발/머신러닝-딥러닝 2022. 6. 8. 00:06

    제가 이해한 내용을 정리한 글입니다. 오류가 있으면 고쳐주세요!

    2018년에 Google Magenta에서 제안한 MusicVAE 모델이다.

    논문 

     

    배경

    음악 분야에서 VAE는 자주 사용되지 않는데, 음악과 같은 시퀀스 데이터에서는 autoregressive decoder를 사용하게되고,  

    이는 autoencoder에서 인코딩한 latent vector를 무시할 정도로 강력한 방법이기 때문에 인코딩된 특징들을 충분히 활용할 수 없다.

    작은 시퀀스에서는 활용 가능 하지만 대부분의 음악 데이터는 길이가 긴 시퀀스를 가지므로 적용하기 힘들다.

     

    이러한 이슈를 해결하기 위해서 계층적 recurrent decoder를 적용한 recurrent VAE 모델을 만들었다.

    전체 시퀀스를 하나의 latent vector로 만들고, 이를 계층적 디코더로 디코딩 하므로써,

    flat한 디코더를 사용한 모델보다 더 긴 시퀀스를 효과적으로 인코딩할 수 있게 되었다.

     

    Recurrent VAE

    시퀀스 데이터를 처리하기위해서 RNN모델과 같은 recurrent모델을 사용한다.

    RNN 인코더를 통해 시퀀스 데이터를 latent code z로 만들고,

    이를 다시 RNN 디코더를 사용해 input과 똑같이 만든다.

     

    이는 위에서 말했듯이 RNN디코더 층에서 디코더의 과거 데이터를 활용하면서 autoregressive하게 output을 만들게 되고

    이렇게 생성된 output에는 latent vector로 압축된 input의 정보가 적게 담겨 있을 수 있다.

    또한 기존의 연구에 따르면 전체 시퀀스를 하나의 latent vector로 압축하는 방법은 긴 시퀀스의 데이터에서 효과적이지 않았다.

     

    모델

    Bidirectional Encoder

    두 개의 BidirectionalLSTM Layer를 사용해서 입력 시퀀스를 처리하는데,

    이로 인해 더 긴 시퀀스에 대해서 latent vector를 이상적으로 만들수 있다.

     

    Hierarchical Decoder

    계층적으로 디코더 모델을 구성했다.

    입력 시퀀스 $\mathrm{x}$를 $U$개, 즉$y_1, y_2, ..., y_U$로 나눈다고 했을때, ($y_u$는 또 ${x_{i_u}}, {x_{i_u +1}}, ...$로 나눠지는 벡터)

    latent vector는 이후에 fc-layer를 지나 conductor RNN을 통과하면서 나눠진 입력 서브시퀀스와 대응하는 $c_1, c_2, ..., c_U$가 된다.

    이후 각각의 $c$는 따로 fc-layer를 지나고 RNN층에서 autoregressive하게 $y_u$의 내부 요소에 해당하는 시퀀스를 생성한다.

    즉, 음악으로 예를 들면 latent vector 이후에 Conductor를 지나면서 마디를 생성하고, 각각의 마디에서 RNN모델을 통해 autoregressive하게 멜로디를 생성하는 것으로 볼 수 있다.

    이렇게 모델을 구성하므로써 latent vector의 영향력을 높이고, 과도하게 autoregressive하지 않게 되었다.

     

    Multi-Stream

    이 외에도 문자와 같이 하나의 흐름만 있는 시퀀스형 데이터와는 달리 음악은 여러 악기가 동시에 연주되는 멀티 스트림 데이터이므로 따로 처리를 해주었다.

    각각의 악기별로 하나의 차원으로 간주해 각각 RNN 디코더를 적용한다.

     

    결론

    기존의 Flat decoder와 비교했을때, 16마디 이상의 시퀀스에 대해서 Reconstruction accuracies가 높게 나오는 것을 확인했다.

    재현율 뿐만 아니라 사람에 대한 Listening test에서도 Flat모델 보다 더 음악같다는 평을 받았다.

     

    코드는 아래에서 확인할 수 있다.

    https://github.com/magenta/magenta/tree/main/magenta/models/music_vae

     

    GitHub - magenta/magenta: Magenta: Music and Art Generation with Machine Intelligence

    Magenta: Music and Art Generation with Machine Intelligence - GitHub - magenta/magenta: Magenta: Music and Art Generation with Machine Intelligence

    github.com

     

    댓글

Designed by Tistory.