본문 바로가기
  • 책상 밖 세상을 경험할 수 있는 Playground를 제공하고, 수동적 학습에서 창조의 삶으로의 전환을 위한 새로운 라이프 스타일을 제시합니다.
Audio

[2023-2] 현시은 - Music Transformer: Generating Music with Long-Term Structure (ICLR19)

by 현시은 2023. 11. 26.

원본 논문 링크 : https://arxiv.org/abs/2112.10752

 

High-Resolution Image Synthesis with Latent Diffusion Models

By decomposing the image formation process into a sequential application of denoising autoencoders, diffusion models (DMs) achieve state-of-the-art synthesis results on image data and beyond. Additionally, their formulation allows for a guiding mechanism t

arxiv.org

 

Abstract

  • 많은 사람들 머신러닝 알고리즘을 사용한 음악 생성을 시도하였고, HMM, RNN, LSTM 등 여러 모델들이 이를 위해 사용되었다. 그 중 Google에서 발표한 Transformer(Vaswani et al., 2017)를 음악 생성에 사용해본 논문이다.
  • 음악은 구조와 의미를 구축하기 위해서 반복이 중요하다. Transformer와 같은 self-attention은 반복적인 구조를 발견하는데 효과적이다. 즉, long range coherence 구조를 발견하는 데 효과적이다. 이는 Transformer의 핵심 개념인 self-attention이 음악 모델링에 적합할 수 있음을 시사한다.
  • 그러나 음악 작곡과 연주에서는 상대적인 타이밍이 매우 중요하다. 기존의 Vanilla Transformer는 위치 정보를 표현하기 위해 pairwise하게 거리를 측정하여 attention을 적용하였다. 이는 메모리 복잡도가 2차(quadratic)이기 때문에 시퀀스 길이가 길어지는 작곡과 같은 음악 데이터를 다룰 때에는 실용적이지 않다. (Transformer는 원래 input data의 길이가 길면 성능이 잘 나오지 않음)
  • 따라서 이 논문에서는 Vanilla Transformer와는 다른 방식의 self-attention인 relative attention mechanism을 제시하였다. 이는 2차(quadratic) 였던 메모리 복잡도를 1차(linear)로 줄였으며 생성되는 음악도 1분으로 늘리게 되었다.(1분이라고 하면 굉장히 짧아보이지만 이전 논문들이 생성한 음악들은 15초였음. 4배 증가)
  • 정리하자면, 이 논문은 기존의 Transformer에 Relative attention 개념을 추가하여 이를 음악 도메인에 적용하여 자연스러운 음악을 생성하는 모델에 대한 논문이다. 기존의 Transformer보다 더 긴 음악을 생성할 수 있었고 기존의 Relative attention 개념의 메모리 효율을 증대하는 방안까지 제시하였던 논문이다.

Introduction

  • 일반적으로, 음악 데이터를 다룰 때는 음악을 주로 두 가지 방식으로 나타낸다. 첫 번째는 오디오 파형(audio waveforms)로 음악을 나타내는 것이다. 이 방식의 예시로는 raw waveform, spectrograms, Mel-spectrogram, constant-Q-transform (CQT) 등이 있다. 오디오 기반 접근 방식으로 음악을 생성하는 논문의 예시로는 Jukebox가 있다.
  • 두 번째 방식은 Symbolic event tokens으로 음악을 표현하는 것이다. MIDI event,피아노 롤(piano rolls), 텍스트 (예: ABC 표기법(notation)) 등의 형식이 있다. 이 논문에서는 Symbolic 기반 접근법을 사용하여 MIDI event 데이터 기반으로 작성되었다.

Data Representation

  • 보통 음악은 화성으로 되어있다. 따라서 이를 데이터로 잘 표현을 해야한다. 이 논문에서는 4성부 바흐의 코랄의 경우 16분음표를 기준으로 시간을 나누었고(시간 해상도) MIDI Pitch number로 저장하였다. 이렇게 되면 데이터는 행렬 형태로 저장이 되고 raster scan 방식(Figure 1)으로 직렬화할 수 있다.

Figure1 : Raster Scan 방식

  • 피아노 연주(Piano-e-competition)의 실제 연주 시간도 명확하지 않고 음의 세기를 나타내는 Dynamic에 대한 정보도 데이터로 저장해야 한다. 그러나 위와 같은 그리드 방식으로는 너무 세세하게 쪼개지게 되고 데이터 양이 상당히 방대해지게 된다. 그렇기에 MIDI event로 저장하였다.(Oore et al., 2018에서 제시된 방식).
  • MIDI event는 피아노를 연주하는 동안 각각의 미세한 동작을 이벤트 토큰으로 매핑하여 표현하였다(논문의 appendix 참조) .
  • 총 128개의 NOTE_ON와 NOTE_OFF 이벤트가 도입되었으며, 이는 128개의 노트 피치(note pitches)뿐만 아니라 100개의 TIME_SHIFT 이벤트 (10ms ~ 1초), 그리고 128개의 서로 다른 노트 속도에 상응하는 32개의 SET_VELOCITY 이벤트에 해당한다. 논문에서 제시한 예시는 아래의 그림(Figure 2)와 같다.
  • 다음의 4가지 이벤트가 모델링 되었다:
    1. 128개의 MIDI pitch 중 하나로 음을 시작하는 128개의 NOTE_ON 이벤트
    2. 128개의 MIDI pitch 중 하나로 음을 끝내는 128개의 NOTE_OFF 이벤트
    3. 10ms에서 1s로 10ms 단위로 정방향 시간 이동을 나타내는 100개의 TIME_SHIFT 이벤트
    4. NOTE_ON 이벤트의 속도를 나타내는 32개의 SET_VELOCITY 이벤트(32개의 빈으로 양자화된 128개의 MIDI 속도 형식)

Figure 2 :왼쪽 그림은 pianoroll로 시각화된 피아노 연주의 snippet아고, 오른쪽 그림은 인코딩된 performance event (Raste scan 방식으로 표현)

  • 자연어처리(NLP)에서는 데이터를 다룰 때 토큰화(tokenization)을 사용하기 때문에 이렇게 음악을 event 토큰으로 표현하면 음악 생성을 언어 생성 task처럼 다룰 수 있다. 따라서 생성 모델의 아키텍처로 Transformer를 사용할 수 있는 것이다.
    • 음악의 한 파트는 문장 또는 단락처럼 취급한다.
    • 각 note event는 문장 또는 문단의 단어에 해당한다.
    • 가능한 모든 note event는 NLP에서 어휘 세트에 해당한다.

Model

  • Vanilla Transformer는 메모리 요구 조건이 2차(quadratic)이기 때문에 긴 시퀀스를 처리하는 데 부적합하다.
  • 이는 음악 생성을 하기에 아주 불리하다. 1분 길이의 작곡에도 수 천개의 MIDI event 토큰이 들어가기 때문이다.
  • 이로 인해 이 논문에서는 Vanilla Transformer에서 사용한 절대 위치 표현(Absolute position representation) 방식이 아닌 상대 위치 표현(Relative position representation) 방식을 사용하였다. 음악은 반복이 상당히 많이 발생하기 때문에 상대적 위치 정보가 중요하기 때문이다.
  • 다음 수식은 유명한 Vanilla Transformer의 Self-attention mechanism에 대한 식(Figure 3)이다. 이 식은 Scaled dot product attention이 적용된다.

Figure 3 : scaled dot-product attention을 적용한 Self-attention mechanism

  • 위의 식(Figure 3)에서 Q는 쿼리(query), K는 키(Key), V는 값(Value)을 나타내고 D는 시퀀스 길이를 나타낸다. 이를 이해하기 위해서는 Transformer에 대한 사전 공부를 먼저 하는 것을 추천한다.
  • Relative positional self-attention은 모델이 시퀀스에서 두 위치가 얼마나 떨어져 있는지에 영향을 받는다. 이 정보를 나타내기 위해 아래의 식(Figure 4)으로 표현된다.

Figure 4 : Relative positional self-attention

  • 즉, Absolute position representation과 Relative positional self-attention의 차이는 $ S^{rel} $ 을 더하냐 안하냐의 차이이다.
  • $ S^{rel} $ 를 구하는 과정은 다음과 같다.
    • 각 토큰의 상대적 거리 $ r = i - j $에 대한 고유 임베딩 $e_{r}$로 이루어진 고정 임베딩 $E_{r}$ 세트를 초기화
    • 각 상대 위치에 대한 텐서를 모아서 $(1,1,d)$의 3D 텐서 $R$을 구성한다. 이 때 $R_{ij} = e_{i-j}$이다.
    • $ S^{rel} = QR^{T}$로 계산한다.
  • 더 자세한 내용은 Relative positional self-attention 논문을 참조하는 것이 좋다. 이 글에서 모두 다루기엔 너무 방대해진다. (다음 포스팅으로 다루어보도록 하겠다.)

Memory Efficient Implementation of Relative Position-based Attention

  • $S^{rel} = QR^{T}$ 로 구해지는데, 이 $R$이 모든 키와 쿼리들 간에 상대적인 거리에 해당하는 임베딩을 지닌 행렬이어서 크기가  $L \times L \times D_h$ 이다.(이 때 $L$은 토큰의 개수, 즉 음악의 길이를 의미한다.)
  • 이를 위해서는 메모리가 $O(L^2D)$가 필요한 데, 음악과 같은 긴 시퀀스에 적용하려면 메모리가 정말 많이 사용되게 된다.
  • 저자들은 $R$을 계산하지 않고도 $S^{rel}$을 얻을 수 있고 메모리 사용량을  $O(LD)$로 할 수 있는 Skewing을 제안했다.
  • 핵심 아이디어는 $QR$을 구하는 것과 $QE^r$ 을 구하는 것과 의미적으로 차이가 없다는 것이다. $QE^r$은 $L \times D_h$의 크기이므로 연산 시에 메모리가 크게 절약된다.
  • $QR^{T}$은 절대적인 위치를 고려해서 계산하는 것이고, $QE^r$은 상대적인 위치를 고려하는 것이다. 따라서 $QE^r$로 계산하고, 이를 절대적인 위치로 변경한다.
  • 아래의 그림(Figure 6)은 Skewing의 계산 과정을 나타낸 것이다.

Figure 6 :  Skewing의 계산 과정

  • 또한 아래의 그림(Figure 7)은 논문에서 제시한 Skewing 과정 그림이다. 위의 그림과 비교해보며 이해해보는 것이 좋을 것이다.

Figure 7 : 논문에서 제시하는 Skewing 계산 과정

Experiments

- J. S. Bach Chorales

  • 바흐의 4성부 코랄 데이터로 먼저 실험을 진행하였다(16분음표 단위로 쪼갤 수도 있고 바로크음악이니 상대적으로 간단하게 실험하기에 좋음).
  • Relative positional self-attention을 사용하니 Vanilla Transformer보다 결과가 상당히 많이 개선되었다.
  • Coconet : CNN을 사용한 모델 / NLL : Negative Log Likelihood (작을 수록 좋은 것임)

Figure 8 :  바흐의 4성부 코랄 데이터로 실험한 결과를 정리한 표

- Piano-E-Competition

  • 두 번째 실험으로 Piano-E-Competition 데이터를 사용하였다.퀄리티 좋은 피아노 연주 MIDI 데이터가 포함되어 있다.
  • 2000개 토큰의 시퀀스를 랜덤하게 잘랐다.
  • 그리고 2가지 종류의 data augmentation을 적용하였다 :
    • (1) Pitch transpositions uniformly sampled from {−3, −2, . . . , 2, 3} half-steps
    • (2) Time stretches uniformly sampled from the set {0.95, 0.975, 1.0, 1.025, 1.05} 
  • PerformanceRNN과  LookBack RNN과도 비교를 했다.
  • 실험 결과 Relative positional self-attention을 적용한 방법이 가장 좋았다.

Figure 8 :  Piano-E-Competition 데이터로 실험한 결과를 정리한 표

  • 아래 그림(Figure 9)은 Relative attention을 적용한 Transformer와 Vanilla Transformer, 그리고 PerformanceRNN이 prime(음정, 화성음 등을 뜻함)을 어떻게 반복하고 있는지를 나타낸 그림이다. 확실히 Relative attention을 적용한 Transformer가 더 반복되면서 변화되는 구문을 생성하고 있음을 볼 수 있으며 Vanilla Transformer는 시퀀스 길이가 길어질수록 성능이 나빠지고 있음이 관찰된다. PerformanceRNN도 LSTM을 사용하기 때문에 시퀀스가 길어지니 성능이 하락한다.

Figure 9 :   가장 위의 행이  Relative attention을 적용한 Transformer, 가운데 행이  Vanilla Transformer, 가장 아래 행이  PerformanceRNN의 결과이다.

 

- Human Evaluations

  • 3명의 사람이 180개의 음악을 비교한 결과가 다음과 같다.

Figure 10 :  각 모델이 서로를 이긴 횟수. Error bar는 평균의 표준편차를 표시한다.

  • Relative attention을 적용한 Transformer가 실제 원본 데이터만큼은 아니지만 그래도 기존의 다른 모델들보다는 더 좋은 성능을 보여주고 있음을 알 수 있다.

Results for Music Generation

  • 다음의 링크에서 음악 생성 결과를 들어볼 수 있다.