音楽系AIラボKyutaiとMirelo AIの共同開発による、高精度なマルチ楽器音楽採譜モデル「MuScriptor」が発表されました。
オープンソースのモデルとして公開されており、SNSでも多くの方が試用報告をしていますが、複雑な楽曲でもかなり上手く採譜が出来ているようですね。
このモデルはどのように作られたのでしょう?論文を見た限り、MuScriptorは以下のような特徴があります。
- Decoder-only Transformer構造を採用
- 楽器種類による条件付け
- 現実データと合成データの混合データセットによる事前学習
- GRPOライクな強化学習手法による事後学習で採譜の品質を向上
それぞれの特徴を読み解いてみます。
Decoder-only Transformer構造
ノート単位の音楽採譜手法は、音楽のスペクトログラム入力から、楽器、ノート終始位置や音高を表すMIDIライクなトークン列を推定する形で採譜を行います。入力と出力が異なる推定タスクを行うため、既存手法であるMT3はSequence-to-sequence Transformer構造を採用しています。
一方MuScriptorは、Decoder-only Transformer構造を採用しました。音楽オーディオデータのメルスペクトログラムは潜在空間に線型投影した後、楽器の条件付け情報と共にプレフィックストークンとしてTransformerに入力されます。この入力は初回ステップでKVキャッシュに格納され、それ以降のステップでMIDIライクトークンが逐次的に推論される方式になっています。
論文では、このモデル構造が「Seq2seq構造よりも優れている」とは特に主張しておらず、単に近年のマルチモーダルな生成モデルで多用されるアプローチを踏襲しただけかもしれません。構造がよりシンプルで、スケールしやすく、後述する強化学習も(比較的)適用しやすい、といったメリットが考えられます。
楽器種類による条件付け
MuScriptorは、推定対象の音楽が使われている楽器をプレフィックストークンとして指定する機能も持っています。具体的には、128個のMIDIプログラムを38個のサブグループに集約したものをトークンで表現し、専用のトークン埋め込みテーブルを保持しています。
学習時は、入力セグメントで使われた楽器のみに限定せず、当該楽曲で使われた全ての楽器で条件付けています。つまり、入力セグメントでは使われない楽器が指定されている可能性もあります。楽器指定無しでも推定が行えるよう、学習時に20%の確率で条件付けトークンをドロップさせています。
評価実験では、楽器指定して採譜を行うと、楽器指定しない場合と比較して全ての評価指標が1pt~2pt上回りました。
更に条件付けを強化するために、MuScriptorの学習にはclassier-free guidance (CFG)の導入も試みています。ただ実験結果を見た限り、CFGは評価指標的には明確なメリットは無かったようです。楽器判定の正誤も評価するMulti-F1指標を見ると、CFG手法は逆に指標を微減させました。
現実データと合成データによる事前学習
MuScriptorはMIDIから合成したデータと、現実の音楽作品からなるデータの混合データセットで、採譜モデルの事前学習を行いました。
合成データは、Lakh MIDI Datasetや市販MIDIデータをおよそ145万曲分収集したものを用いています。更に学習データの多様性を拡大するために、学習時にMIDIデータのピッチシフト・テンポチェンジ・ベロシティ調整・楽器ランダム変更などの変更を加え、更に250種以上のサウンドフォントからランダムに選択してオーディオデータを合成するという、徹底的なデータ拡張が施されています。
ほぼ無限大規模と言っていい合成データに加え、MuScriptorは更に17万曲(1.1万時間)分の現実の音楽作品とそのアノテーションデータを収集しました。音楽オーディオと楽譜アノテーションは最初からタイミングされておらず、小節位置情報による大域的な同期と、DTWによる細かい同期を組み合わせた時間同期処理でアノテーションデータを作成したとのことです。更に、品質の低いアノテーションの除外処理も行われています。
評価実験では、現実データと合成データの使用量の、採譜精度に対する影響が調査されています。その結論をまとめると、
- 合成データを使うのは概ね使わない場合より良い
- 現実データの量が少ないほど、合成データを使うことによるインパクトが大きい。逆に現実データが十分多ければ合成データを使うことによるインパクトは大きくない
- 合成データのみで学習したモデルの性能は良くない(MT3よりも劣る)
という感じでした。これだけ合成データのデータ拡張を頑張っても、現実音楽データの代わりには全くならないみたいです。
GRPOライクな事後強化学習
これまでの音楽採譜モデルと異なり、MuScriptorは大規模学習データによる教師あり学習を行なった後、更に小規模データセットを用いた事後強化学習ステップを加えています。データセットは、事前学習に用いた現実音楽のデータセットの中から、アノテーション品質が特に高いものを300曲選定したものです。
強化学習は、以下のようなステップで回します。
- 採譜モデルを評価モードに設定する
- オーディオセグメントに対し、温度$\gamma = 0.75$のランダムサンプリングで$G=8$回独立的に推論を行い、8通りの採譜結果を得る
- それぞれの採譜結果のonset, offset, frameのF値を評価し、その和$r_{i,g}$を採譜結果に対する報酬とする
- 報酬値から、それぞれの採譜結果のグループ内正規化アドバンテージを求める:
\hat{A}_{i,g}=\frac{r_{i,g}-\mu_i}{\sigma_i + \epsilon}
with\quad\mu_i=\frac{1}{G}\sum_g{r_{i,g}}, \sigma_i=\sqrt{\frac{1}{G}\sum_g{(r_{i,g}-\mu_i)^2}}, \epsilon=10^{-8}
グループ内アドバンテージとは、「採譜結果$i$が8通りの採譜結果の平均値より良かったか、悪かったか」を表す値です。この「グループ内アドバンテージ」を基準にモデルを更新するのがGRPO(Group Relative Policy Optimization)の考え方です。
- 採譜モデルを訓練モードに切り替えて8通りの採譜結果サンプルを入力して得られた推定logitsを求め、REINFORCE目標関数を計算:
\mathcal{L}_{RL}=\frac{1}{B\cdot C}\sum_{i,g}\hat{A}_{i,g}\cdot\mathcal{L}_{CE}\left(\theta, \gamma|y_{i,g}\right)
${CE}\left(\theta, \gamma|y_{i,g}\right)$は、推定logitsと採譜結果サンプル間の、温度$\gamma$のクロスエントロピーです。このクロスエントロピーロスを$\hat{A}_{i,g}$で重み付けた平均値がREINFORCE目標関数です。この目標関数を最適化することで、より「アドバンテージ」が高い結果を出力し、「アドバンテージ」が低いを抑制するように報酬が更新されます。
本手法では、一般的にGRPOで用いられている、学習中のモデルの変化量を抑えるためのimportance-sampling ratio clippingやKLダイバージェンス手法による正則化テクニックは使われていないため、論文ではあくまで「GRPO-like」な事後学習手法と呼んでいます。
事後強化学習による性能向上はかなり顕著でした。新規学習データを使わず、事前学習で使ったデータの一部のみで事後学習を行なったにも関わらず、事前学習済みモデルと比べて全ての評価指標が4pt~7pt向上しています。
まとめ
MuScriptorは、単にかつて無い規模の教師データを集めて大きなモデルを鍛えただけでなく、事後的な強化学習という、最近の生成AIを鍛えるための手法も取り入れることで、音楽採譜の性能を更に向上させられる事を示した所が画期的だと思います。
本手法では、採譜結果のonset, offset, frameのF値の和を報酬値と定義しました。このように、通常の教師あり学習の目標関数として直接使えないような、微分不能な計算も含む評価指標を学習目標に設定できることが、強化学習の大きな利点だと思います。
適切な報酬値が定義できれば、拍解析やコード解析など他のMIRタスクでも、同じような事後学習手法を適用できるでしょう。そのうち似たような試みが色々出てくるかもしれません。