MIREX2016コード推定タスクで勝ったディープラーニングの論文を読む

MIREX2016 Automatic Chord Estimationタスクにて、Johannes Kepler Universityによるディープラーニング系アルゴリズムがかなりいい成績を出しました。関連の論文が公開されてるので読みました。

https://github.com/fdlm/chordrec

まず一つ目。

FEATURE LEARNING FOR CHORD RECOGNITION:THE DEEP CHROMA EXTRACTOR

ISMIR2016の論文っぽいです。Deep Chroma Extractorと言ってますが、要するにDNNでChromaを計算してもらうということ。それ!それ僕も思ったし何かこの前誰かもやってるって聞いた!

具体的には、入力は前後15フレームの対数スペクトルをつなげた大きなベクトルで、隠れ層はReLU三層、出力層はsigmoid関数で活性化して12次元のChromaベクトルになる流れ。これを正解ラベルから得られる

少し興味深いのはMIREXでは入力スペクトルの周波数範囲を60-2100Hzまで縮小。5オクターブちょっとくらい。範囲を狭めた方がMajMinタスクには有効なのでしょうか。

実験では後処理を一切使わず、最もシンプルな線形分類器(ロジスティック回帰)で特徴量を一つ一つ分類させてみるというもの。特徴量そのものの性能を検証するんですね。

実験結果では、Chromaではなく生の対数スペクトルをそのまま入力として使っても、オクターブを足し合わせたChromaよりも性能が良いということが示されました。ほぼDeep Chromaと同水準。じゃあ何で今までChromaなんか使ってたのという問題になりますが、次元数が低い方がGMMでモデリングするときに都合がいいからかな、と推測してるとのこと。

それと、コンテキスト窓は長めの方がいい、ということも示されました。論文では1.5秒あたりがベスト。

実験結果の後の章で、実際このネットワークは何を学習したのか可視化してみようという内容がありました。よくわからないけど、110Hz以下、3136Hz以上の周波数成分はネットワークにとってあまり意味がなく、主に196Hz-1319Hzあたりの周波数成分が重要であることが分かったようです。


二つ目。

A FULLY CONVOLUTIONAL DEEP AUDITORY MODEL FOR MUSICAL CHORD RECOGNITION

なんとCNNです。結局CNNです。

こちらも、フレームごとに長いコンテキスト(15フレーム1.5秒)をネットワークに放り込んで分類してもらう仕組み。CNN自体はよく見る仕様ですが、最終の三層は全連結層ではなく、Global Average Pooling(GAP)なる層を通して最後にSoftmax層でクラス確率を出力する、という作りになってます。

面白いのはCNNだけではなく、最終段のデコードでConditional Random Fieldなるものを採用したところも注目。CRFでは入力の特徴量系列Xがある時のラベル系列Yの条件確率を以下のように計算します。

math1

Softmaxみたいな式ですね。E(Y,X)は

math2

A、W、c、π、γはCRFのパラメータです。

論文によると識別用CNNを学習した後、GAP層の出力F(の平均をとったやつ)を入力としてCRFのパラメーターを訓練するらしい。損失関数はL1正規化項を含めて、

math3

逆伝播法で学習。学習が済んだらp(X|Y)が計算できるので、最尤のYをViterbiで求めることができます。

MIREXでは、一つ目のDeepChroma手法の最終段でもCRFで推定を行ったとのこと。

この論文でも最後にモデルの分析(可視化)を行ったのですがよくわからなかったです。


以上、最新のディープラーニング耳コピ論文でした。一通り読んで感じたのは、コンテキストってやっぱ効くんだなということ。隣り合わせのフレームを結合してネットワークに放り込むだけでなんかいい感じになるらしい。

参考していきたいです。