Super Kawaii Cute Cat Kaoani Learning Music Reprsentation with WAV2VEC 2.0 논문리뷰

연구/오디오

Learning Music Reprsentation with WAV2VEC 2.0 논문리뷰

치킨고양이짱아 2023. 12. 5. 18:04
728x90
728x90

Wav2vec 2.0 이 speech representation과 같은 분야에서 효과적인 성능을 보이는 것은 지난 포스트를 통해 확인할 수 있었다. 하지만 내가 하고자하는건 music representation이라 music representation에도 wav2vec 2.0이 효과적인 성능을 보이는지 좀 더 알아볼 필요가 있었다.

이와 관련된 내용을 "Learning Music Reprsentation with WAV2VEC 2.0" 이라는 논문에서 확인할 수 있다.

https://arxiv.org/pdf/2210.15310.pdf

본 논문에서는 wav2vec 2.0을 pretraining 단계에서부터 음악을 통해 학습시켜 wav2vec 2.0 모델이 pitch나 Instrument를 인코딩하는 Latent representation을 생성할 수 있음을 확인한 논문이다.

본 논문에서 pre-training과 finetuing 시킨 내용을 살펴보면 다음과 같다.

1) Pre-Trained Model

먼저 wav2vec 2.0 Model을 간단히 요약해보면

  1. A feature encoder (f: X->Z)는 20 밀리초의 input audio chunks X를 latent speech reprsentation Z = {z_1, z_2, ...z_T}로 T time steps 동안 convert 시킨다. encoder는 7개의 1D convolution layers로 구성되어있고 각 layers는 512개의 필터를 가지고 있다.
  2. A context network (g: Z->C)는 Transformer 아키텍쳐를 가지고 있으며, 각 audio setgment에 대한 context 표현을 구축하여 결과적으로 context를 잘 반영하는 audio sequence representation C = {c_1, c_2, ...c_T}를 만들어낸다.
  3. A quantization module은 encoder output을 discrete speech representations C->Q로 변환한다. discrete latent features는 loss function의 Target으로 사용되며 context network의 입력으로 사용되진 않는다. 2개의 codebook에서 각각의 항목을 연결한 벡터는 lineraly transformed 되어 Q = {q_1, q_2 ...q_T}로 변환된다. Gumble-Softmax가 codebook의 항목을 선택하는데 사용된다.
  4. A contrastive loss function은 실제 양자화된 speech representation을 100개의 균일하게 샘플링된 양자화된 표현으로부터 어떻게 identify할지 학습시키는데 사용된다.

본 논문에서는 12개의 Transformer 블록으로 구성된 BASE 모델 구성을 사용하였다. 이 모델은 768차원의 feature vector를 생성한다. music representation을 학습하기 위해 MusicNet 데이터셋에 대해 wav2vec 2.0을 Pretraining 시켰다. MusicNet은 330개의 classical music recording으로 구성되어있으며 총 34시간의 오디오로 구성되어있고, 11가지의 음악 악기를 다루고 있다.

wav2vec 2.0을 pre-training 시키기 위해 fairseq toolkit을 사용하였다. 이때 데이터는 fairseq에서 권장하는 대로, 20초의 segment로 분할되었으며, 데이터셋 크기를 늘리기 위해서 Hop size를 10초로 두어 총 65시간의 audio data를 생성하였다.

이는 wav2vec 2.0를 speech에 사용할 때 Pre-training 시켰던 LibriSpeech dataset의 7% 정도인데, 이렇게 적은 양의 dataset으로도 audio representation이 잘 됨을 보였다.

2) Finetuning

Finetuning은 NSynth 데이터셋에서 수행되었으며 original train, validation, test splits으로 사용되었다. NSynth는 4초짜리 305979개의 샘플이 포함되어있고 이 데이터셋을 사용하여 2가지 Task가 평가된다(pitch classfication, instrument classification)

마지막 Transformer 블록의 출력은 크기가 (nxI)인 행렬이며, 여기서 n은 시간 프레임 수고, I는 768과 같은 feature vector의 크기이다. 시간 차원을 제거하기 위해 간단히 시간에 걸쳐 평균을 내어 출력에서 l-차원 벡터를 얻는다.

이후, 이 벡터는 선형 레이어에 연결되어 task 작업을 수행한다.

728x90
728x90