논문/논문 정리

[논문 정리] MIDI-GPT: A Controllable Generative Model for Computer-Assisted Multitrack Music Composition

bengal3636 2025. 2. 12. 13:48

Why This Paper?

굉장히 최근에 나온 논문이다. Music generation 관련 연구 주제를 선정할 때 도움이 될 것 같아서 선정했다.


Introduction

최근의 음악 생성 시스템(music generation) 연구는 음악적 요소를 모델링하는 것 자체를 최종 목표로 삼는 경향이 있다. 그러나 이러한 연구들은 실제 활용 가능성에 대한 고려가 부족하다. 이러한 연구들은 효율적인 음악 생성 기법(generative methods for music)의 기초를 마련하는데 기여했지만, 실제로 공동 창작(co-creative) 환경에서의 활용성은 여전히 제한적이다.

 

이와 대조적으로 언어 및 비전 과제에서는 생성 모델(generative models)이 널리 사용되고 있지만 기호적(symbolic) 음악 작곡 분야에서는 이러한 확산이 아직 동일한 수준으로 이루어지지 않았다. 또한 최근 예술가들은 음악 분야에서 인공지능의 오용(misuse)에 대한 우려를 표명하였다. 

 

따라서 음악가들이 생성 시스템을 적극적으로 수용하도록 하려면,

  1. 모델이 제어 가능해야 한다.(controllable)
  2. 사용자가 자신만의 창작물로 받아들일 수 있는 콘텐츠를 생성할 수 있어야 한다.
  3. 기존 작곡 workflows에 통합될 수 있어야 한다.

이러한 고려 사항을 바탕으로 MIDI-GPT를 소개한다. MIDI-GPT는 Ens and Pasquier(2020)의 대체적인 다중 트랙 음악 표현(alternative representation for multi-track musical material)을 기반으로 한 스타일에 구애받지 않는(style-agnostic) 생성 모델이며, 표현력이 뛰어나고 사용자가 원하는 방향으로 조정할 수 있는 시스템이다.

 

우리는 MIDI-GPT의 실제 사용 사례를 제시하고 아래의 주장에 대한 정량적 증거(quantitative evidence)를 제공한다.

  1. 생성된 음악이 길어질수록, MIDI-GPT는 훈련 데이터의 중복을 거의 발생시키지 않는다.
  2. MIDI-GPT는 훈련 데이터의 스타일적 특징(characteristics)을 유지하는 음악을 생성한다.
  3. 속성 제어(attribute control) 방법은 음악 생성 과정을 효과적으로 조정하는 수단이 될 수 있다.

Background

우리는 실용적(interactive)이고 상호작용적인 컴퓨터 지원 작곡(computer-assisted composition) 어플에 적합한 시스템을 개발하는 것을 목표로 한다. 이를 위해 생성 음악 시스템(generative music systems)의 실제 활용성(real-world usability)을 향상시키는 요소들을 식별해야 한다.

 

첫 번째 설계 결정(first design decision)으로 입력 및 출력 형식으로 General MIDI를 사용하기로 했다. General MIDI는 가장 널리 지원되는(symbolic music encoding standard) 기호적 음악 인코딩 표준이기 때문이다. 우리는 두 가지 주요 범주를 고려한다. I/O 사양(시스템이 처리하고 생성할 수 있는 음악적 요소에 대한 제한)과 생성 방법(기존 음악 콘텐츠를 프롬프트로 활용하는 방식 vs 조건 없이(unconditioned) 음악을 생성하는 방식)을 고려한다.

 

Input/Output Specification

우리는 먼저 트랙($t_{\textrm{inst}}$)를 정의하는데, 이는 하나의 악기(instrument)에 의해 연주되는 특정한 음악적 요소(예를들어 음표) 집합이다. 일부 경우에는 트랙이 악기(instrument)가 아니라 음악적 목적(ex. $t_{\textrm{melody}}$)에 따라 구별될 수도 있다. 예를 들어 MusicVAE (Roberts et al. 2018)는 모든 멜로디를 단일 트랙 유형으로 집계하며 악기(피아노, 신스, 색소폰 등)에 따라 멜로디를 구분하지 않는다.

 

이후 설명에서는 아래와 같은 기호를 사용할 예정이다.

  • $t_{\textrm{inst}}^m$ : 단선율(monophonic) 트랙
  • $t_{\textrm{inst}}^p$ : 다성(polyphonic) 트랙
  • $t_{\textrm{drum}}$ : 드럼(drum) 트랙

예를 들어 $t_{\textrm{bass}}^m$는 단선율 베이스(monophonic bass) 트랙을 의미한다.

 

생성된 음악 조각(excerpt)은 트랙 유형의 리스트로 설명할 수 있다(ex. $[t_{\textrm{bass}}^m, t_{\textrm{piano}}^p]$). 그리고 우리는 이를 이용하여 임의의 음악 생성 시스템에 대해 출력 사양(output specification, $O$)를 정의할 수 있다.(ex. $O^* = \{[t_{\textrm{bass}}^m, t_{\textrm{piano}}^p], [t_{\textrm{piano}}^p, t_{\textrm{synth}}^p]\}$). 우리는 시스템이 고정된 스키마(fixed schema)를 가진다고 가정하는데, 이는 $O^*$에 단일 트랙 목록만 포함될 경우를 의미한다. 예를 들어 CoCoNet(Roberts et al. 2018)의 출력 스키마는 $O^* = \{[t_{\textrm{soprano}}^m, t_{\textrm{alto}}^m,t_{\textrm{tenor}}^m, t_{\textrm{bass}}^m ]\}$로 고정되어 있으며 소프라노, 알토, 테너, 베이스 트랙으로 구성된 4트랙 음악만 생성 가능함을 의미한다.

 

아래 표에서는 기호적(symbolic) 음악 생성 시스템의 주요 특징을 설명한다: 트랙 개수(number of tracks), 악기 개수(number of instruments), 고정된 스키마(fixed schema) 사용 여부, 드럼 트랙(drum tracks) 지원 여부, 트랙 수준의 다성음(polyphony at the track-level) 지원 여부. 일반적으로 출력 제약을 줄이면 더 다양한 음악적 실험과 사용자 워크플로우를 수용할 수 있어서 시스템의 활용도를 높일 수 있다. 우리는 스타일 특정적(style-specific) 생성 시스템은 고려하지 않으며 대신 최대한 다양한 사용자를 수용할수 있는(style-agnostic) 생성 시스템을 목표로 한다.

위의 표에서 설명된 것처럼 대부분의 음악 생성 시스템은 단일 트랙을 지원하거나 고정된 악기 구성(fixed schema of instruments)를 사용한다. 그러나 MuseNet(Payne, 2019)는 예외로 최대 10개 트랙과 10개의 악기 조합을 자유롭게 선택하여 생성할 수 있다.

 

그러나 MuseNet과 MIDI-GPT 사이에는 중요한 차이점이 존재한다. MuseNet은 각 트랙에서 음 높이(pitch)에 따라 개별적인 NOTE_ON 및 NOTE_OFF 토큰을 사용하여 표현할 수 있는 트랙 수에 근본적인 한계가 존재한다. 토큰(음악 요소)을 표현하는 어휘 크기(token vocabulary size)가 무한정 증가할 수 없기 때문이다.

 

이에 반해, 우리는 NOTE_ON, NOTE_DUR(음 길이), NOTE_POS(음 위치) 토큰에서 트랙 정보를 분리하는 방식을 적용했다. 이를 통해 각 트랙에서 동일한 토큰을 사용할 수 있도록 하였으며 결과적으로 128개의 General MIDI 악기를 모두 활용할 수 있도록 개선했다.

 

MuseNet과 MIDI-GPT는 고정된 악기 구성(fixed instrument schema)을 요구하지 않는다는 점에서는 유사하지만, MIDI-GPT는 제안 시스템으로 특정 악기를 생성하도록 가이드할 수 있는 기능이 추가되었다.


Generation Tasks

우리는 4가지 서로 다른 음악 생성 작업을 고려한다: 비조건 생성(unconditional generation), 연속 생성(continuation), 삽입 생성(infilling), 속정 제어(attribute control)이다.

 

1. 비조건 생성

  • 음악을 처음부터 생성하는 방식
  • 모델이 학습한 데이터 외에는 사용자가 출력 결과를 제어할 수 없음

2. 연속 생성

  • 생성할 음악의 앞부분에 해당하는 기존 음악 데이터를 모델에 제공
  • 모델은 이후 부분을 생성
  • 무조건적 생성과 연속 생성은 모두 자기회귀(auto-regressive) 모델에서 가능하다

3. 삽입 생성

  • 음악의 일부를 조건으로 제공
  • 빈 공간을 채우도록 모델이 학습
  • 인페인팅(inpainting)과 혼용되지만, 차이점이 존재
  • 이미지에서는 특정 영역을 inpainting할 때, 정확한 위치와 개수가 사전에 정의되지만 음악은 토큰의 개수를 알 수 없음

거기에 추가로 다중 트랙(Multi track) 음악에서 트랙이 섞여(interleaved) 저장되는 경우, 추가할 토큰의 위치를 미리 정하는 것이 어렵다. 이러한 이유로 마디(bar) 수준 및 트랙 수준에서의 인필링(infilling)은 매우 복잡한 문제이다. 이는 본 연구에서 설명하는 표현 방식을 직접적으로 설계하게 된 동기이다. 트랙을 순차적으로 정렬하면 삽입할 토큰의 위치를 명확히 할 수 있다.

 

인필링(infilling)은 여러 수준에서 발생할 수 있다. 즉 개별 음표 수준(note-level), 마디 수준(bar-level), 트랙 수준(track-level)에서 이루어질 수 있다. 트랙 수준 인필링은 가장 거친 형태의 생성 방식으로 기존의 $k$개의 트랙을 조건으로 제공하고 $n$개의 새로운 트랙을 생성하는 방식이다. 결과적으로 $k + n$개의 트랙을 포함하는 음악이 된다.

 

마디 수준 인필링은 하나 이상의 트랙에서 선택된 $n$개의 마디를 다시 생성하는 방식이다. 이를 위해 해당 트랙뿐만 아니라 모든 다른 트랙의 과거, 현재, 미래의 내용을 조건으로 사용한다.


Proposed Music Tokenization

이 부분에서는 음악 작곡을 해석하는 2가지 토큰화 방식인 멀티 트랙 표현과 바-필(Bar-Fill) 표현을 소개한다. 기존의 다른 시스템은 NOTE_ON, NOTE_OFF, TIME_DELTA 토큰을 사용하는 반면 우리는 Pop Music Transformer(Huang & Yang, 2020)에서 사용된 방식과 유사한 접근 방식을 활용하여 음악 데이터를 표현한다. 멀티 트랙 표현 방식에서는 각 마디(bar)는 아래와 같은 토큰 시퀀스로 표현된다.

  • 128 NOTE_ON 토큰 : 마디 내에서 연주되는 각 음표의 음높이를 나타냄
  • 96 TIME_POSITION 토큰 : 각 음표의 절대 시작 시간(absolute start time)을 나타냄(이전 이벤트로부터 경과 시간이 아니라, 마디의 시작부터 얼마나 시간이 경과했는지를 표현)
  • 96 DURATION 토큰 : 각 음표의 지속 시간(duration)을 나타낸다. DURATION 및 TIME_POSITION 토큰은 모두 16분음표 셋잇단음(sixteenth-note triplet) 단위로 증가하며, 가장 짧은 음표에서 가장 긴 음표까지 표현 가능

멀티 트랙(A) 및 bar-fill(B) 토큰화 방식

 

우리는 마디를 BAR_START 및 BAR_END 토큰으로 구분한다. 여러 마디가 모이면 트랙이되며, 트랙은 TRACK_START 및 TRACK_END 토큰으로 구분된다. 각 트랙의 시작에는 128개의 INSTRUMENT 토큰 중 하나가 배치되며, 이는 해당 트랙의 MIDI 프로그램을 지정한다. 또한 각 트랙의 생성이 특정 음악적 속성에 따라 조건화되도록 하는 토큰들이 INSTRUMENT 토큰 뒤에 추가되며, 이 속성에 대한 자세한 내용은 밑에서 설명할 것이다.

 

모든 트랙은 멀티트랙 음악 작품 내에 중첩되며, 이는 START 토큰으로 시작된다. 중요한 점은 모든 트랙이 순차적으로 재생되는 것이 아니라 동시에 재생된다. 즉 트랙들이 독립적으로 연주되는 것이 아니라, 하나의 곡 안에서 동시에 실행된다. 우리는 END 토큰을 사용하지 않으며 특정 개수의 트랙을 생성하고 싶다면 샘플링을 n번째 TRACK_END 토큰에 도달할 때까지 진행하면 된다.

 

멀티트랙 표현 방식은 각 트랙의 생성을 이전 트랙의 기반으로 조건화(condition)할 수 있도록 하여 일부 음악적 요소를 고정한 상태에서 추가적인 트랙을 생성할 수 있도록 한다. 그러나 이 방식은 트랙 내 개별 마디(bar)에 대한 제어를 제공하지 않기 때문에 트랙 중간에 있는 마디를 삽입(fill in)할 수 없다. 따라서 특정 트랙의 특정 마디를 생성할 때, 다른 마디를 조건으로 활용할 수 있도록 하기 위해 바-필(Bar-Fill) 표현 방식을 도입했다.

 

이 방식에서는 예측해야 할 마디(bars to be predicted)를 FILLIN 토큰으로 대체하여, 이 마디들은 곡의 마지막 트랙 토큰 이후(end of the piece after the last track token)에 위치하거나 생성된다. 각 마디는 FILLSTART 및 FILLEND 토큰으로 구분되며, 기존의 BARSTART 및 BAREND 토큰 대신 이를 사용한다. 훈련 과정에서 FILLIN 토큰이 포함된 마디들은 원래 멀티트랙 표현에서 나타난 순서대로 유지된다. 바-필(Bar-Fill) 표현 방식은 START 토큰 대신 STARTFILL 토큰으로 시작된다. 또한 멀티트랙 표현 방식은 바-필 표현의 특수한 경우이며, 삽입(infilling)할 마디가 선택되지 않은 경우에 해당한다.

 

Adding Interpretation Expressiveness

기호적 음악(symbolic music)을 표현력 있게 생성하려는 시도는 여러 번 이루어졌지만 표현력 있는 멀티트랙 음악(expressive multi-track music) 생성이 가능한 모델은 존재하지 않았다. 여기서 우리는 음악적 표현력의 두 가지 주요 요소인 속도(강약의 대리 변수), 마이크로타이밍(미세한 타이밍 조절)에 초점을 맞춘다. 

 

우리는 기존 토큰화 방식에 두 가지 확장을 추가하여 표현력 있는(Expressive) MIDI를 동시에 생성할 수 있도록 구현하였다. 이를 통해 GigaMIDI 데이터셋의 31%를 차지하는 강약 변화 및 비양자화(non-quantized) 마이크로 타이밍이 포함된 표현력 있는 MIDI 파일을 활용할 수 있게 된다.

 

우선 우리는 128개의 VELOCITY 토큰을 포함하였으며, 이 토큰들은 각 MIDI 음표의 모든 속도 수준을 인코딩할 수 있다. 속도는 강약(dynamics)의 대리 변수이며, 음악 연주의 표현력(expressiveness)을 결정하는 중요한 요소 중 하나이다.

 

두 번째로 우리는 마이크로타이밍(microtiming)을 표현하기 위한 새로운 토큰을 추가했다. 현재 토큰화 방식에서는 마디(bar) 내에서 96개의 TIME_POSITION 토큰을 사용하여 시간 정보를 나타낸다. 그러나 이 방식은 마이크로타이밍을 반영하지 못하기 때문에 해결책으로 DELTA 토큰을 추가한다. DELTA 토큰은 원래 MIDI 음표의 실제 발생 시간($t_s$)과 양자화된 TIME_POSITION 토큰의 시간($t_k$) 간의 차이를 인코딩한다. DELTA 토큰은 1/160번째 16음표 셋잇단음(sixteenth-note triplet) 단위로 오프셋을 인코딩한다. 총 80개의 DELTA 토큰을 고려했고 시간 차이가 음의 방향일 경우 DELTA-1 토큰을 사용한다. 


Controlling Music Generation

속성 제어(attribute controls)의 기본 개념은 주어진 음악 조각 $x$와 측정 가능한 음악 속성 $a$가 있을 때, 이 속성 $a$에 대해 범주형(categorical) 또는 서열적(ordinal) 값을 계산할 수 있다는 점에 기반한다. 즉, 모델은 $a(x)$를 나타내는 토큰과 해당 트랙의 음악적 콘텐츠 사이의 조건부 관계를 학습하게 된다.

 

이때, 이러한 토큰이 음악 데이터보다 먼저 등장해야 한다. INSTRUMENT 토큰 바로 뒤에 하나 이상의 CONTROL 토큰을 삽입하여 특정 음악 속성 $a(x)$의 값을 지정하면 된다. 이 CONTROL 토큰은 음악 데이터를 지정하는 토큰보다 앞에 배치된다. 우리는 생성된 음악 데이터의 음악적 속성을 제어하기 위해 아래의 3가지 방식을 이용한다.

  • 범주형 제어(categorical controls) : $n$ 개의 서로 다른 범주 중 하나를 조건으로 설정하여 음악을 생성하는 방식
  • 값 제어(value controls) : $n$ 개의 서로 다른 연속적(continuous) 값 중 하나를 조건으로 설정하여 음악을 생성하는 방식
  • 범위 제어(range controls) : 특정 음악 속성이 지정된 범위 내에서만 값을 가질 때만 음악을 생성하도록 시스템을 조건화하는 방식

악기 제어(Instrument control)은 범주형 제어(categorical controls)의 한 예시로, 128개의 서로 다른 악기 유형 중 하나를 선택할 수 있다. 

 

우리는 음 밀도(note density)를 제어하기 위해 값 제어(value control)를 사용하지만, 밀도 카테고리는 악기 유형에 따라 달라진다. 이는 각 악기의 평균 음 밀도가 크게 다르기 때문이다. 128개의 General MIDI 악기에 대해, 우리는 데이터셋에서 각 마디(bar)에서 발생하는 음의 개수를 계산한다. 그리고 각 악기의 분포를 10개의 구간으로 나눈다. 이때, 구간은

$$[P_{10i}(\sigma),P_{10(i+1)}(\sigma))$$

으로 정의되며, 여기서 $P_n(\sigma)$는 분포($\sigma$)의 $n$번째 백분위수를 의미한다. 각 구간은 특정 악기에서의 서로 다른 음 밀도 수준을 나타낸다.

 

우리는 음표의 지속 시간(note duration)과 폴리포니(polyphony)를 제어하기 위해 범위 제어(range control)을 적용한다. 각 음표의 지속 시간($d$)는 $\left \lfloor \log_2(d)\right \rfloor$로 양자화 된다. 양자화 과정에서는 음표 지속 시간을 5개의 범주(bin)로 그룹화한다 : $ \left[\frac{1}{32}, \frac{1}{16}\right), \left[\frac{1}{16}, \frac{1}{8}\right),  \left[\frac{1}{8}, \frac{1}{4}\right),  \left[\frac{1}{4}, \frac{1}{2}\right),  \left[\frac{1}{2}, \frac{1}{1}\right)$ 우리는 이를 음 길이라고 부른다. 그 후, 트랙 내의 모든 음표 지속 시간 값들의 15번째 및 85번째 백분위수를 계산하고, 이를 사용하여 생성 조건을 설정한다. 폴리포니(polyphony, 동시에 울리는 음의 개수)도 유사한 방식을 따른다. 동시에 연주되는 음표 개수를 계산해서 15번째 및 85번째 백분위수를 추출하여 이를 기준으로 모델을 조건화 한다.

 

간단한 예시 : 지속시간을 순서대로 쭉 나열한 뒤 85%의 위치와 15%의 위치에 해당하는 지속시간 값들을 사용해서 하한과 상한으로 사용

 

이 두 제어 방식에는 각각 2개의 토큰을 사용하는데, 하나는 하한(lower bound), 하나는 상한(upper bound)를 설정하는 역할이다. 엄격하게 범위 제어를 하기 위해서는 0번째와 100번째를 사용하는 것이 맞지만, 우리는 15번째 및 85번째 백분위수를 선택하여 이상치의 영향을 완화하였다.


Training MIDI-GPT

우리는 GigaMIDI (Lee et al. 2024) 데이터셋을 사용하여 모델을 학습하였다. 이 데이터셋은 MetaMIDI 데이터셋을 기반으로 구축되었다. 모델 학습 데이터의 분할은 다음과 같다 : 학습 데이터($p_{train}$) 80%, 검증 데이터($p_{valid}$) 10%, 테스트 데이터($p_{test}$). 우리의 모델은 GPT-2 아키텍처 기반으로 구축되었으며, HuggingFace Transformers 라이브러리(Wolf et al. 2020)를 사용하여 구현되었다.

 

각 배치(batch)에는 32개의 랜덤한 MIDI 파일을 샘플링한다. 각 MIDI 파일에서 랜덤한 4-bar 또는 8-bar 멀티트랙 세그먼트를 추출한다. 한 세그먼트가 $n$개의 트랙을 가지고 있을 때, $k$개의 트랙을 무작위로 선택한다.($k$ 값은 2에서 $\min (n, 12)$ 사이의 랜덤값이다). 75%의 확률로 바 인페인팅(bar inpainting)을 수행하며 최대 75%의 마디(bar)에 마스크(mask)를 적용한다. 마스크할 바의 개수는 $[0, \left \lfloor n_{tracks} * n_{bars} * 0.75\right \rfloor]$이다. 

 

이후 드럼 트랙을 제외한 모든 음악적 피치를 랜덤하게 변환(transpose)한다. 범위는 [-6,5] 이다. 각 배치에서 새로운 $n$-bar 세그먼트를 선택할 때, 트랙을 랜덤하게 재배열하여 모델이 다양한 트랙 조합을 학습하도록 유도한다. 이러한 학습 방식 덕분에 모델이 새로운 트랙을 생성할 때 기존 트랙과 조화를 이루는 적절한 악기를 선택할 수 있도록 학습된다.

 

모델 학습에는 Adam 옵티마이저를 사용하며 학습률(learning rate)는 $10^{-4}$로 설정된다. 훈련이 수렴하는 데 걸리는 시간은 2~3일이며, 4개의 NVIDIA V100 GPU를 사용해서 학습을 진행했다.


Sampling with MIDI-GPT

시스템에서 구문적으로(syntactically) 유효한 출력을 생성하기 위해, 우리는 특정 마스킹 제약 조건을 적용했다. 모델의 추론 과정에서 선택된 토큰을 특정 단계에서 마스킹하여 토큰화 방식에 맞는 유효한 시퀀스가 유지되도록 한다. 예를 들어 NOTE_ON 토큰이 등장한 직후 BAR_END 토큰이 나오는 것은 올바르지 않다. 이러한 경우 BAR_END 토큰이 샘플링되지 않도록 마스킹을 진행한다.

 

이런 규칙 기반 샘플링 접근법을 통해 모델이 항상 논리적인 음악 구조를 유지하면서 동작할 수 있도록 보장한다.


Release, Evaluation, and Applications

MIDI-GPT는 현재 공개되었으며 실제 다양한 환경에서 사용되고 있다. 이는 MIDI-GPT가 컴퓨터 보조 작곡에 실용적인 모델이라는 우리의 주장을 직접적으로 뒷받침한다. 현재 진행 중인 협업 사례로는 Teenage Engineering, Elias가 있고 실제 음악 작곡에도 사용된 적이 있다.(2022년 및 2023년 AI Song Contest 참가곡 2곡, 총 4개의 앨범, 게임용 적응형 음악, 프랑스 작곡가들과의 연례 아티스트 레지던시 프로젝트)

 

과거 이전 버전의 MIDI-GPT로 사용 편의성, 사용자 경험, 기술 수용도를 측정했으며 설득력 있는 결과를 도출했다. 이미 포괄적인 사용자 연구를 진행했기 때문에 이번 연구에서는 청취 테스트를 반복하지 안혹 대신 실제 환경에서 시스템의 사용성에 영향을 미치는 요소들을 분석하는 실험을 진행한다.

 

  1. 창의성 : MIDI-GPT는 새로운 변주곡을 생성하는가, 아니면 단순히 학습 데이터셋을 복제하는가?
  2. 스타일 유사성 : MIDI-GPT가 생성하는 음악은 데이터셋과 스타일적으로 유사한가?(음악적으로 잘 구성된 음악을 생성하는가?)
  3. 속성 제어 : 밀도 수준, 폴리포니 범위, 음표 지속 시간 범위 등의 제어 기능은 얼마나 효과적인가?

Evaluating the Originality of Generated Material

데이터 셋 내 창의성 검증(Intra-Dataset originality) MIDI-GPT가 학습 데이터를 단순 복제하는지 또는 새로운 변주(variation)를 생성하는지 평가하는 것이 중요하다. 특히, 저작권 문제 방지 및 음악적 창의성 보장을 위해 이를 검증해야 한다. 이를 위해, 해밍 거리(Hamming Distance)를 활용하여 생성된 음악과 학습 데이터의 유사도를 측정한다. 해밍 거리는 두 피아노 롤(piano roll) 간 차이를 정량화하며, 거리가 1이면 완전히 다르고, 0에 가까울수록 유사하다.

 

하지만 MIDI 데이터셋에는 수십만 개의 고유한 파일이 있기 때문에, 검색 속도를 높이기 위해 최적화 기법을 적용한다.

  1. 단일 바(Single-Bar) 검색을 먼저 수행한 후, n-bar(연속된 마디)와 비교하는 방식으로 연산량을 줄인다.
  2. 압축된 피아노 롤을 먼저 필터링하여 불필요한 비교를 줄이고, 후보가 좁혀진 후에 해밍 거리를 계산한다.
  3. 32코어 머신에서 병렬 처리하며, 평균적으로 83초 내에 검색이 완료된다.

평가는 100회의 실험을 진행하며 4-트랙 8-마디 음악 샘플을 무작위로 선택한 후 특정 트랙에서 일부 마디를 마스킹(blank out)하고, MIDI-GPT가 이를 채우도록(infill) 한다. 생성된 결과가 학습 데이터셋과 얼마나 유사한지 해밍 거리를 기준으로 비교한다.

 

결과는 아래와 같다.

  • 마디(bar) 수가 짧을수록 학습 데이터와 유사할 가능성이 높음
  • 마디(bar) 수가 길어질수록 창의적인 음악 생성 가능성이 증가
  • MIDI-GPT는 단순 복제보다는 새로운 변주(variation)를 만들어낼 수 있음을 확인

인필링 창의성 평가(Infilling Originality) 모델이 인필링(infilling)을 수행할 때, 사용자가 채우고자 했던 부분과 완전히 동일한 음악을 예측할 가능성이 있다. 이 경우, 실제로는 아무 변화도 일어나지 않으며 이는 사용자에게 좌절감을 줄 수 있다. 따라서 MIDI-GPT가 인필링 시 얼마나 새로운 변주(variation)을 생성하는지 측정해야 한다.

 

이를 위해 4-트랙 8-마디 음악 샘플을 무작위로 선택한 후, 단일 트랙에서 $n$개의 연속된 마디를 마스킹한다. 그리고 MIDI-GPT가 해당 부분을 채우도록 하고 기존 마디($o_i$)와 생성된 마디($g_i$)의 피아노 롤을 비교하여 자카드 유사도(Jaccard Index)를 계산한다. 이 과정을 $n = 1, 2, 4, 8$에 대해 각각 250회 반복하여 결과를 분석한다.

 

결과는 아래와 같다.

  • 마디 수($n$)가 증가할수록, 모델이 원본 데이터를 그대로 복제하는 빈도가 감소
  • MIDI-GPT는 4개 이상의 마디를 생성할 때 새로운 변주를 안정적으로 만들어낼 수 있음
  • 실제 제품에서 활용될 때, 시스템이 자동으로 생성된 결과가 기존과 동일하지 않은지 검증하며, 동일할 경우 다시 생성하도록 설계됨
  • 또한, 생성 과정에서 완전히 무음(Silence)이 생성되는 경우도 방지하도록 구현됨

두 테스트의 결과 (a) 데이터 셋, (b) 인필링


Quantifying Stylistic Similarity

시스템이 생성하는 변주가 데이터셋과 스타일적으로 유사한 것도 중요하다. 우리는 음악 스타일(musical style)을 일련의 음악 데이터에 의해 정의되는 스타일적 특성(stylistic characteristics)로 규정한다.

 

따라서, 우리가 학습 데이터와의 스타일적 유사성을 측정한다고 주장할 때, 우리는 이 데이터셋이 규정하는 스타일과의 유사성을 측정하는 것이다.

 

우리는 StyleRank(Ens and Pasquier, 2019)를 사용하여 생성된 음악 자료의 스타일적 유사성을 측정한다. StyleRank는 두 개 이상의 음악 발췌 그룹$(\mathcal{G}_1, ...,\mathcal{G}_k)$이 특정한 기준이 되는 음악 발췌 그룹 $C$와 얼마나 유사한지 평가하는 시스템이다. 또한 랜덤 포레스트 분류기가 $\mathcal{G}_1, ...,\mathcal{G}_k$와 $C$를 구별하도록 학습된다. 학습된 랜덤 포레스트 분류기의 임베딩 공간을 활용하여 각 그룹 $\mathcal{G}_i$와 $C$간 평균 유사도를 계산할 수 있다.

 

이후 우리는 StyleRank를 활용하여 특정 그룹 간의 중간값 유사도(median similarity)를 나타낸다. 이를 $S_{\mathcal{G}_1,...,\mathcal{G}_k}^C(a,b)$로 표기하며, 이는 StyleRank를 이용하여 학습된 유사도를 의미한다.

 

이 실험에서는 위에서 사용한 동일한 음악 부분을 사용했다$(\hat{O} = \{o_1,...,o_{250}\}, \hat{G} = \{g_1,...,g_{250}\})$. 하지만 $\hat{O}$와 $\hat{G}$를 생성할 때, $J(o_i,. g_i) \geq 0.75$인 쌍 $ (o_i,. g_i) $를 제거했다. 이는 데이터셋에서 원래 존재하는 자료 $(o_i)$와 거의 동일한 생성된 자료가 포함되지 않도록 하기 위해서이다. 그리고 데이터셋에서 길이가 $n$인 1000개의 막대(bar) 세그먼트 집합$(\mathcal{C})$을 구성했다. 사용하는 수식은 아래와 같다.

$$\mathcal{S}_{\hat{O}^*_{25}, \hat{\mathcal{G}}^*_{25}}^{\mathcal{C}^*_{50}}(\hat{\mathcal{O}^*_{25}}, \mathcal{C}^*_{50}) \leq \mathcal{S}_{\hat{O}^*_{25}, \hat{\mathcal{G}}^*_{25}}^{\mathcal{C}^*_{50}}(\hat{\mathcal{G}^*_{25}}, \mathcal{C}^*_{50})$$

여기서 $\hat{X}^*_n$은 $n$개의 요소를 포함하는 $X$의 하위집합을 나타낸다. 즉, 각 실험에서 우리는 코퍼스(corpus) + 원본 음악의 유사도보다 코퍼스(corpus) + 생성된 음악의 유사도가 더 높은지를 확인한다. 이를 100회 반복하여 이항(binomial) 검정을 수행한다. 만약 해당 조건이 참인 횟수와 거짓인 횟수가 차이가 없다면 생성된 음악과 코퍼스 간의 유의미한 차이가 없다고 결론을 내릴 수 있다. 해당 결과는 아래 그림에 나타난다.

결과를 보면 온도(temperature)를 1.0으로 설정하여 생성할 경우, 생성된 음악이 원본 음악과 스타일적으로 동등하다는 것을 의미한다. 또한 온도가 1.0보다 클 경우, 생성된 음악은 원본 음악보다 데이터셋과 더 유사하게 평가되는 경향이 나타났다. 이러한 효과는 생성된 막대(bar)의 개수가 증가할수록 더 뚜렷하게 나타났다. 이 결과는 온도가 약간만 변해도 음악 생성 과정에서 발생하는 변화를 감지할 수 있음을 시사한다.

 

이 결과는 단순히 모델의 분석적 평가(analytical evaluation) 역할만 하는 것이 아니다. 향후 연구에서는 특정 음악 스타일을 대표하는 파일 집합을 조건으로 설정하여 이러한 결과를 재현하는 것을 목표로 한다.

 


Evaluating the Effectiveness of Attribute Controls

MIDI-GPT는 생성 시점의 기존 음악 컨텐츠뿐만 아니라 악기, 음악 스타일, 음 밀도, 폴리포니, 음 길이와 같은 다양한 제어 속성을 조건으로 음악을 생성할 수 있다. 이러한 제어 메커니즘을 평가하기 위해 음 밀도, 폴리포니 수준, 음 길이의 3가지 속성에 초점을 맞추어 8마디(bar) 길이의 음악을 생성하는 실험을 100회 수행하였다.

 

음 밀도의 경우 조건으로 설정된 밀도 수준과 실제 생성된 음악의 밀도 수준의 절대적 차이(absolute difference)를 측정했고 폴리포니 수준 및 음 길이에서는 생성된 음악에서 값 분포를 계산하고 설정된 범위 내에 속하는 값의 비율을 계산했다. 속성 제어가 성공적이라면 전체 값 중 적어도 70% 이상이 설정된 범위 내에 있어야 한다.(15번째 백분위수와 85번째 백분위수를 기준으로 설정했기 때문)

 

음 밀도의 결과는 아래의 그림에서 나오며, 예상된 밀도 수준과 실제 생성된 밀도 수준 간의 절대 차이가 대부분 0이며, 1을 초과하는 경우가 거의 없음을 보여준다. 이는 음 밀도 제어 방법이 효과적임을 나타낸다.

아래의 그림은 음 길이와 폴리포니 수준의 결과를 나타낸다. 설정된 범위 냉에 속하는 음 길이 비율의 중앙값이 대부분의 경우 70% 이상이었지만 $ \left[\frac{1}{4}, \frac{1}{2}\right),  \left[\frac{1}{4}, \frac{1}{1}\right),  \left[\frac{1}{2}, \frac{1}{1}\right)$의 범위에서는 예외적으로 70%를 넘기지 못했다. 

 

반면 폴리포니 수준 제어는 상대적으로 좋지 않은 결과가 나왔다. 여러 실험에서 폴리포니 수준의 중앙값이 70% 이하로 나타났다. 이는 아마 폴리포니 수준을 특정 시점(time-step)에서 계산하는 것이 음 길이보다 더 어렵기 때문일 것으로 추측된다. 결론적으로 MIDI-GPT는 폴리포니 수준보다 음 길이를 더 효과적으로 제어할 수 있음이 확인되었다.

(a) 음 길이의 결과 (b) 폴리포니 수준의 결과

 

이러한 소프트 컨트롤(soft controls) 외에도 규칙 기반 샘플링(rule-based sampling)을 통해 하드 컨트롤을 구현할 수도 있다. 예를 들어, 실용적인 이유로 우리는 하드 폴리포니 제한($l_{poly}$)를 제공한다. 즉, 특정 위치에서 새로운 음표를 삽입하는 것이 가능하더라도 현재 연주 중인 피치의 개수($n_{pitch}$)가 폴리포니 한계($l_{poly}$)보다 작은지 검사한다.


Conclusion

우리는 open RAIL-M 라이선스로 공개된 MMM 모델(Ens & Pasquier, 2020)을 기반으로 스타일에 종속되지 않는 MIDI-GPT를 소개했다. 2048개 토큰의 어텐션 윈도우를 통해 트랙 수와 밀도에 따라 8~16마디(bar)가 생성 가능하며 auto-regressive 방식과 sliding windows 기법을 사용하면 더 긴 음악을 점진적으로 생성할 수 있다.

 

향후에는 아래와 같은 내용을 연구할 것이다.

  • 음악 에이전트에서 실시간 생성이 가능하도록 모델 최적화
  • 더 큰 모델을 훈련하여 어텐션 윈도우 확장, 더 큰 음악 구조를 처리 가능하게 개선
  • 속성 제어의 범위를 확장
  • MIDI-GPT를 실제 제품 및 음악 창작 실무에 지속적으로 통합

https://arxiv.org/abs/2501.17011

 

MIDI-GPT: A Controllable Generative Model for Computer-Assisted Multitrack Music Composition

We present and release MIDI-GPT, a generative system based on the Transformer architecture that is designed for computer-assisted music composition workflows. MIDI-GPT supports the infilling of musical material at the track and bar level, and can condition

arxiv.org