OpenAI MuseNet

OpenAI는 10가지의 서로 다른 악기를 사용하여 최대 4분 길이의 음악 작곡을 생성하는 심층 신경망인 MuseNet을 소개했습니다. 이 모델은 음악 이론을 명시적으로 프로그래밍하지 않고도 Mozart와 Chopin부터 Beatles와 컨트리 음악에 이르기까지 다양한 음악 스타일을 혼합할 수 있으며, 대신 대규모 MIDI 파일 데이터셋에서 다음 토큰을 예측함으로써 패턴을 발견합니다.

Architecture and Technical Foundation

MuseNet은 GPT-2와 동일한 범용 비지도 학습 기술을 사용하는 대규모 transformer 모델을 기반으로 구축되었습니다. 특히 72개 레이어 네트워크와 24개의 어텐션 헤드를 지원하기 위해 Sparse Transformer의 recompute 및 최적화된 커널을 활용합니다.

주요 기술 사양은 다음과 같습니다:

  • Context Window: 4,096개 토큰의 컨텍스트에 대한 전체 어텐션(Full attention)을 통해 모델이 장기적인 음악 구조와 멜로디의 일관성을 유지할 수 있도록 합니다.
  • Training Objective: 모델은 데이터가 오디오인지 텍스트인지에 관계없이 시퀀스 내의 다음 토큰을 예측하도록 학습됩니다.
  • Domain Application: 음악은 텍스트(유동적인 토큰 구조)와 이미지(고정된 공간 관계) 사이의 간극을을 메우는 테스트 베드 역할을 하므로 Sparse Transformer의 테스트 베드로 사용됩니다. 리듬이나 멜로디의 구조적 오류는 매우 잘 들리기 때문입니다.

Control Mechanisms: Composer and Instrumentation Tokens

사용자에게 출력물에 대한 제어권을 제공하기 위해, OpenAI는 작곡가 및 악기 토큰을 구현했습니다. 이러한 토큰들은 학습 과정에서 샘플 앞에 추가되어, 모델이 특정 스타일이나 악기를 결과적인 음표 예측과 연관시킬 수 있도록 합니다.

생성 시점에 이 토큰들은 조건부(conditioners) 역할을 합니다. 예를 들어, 프롬프트에 "Rachmaninoff piano start" 또는 "the band Journey, with piano, bass, guitar, and drums"와 같은 조합을 지정할 수 있습니다. 이러한 토큰들은 강력한 제안 역할을 하지만 엄격한 요구 사항은 아닙니다. MuseNet은 가능한 모든 음표와 악기에 대해 확률을 계산하므로, 때때로 요청된 악기 구성에서 벗어날 수도 있습니다.

Dataset and Tokenization

MuseNet은 ClassicalArchives, BitMidi, MAESTRO 데이터셋, 그리고 재즈, 팝, 아프리카, 인도, 아랍 스타일을 다루는 다양한 온라인 컬렉션에서 가져온 수십만 개의 MIDI 파일을 통해 학습되었습니다.

Token Encoding

OpenAI는 피치, 볼륨, 악기 정보를 하나의 토큰으로 결합하는 간결한 형식을 채택하기 전까지 여러 인코딩 방법을 실험했습니다. 시도되었던 다른 방법들은 다음과 같습니다:

  • Chordwise approach: 동시에 울리는 모든 음표의 조합에 단일 토큰을 할당하는 방식.
  • Condensed patterns: 음표의 시작에만 집중하고 byte pair encoding을 사용하는 방식.
  • Timing markers: 템포 스케일링된 토큰(음악적 비트)과 초 단위의 절대 시간을 모두 테스트하는 방식.

Training Augmentations

강건성을 향상시키기 위해, 학습 과정에는 다음이 포함되었습니다:

  • Pitch Transposition: 피치를 높이거나 낮추는 방식 (악기가 자연스러운 음역대를 유지하도록 후기 단계에서는 축소됨).
  • Volume Augmentation: 샘플의 전체 볼륨을 조정하는 방식.
  • Timing Augmentation: 절대 시간 인코딩을 사용할 때 곡의 속도를 약간 높이거나 늦추는 방식.
  • Mixup: 토큰 임베딩 공간에서 mixup을 적용하는 하는 방식.
  • Inner Critic: 실제 데이터셋 샘플과 모델의 과거 생성물을 구분하도록 학습된 판별기(discriminator)로, 생성 과정에서 더 높은 품질의 샘플을 선택하는 데 사용됩니다.

Structural Embeddings

표준적인 위치 임베딩(positional embeddings) 외에도, MuseNet은 구조적 컨텍스트를 제공하기 위해 몇 가지 특화된 임베딩을 사용합니다:

  • Timing Embeddings: 시간의 흐름을 추적하는 학습된 임베딩으로, 동시에 울리는 음표들이 동일한한 timing embedding을 공유하도록 보장합니다.
  • Chord Embeddings: 코드 내의 각 음표에 대한 임베딩으로, 모델이 음표 간의 상대적 어텐션을 학습하도록 돕습니다.
  • Global Structural Embeddings: 모델이 더 큰 곡의 흐름 내에서 방향을 잡을 수 있도록 하는 두 가지 임베딩입니다. 하나는 곡을 128개 부분으로 나누고, 다른 하나는 모델이 종료 토큰에 도달할 때 127에서 0으로 카운트다운하는 방식입니다.

Sources