Efficient Supervised Training of Audio Transformers for Music Representation Learning
https://scrapbox.io/files/6624efd89ff4db0024bf0e44.png
日付
2024/4/21
論文リンク
文献情報
Efficient Supervised Training of Audio Transformers for Music Representation Learning
Pablo Alonso-Jiménez, Xavier Serra, Dmitry Bogdanov
ISMIR 2023
要は何?
ASTベースのモデルであるPaSSTの学習を音楽情報処理向けにデザインしたMAESTを提案
CNN(EfficientNet-b0で学習したモデル)より性能もスループットも良い,効率的なモデル.
問題意識と解決策
焦点は表現学習.タスク特有ではなく,非依存な特徴表現を得るのが目標.
一旦いい特徴表現が得られれば,タスク特化のEnd-to-Endモデルより学習のコストが抑えられる.
これを得るためのモデルの候補にはTransformerがあげられている.画像・テキストでの成功例もある.
一方音楽ではCNNに基づくモデルがほとんどであり,Transformerに基づくモデルはドメイン特有の特性を考慮できていないのと,計算機資源も多く要するため,まだ決定打となるモデルがない.
yamamoto.icon 同年にMERTやMusicFMが出たのであれ.
ここで本研究は効率的に学習可能なPaSSTを3.3millionトラックの音楽データで学習する方法を考える.
音楽タグ付けを上流タスクとしてPaSSTを学習し,下流タスクに適用する.
関連研究
音楽の表現学習
汎用的な音表現学習は音楽に適しているとは限らない,
むしろ音楽なら音楽,話声なら話声と特定ドメインで特化させた方が良い傾向にある
音楽は教師あり学習によるモデルや,自己教師ありモデルとか色々ある
音分類のTransformer
AST: ViTを音分類に適用
PaSST: 後述,効率的なAST
MaskSpec: マスク部復元による学習を行うAST
Beats: マスク部量子化特徴予測に基づくAST
AudioSetの性能はこんな感じ
https://scrapbox.io/files/6624efc418f4980025173073.png
音楽のTransformerによる表現学習
S3T
Swin transfomerで対照学習による学習を行う
MuLan
言語とのマルチモーダル表現学習
手法
前置き;PaSSTについて
https://scrapbox.io/files/6624f048217c56002436e250.png
ASTベースのモデル.これらのモデルはまずimagenetによるViTまたはDeiTの事前学習を行う.
スペクトログラムを細かい小領域(パッチ)に分割し,線形層を通すことで
入力となるトークンを得る.
この際に,positional encodingを足すが,PaSSTの場合は,時間方向と周波数方向の両方に独立にencodingを用意する.
スペシャルトークンのclsトークン(とdeitベースのモデルの場合distトークンも)に続き,トークン化した入力を列にしてTransformerに入力する.
学習時には,Patchoutという一部のトークンをランダムに除外する方法を入れることで,計算量の削減を狙う.
これによってFlattenした時の系列長が当然短くなる.
穴抜けの入力から情報を推定することが,モデルにとっての正則化の効果もあると報告されている.
また,完全にランダムにpatchoutするunstructured条件と,特定時刻・周波数の全てのパッチをpatchoutするstructured条件では後者の方が性能が上だった.
yamamoto.icon イメージ
https://scrapbox.io/files/6624f662c7eb820024d62325.png
学習時間もメモリサイズも通常のASTより良い
https://scrapbox.io/files/6624f04163c53b002729f95f.png
提案モデル MAEST
https://scrapbox.io/files/6624f903fc0fe50024924cab.png
AST, ViT, PaSSTと同じく,パッチ化部分と12層のTransformerで構成.パラメータは全部で大体87millionくらい.
パッチのサイズは16x16, ストライドは10x10.
PaSSTと同じくpositional embeddingは時間と周波数で独立にする.
PatchoutはPaSSTのstructured条件で行う.スペシャルトークンもclsとdistをつける.
実験とその結果
データセットおよび前処理
のメタデータの音楽を独自に集めた.
yamamoto.icon 正解タグをどうつけたかの話の理解に自信がなかったのでその部分を抜粋する
We obtain our training labels, y, at the master release level by first aggregating the style tags of all the associated releases and then discarding master releases with more than five style tags or without any style label among the 400 most frequent among our pool of tracks.
おそらくマスターリリースというのは異なるバージョンの楽曲(限定盤リリースとか各国リリースとか)の原曲に当たるもので,その単位でまとめて,細かすぎるタグを排除してlong-tail問題を省くとか,ラベル数に制限をかけて学習の難易度を下げるという話だと思うが...
データセット分割
全4mトラックほど.3.3mをトレーニング,40000を評価セットおよびテストセットに割り当て.なおセット間で同じアーティストの曲は出ないようにした.長さが20秒以下の曲は除いた.
前処理
全てのトラックに対し,30秒をサンプル,16kHzにダウンサンプルしたのちに96次元メルスペクトログラムを作成.fftサイズは32ms, ホップサイズは16s,対数圧縮は$ \log{(1+10000x)}で行った.
fp16でデータを保存.
学習時,200,000トラックを毎エポックごとにBalanced samplingする.タグは不均衡なので,タグの総数の逆頻度をとって少数派タグのトラックが優先的にサンプルされるようにする.
学習
Adam, 1e-4のweight decayで130エポックまず学習.その際,5エポックウォームアップし,50エポックまでは学習率を1e-4にしておく.学習率は1e-7までその後50エポックで線形的に減少させる.
メルスペクトログラムはあらかじめ計算する.
データ拡張はmixup(alpha=0.3)とSpecAugment(8時刻分と,8周波数を5グループ)
学習は4個のnvidia 2080 RTX Ti (12GB)を利用
後述の入力時間長を変えたモデルMAEST-5で31時間,MAEST-30で48時間.
推論に使うモデルは,最後のエポックのものと,Stochastic Weight Averaging(SWA);50エポック以上学習したモデルのうち,5エポックごとのモデルを確率的に重み平均する.
重みの初期化:
imagenetで事前学習した,
ViT
Deit B384
AudioSetで事前学習したPaSST
ランダム初期化
の4つを比較.
入力時間長:
5,10,20,30秒をそれぞれ比較
既存のPaSSTのpositional encodingを利用,
patchoutは,5sモデルで3周波数ビン分,15時刻分のパッチを除去,時刻パッチの除去数は入力秒数に合わせて増やす.(例えば20sなら4倍の60パッチ)
評価
下流タスクとして,MTATのタグ付け,MSDのタグ付け(通常の分割とCALSの分割両方を考慮),MTG-jamendoのジャンルタグ(MTGJ-Genre),ムードとテーマタグ(MTGJ-Mood),楽器構成タグ(MTGJ-Inst),頻出トップ50タグ(MTGJ-T50)を用いた.
データの内容などは以下の通り.
https://scrapbox.io/files/6625080cc836000025abfcde.png
下流タスクのモデルはは512隠れ層のMLP層(ReLUとドロップアウト付き).MLP層の入力には,MAESTの途中の層のcls, dist, 層出力の時間平均をとる.
この学習におけるハイパーパラメータも以下のグリッドサーチで実行.
https://scrapbox.io/files/6625092f28f4c90023ef9ad0.png
結果
1. Transformerの何層目が良いかとcls, dist, 層平均どれを用いるべきか
5-12層目の各トークンを比較
あくまでMAEST-30のPaSST初期化,MTTタスク条件.数値はmAP
https://scrapbox.io/files/66250aa018f498002517b42f.png
中間層(特に7層目)が最もいい性能.全てのタイプのトークンのスタックが良い.
2. 重みの初期化はどれが良いか,SWAの効果
https://scrapbox.io/files/66250c35c3806b002381be37.png
PaSSTの初期化が最も良かった
SWAは下流タスクには効果なし
3. 入力時間長はどれが良いのか
5,10,20,30で
https://scrapbox.io/files/66250cba63c53b00272a863b.png
30秒が最も良い性能
CNNベースの手法は3-5秒が良かったが,Transformerの長期依存のおかげで,長い系列を扱う強みが出た
4. 下流タスクの性能
ベースライン
SoTA
Fully-trained: 教師あり学習でそのタスクを1から学習したSoTAモデルの性能
Embeddings: 表現学習のモデル
EfNet-B0: Efficient-Net-b0で学習
MAEST-n n秒の入力長で学習したMAEST
https://scrapbox.io/files/66250d458741220025359f39.png
全ての"オープンアクセスな"モデルで最高性能.
5 より高速な特徴抽出(推論時のpatchoutを適用するとどうなるか?)
そうは言ってもCNNより計算時間も資源も食うので,高速化のために推論時のpatchoutを行い,patchout量と性能のトレードオフを検証.
2種類のpatchoutの掛け合わせで
Time-wise: (2,3,5,10) 時刻分のパッチを除く
Frequency-wise: (3,4) 周波数ビン分のパッチを除く
yamamoto.icon 音楽タグ付けくらいのglobalityならもっと除いても動くもんだと思ったけど意外とそうでもない.
結果:多めにPatchoutを入れても下流タスクでは性能もスループットもCNNより上
上流タスクではMLPを固定しているのでpatchoutすると性能が落ちる,また最終層までデータを通すためそもそもが重い
https://scrapbox.io/files/6625133a5f75e00027b5a122.png
コメント
速くて性能の良い音楽分類モデルとして今後使われていきそう.
BERTベースのモデルに続くもう一つの基盤モデル候補となるのがViTベースのモデル.
PaSSTは環境音分類でも使われているモデルなので,どっちがいいんだろうなぁ,という感想.