【注目論文】ISMIR2022論文ピックアップ（２）

前回に引き続きISMIR2022論文読み記事です。

## P1-04: Scaling Polyphonic Transcription with Mixtures of Monophonic Transcriptions

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128515/0dceb01c-8575-3241-af50-2e05d2c977eb.png)


**単旋律音声を利用して音楽採譜モデル学習データセットを拡張する提案。**

Google Magentaの人たちによる研究です。

MAESTRO、GuitarSet、Slakh2100、MusicNet等、音楽採譜タスクで使えるデータセットは色々整備されていますが、やはり教師ありデータの規模は限界があります。


正解ラベルをを自動で生成する仕組みがあれば、大規模なデータセットを楽に作れるはず。
Slakhデータセットのように、MIDI形式の音楽データから音を合成し、データペアとして使うという手もあると思いますが、
この論文は、**単旋律(monophonic)の楽器演奏音を集めて正解ラベルを作る**というアプローチを検証しました。

二つ以上の音高が同時に鳴らない単旋律音声のピッチ解析は、現在の技術ではほぼ完璧にできるため、
1. 単旋律音声を集めてf0を解析
1. ノート検出アルゴリズムでMIDI形式に変換
1. 音声・MIDIデータをランダムに合体させ、多旋律採譜モデル学習用のデータペアを生成

という手順でデータペアを作成します。

評価実験では約5000時間分の音声をネットから集め、
1. ランダムに生成されたデータペアのみで自動採譜DNNを学習
1. 特定のデータセットでfine-tuningする

という手順で、**MT3**採譜モデルを学習させました。
> MT3について：[**Music Transcription with Transformers**](https://magenta.tensorflow.org/transcription-with-transformers)

提案手法を使わない方と比較して、確かに採譜の正確さは上がっているようです。Zero-shot認識の場合は特に顕著です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128515/5c583477-5897-45ef-d72a-4d145b7537b0.png)

音楽的な音声の組合せでなく、**適当にミックスした音声でも採譜モデルの事前学習に使える**ということが分かったのは一つ収穫だと思います。


## P5-04: MuLan: A Joint Embedding of Music Audio and Natural Language

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128515/f62ccf95-d1be-c574-5d49-6566e1e41e0b.png)

**対照学習による音楽－テキストのクロスモダル表現獲得。**

こちらもGoogleの人たちによる研究。

音楽音声とテキストを結びつける共通の埋め込み空間を作ることで、あいまいな検索文（例：「雨の日に合うゆったりしたジャズピアノ曲」）を用いた賢い音楽検索や、音楽の自動タグ付けを行うことに使えます。

手法自体は標準的な**対照学習**（**Contrastive Learning**）です。
まず、２つのDNNエンコーダーを用いて、音声とテキストデータを同じ埋め込み空間へ変換したあと、関連がある音声・テキストの埋め込み同士が近くなるよう、両エンコーダーを学習させるのです。
うまく学習できれば、共通の埋め込み空間を通じて音声とテキストの関連度を数値化できるようになるので、上述の色んな応用に使えます。

本論文では、音声・テキスト用のエンコーダーはそれぞれ以下の構造を採用しています。
- 音声：log-mel spectrogramを入力とする、事前学習済みのResnet-50あるいはAudioSpectrogramTransformer
- テキスト：事前学習済みBERT

モデル学習時、エンコーダーは音声・テキストのペアデータからなるミニバッチを、それぞれ128次元の埋め込みに変換します。
続いて、計算された埋め込みで**batch-wise Contrastive Multi-view Coding loss**と呼ばれる損失関数が計算されます。

```math
\sum_i^B-\log{[\frac{h[f(x^{(i)}),g(t^{(i)})]}{\sum_{j\neq i}h[f(x^{(i)}),g(t^{(j)})]+h[f(x^{(j)}),g(t^{(i)})]}]}
```

$B$はミニバッチサイズ。つまり、ミニバッチ内のデータペア間で損失関数の計算をしています。
$f(x), g(t)$は音声・テキストエンコーダーが出力した埋め込み。
$h[a,b]$はcritic functionと呼ばれ、$h[a,b]=\exp(a^T b/\tau), \tau \in (0,1]$とします。ベクトル相似度を測るような関数です。
よく見るクロスエントロピー損失をもう少し一般化し、温度ハイパラ$\tau$を付け足したような損失関数ですね。

この損失関数を最適化することで、ミニバッチ内の対応する音声・テキストペア同士の相似度（分子）を最大化し、それ以外のペアの相似度（分母）を最小化するように、エンコーダーが学習されていきます。これが対照学習です。

肝心の学習データですが、MuLanはインターネットから大量のミュージックビデオを集め、それらに付属するテキストデータから3種類のテキストを抽出してデータペアを作成しています。
* **Short-form(SF)**: 短い説明文。楽曲のタイトル・タグからとる。
* **Long-form(LF)**: 長い説明文。動画コメント・概要欄テキストからとる。
* **Playlist(PL)**: このミュージックビデオが入っているプレイリストのタイトル。

SFとLFデータは、音楽内容とは無関係なテキストも多く含まれるため、学習データとして利用する前に簡単なフィルタリングを施しています。
SFデータに関しては、ヒューリスティックなフィルタリングのみ。
LFデータに関しては、まず小規模（700文）な教師データを使いBERTベース分類モデルを学習させてから、その分類モデルで有用なテキストデータを抽出します。

これにより、4400万個の音楽音声クリップ（37万時間）の音声と、対応するテキストデータのペアデータを集めました。
3種類のテキストは特に区別はせず、学習イテレーションごとに一定長が切り出され（あるいはパディングされ）てエンコーダーに入力されます。

提案手法を評価するため、
1. Zero-shot音楽タグ付け
1. タグ付けモデルへの転移学習
1. テキストのクエリによる音楽検索

以上3つのタスクの性能が測られました。
音楽タグ付けタスクでは、Zero-shotの時点でそこそこの正解率に達し、転移学習後の性能は既存のベースラインを越えてSOTAを達成できたそうです。
音楽検索タスクも、高い正解率を達成しました。

意外なことに、フィルターをしていないSF/LFテキストを使用した場合でも、音楽検索の性能に顕著な影響は無かったようです。対照学習はテキストデータのノイズに案外ロバストなのかもしれません。

## P5-14: Contrastive Audio-Language Learning for Music

https://twitter.com/syao_ming/status/1600352471758835712

**MuLanとまんま被ってしまったようです。**

音声エンコーダーはResnet-50、テキストエンコーダーはの小さめのTransformer（それぞれ事前学習なし）を用いており、MuLanよりも若干軽いモデル構造になっていますが、埋め込み空間に変換して対照学習する、という構図は同じです。
損失関数も同じ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128515/17df212a-eb77-562d-daa5-42443158afa1.png)

この論文の特色として、エンコーダーの性能を向上させるために二つの改良案を提案しています。

1. **Content-aware loss weighting**: $t_i$が$t_i$以外のサンプルと相似度が高い場合、$t_i$に関するロスの重みを大きくします（$a_i$に関しても同じく）。相似度が高い負サンプル同士をより「強く引き離す」ことで、対照学習の効果が向上することを期待しています。
1. **音声自己教師あり学習の追加**: 音声特徴エンコーダーは、SimCLRを用いた自己教師あり学習で強力な特徴表現を学習させることも出来ます。SimCLR損失関数を足すことで音声特徴エンコーダーの性能が更に向上することを期待しています。

学習データに関しては、自前で収集した24万時間分の音楽音声データと説明文が使われました。某Productionの音楽ライブラリから構築した、みたいな事を著者は言っていますが、詳しいことは分かりません。

Triplet lossを用いたDCASEベースラインと比較して、なかなかインパクトがある性能向上を示していますが、MuLanとの比較ができないのであくまで参考数値です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128515/2252bbc8-714a-c505-4169-d0b08cbde664.png)

loss weightingや自己教師あり学習に関するablation studyによると、それぞれの改良案にある程度効果があったことは確認できます。



## LP-44: Song Describer: a Platform for Collecting Textual Descriptions of Music Recordings

論文ではないのですが、上述のクロスモーダル学習に使える、十分な規模のオープンデータセットがまだ存在しないため、QMULがSong Describerというアノテーションプラットフォームを立ち上げています。

https://song-describer.streamlit.app/

参加者は、まず自身の音楽経験と英語能力を入力した後、CCライセンスな楽曲を聴き、英語の説明文を書くよう求められます。
ある程度の数が集まれば、今後の研究に役に立つことでしょう。

音楽知識（と英語）に自信がある方は貢献してみてはいかがでしょうか。