OpenAI MuseNet
OpenAIは、10種類の異なる楽器を使用し、最大4分間の楽曲を生成するディープニューラルネットワーク、MuseNetを発表しました。このモデルは、音楽理論を明示的にプログラムすることなく、大規模なMIDIファイルのデータセットにおける次のトークンを予測することでパターンを発見し、モーツァルトやショパンからビートルズやカントリーミュージックに至るまで、多様な音楽スタイルを融合させることができます。
Architecture and Technical Foundation
MuseNetは、GPT-2と同じ汎用的な教師なし学習技術を使用した大規模なTransformerモデルに基づいています。具体的には、Sparse Transformerの再計算および最適化されたカーネルを利用して、24個のアテンションヘッドを持つ72層のネットワークをサポートしています。
主な技術仕様は以下の通りです:
- Context Window: 4,096トークンのコンテキストにわたるフルアテンションにより、モデルは長期的な音楽構造とメロディの一貫性を維持できます。
- Training Objective: モデルは、データがオーディオであれテキストであれ、シーケンス内の次のトークンを予測するようにトレーニングされています。
- Domain Application: 音楽は、テキスト(流動的なトークン構造)と画像(固定された空間的関係)の間のギャップを埋めるため、Sparse Transformerのテスト場として機能します。リズムやメロディの構造的なエラーは非常に聞き取りやすいためです。
Control Mechanisms: Composer and Instrumentation Tokens
ユーザーに出力への制御を提供するために、OpenAIは作曲家と楽器のトークンを実装しました。これらのトークンは、トレーニング中にサンプルに付加(prepend)され、モデルが特定のスタイルや楽器を、結果として得られる音符の予測に関連付けることを可能にします。
生成時には、これらのトークンはコンディショナーとして機能します。例えば、プロンプトで「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は構造的なコンテキストを提供するためにいくつかの特殊な埋め込み(embeddings)を使用しています:
- Timing Embeddings: 時間の経過を追跡する学習済み埋め込みであり、同時に入力される音符が同じタイミング埋め込みを共有するようにします。
- Chord Embeddings: コード内の各音符に対する埋め込みであり、モデルが音符間の相対的なアテンションを学習するのを助けます。
- Global Structural Embeddings: モデルをより大きな楽曲全体の中で位置付け、楽曲を128個の部分に分割する埋め込みと、モデルが終了トークンに近づくにつれて127から0へとカウントダウンするもう一つの埋め込みの2つがあります。
Sources
- OriginalMuseNet