音楽コード進行の自動認識(3)

ISMIRで気になる論文を見かけました。

Chord Recognition Using Duration-Explicit Hidden Markov Models

この論文は主に、従来のHMM手法に「コードの持続時間(ビート単位)」の確率分布を加えて認識能力を上げようという試みを紹介したものです。

その他に低音情報を加えた上に、機械学習を使って変換した(詳しくは今後説明したい)18次元のChromaベクトルを取り入れてたんですが、今回注目するのはそこでもないです。

一般的な音声認識システムでは、統計による言語モデルあるいは文法モデルがシステムの性能に大きく寄与してました。n-gramのような簡単な確率もデルでも、大きな威力を発揮できるそうです。

なのでこれまでのコード進行認識の研究でも、有効な文法モデルを構築できないかという研究が数多く発表されてました。これまで見てきたHMMも実際、文法モデルの一つと言えます(多くの研究はHMMの上に更に別のモデルを掛けたりしてました)。実験結果によれば確かに認識率は上がりましたが、改善量は良くて数パーセントと言う感じです。

上の論文は、独自設計のHMMを考案したあと、コード遷移確率の情報が果たして認識率に寄与するのかを検証するために、同じ特徴量でナイーブベイズ分類器で認識を行い、HMMの結果と比較しました。その結果平均認識率は大差ありませんでした(HMMの方が1%くらい上)。

この結果により、「結局コード遷移確率って言うほど意味なくね?」という結論に至ってしまったといいます。

実際どうやったかというと、この前のHMMでは、ざっくり言うと以下の式を最大化する系列Cを求めてたことになります。

004

Xnは特徴量系列です。

ここで、p(cn|cn-1)はコード遷移確率で、行列で定義されてましたが、この行列のすべての行をコードの事前分布に置き換えてしまいます。数式的にはp(cn)に置き換えられます。

ベイズ定理を使って以下のようになります。

006

つまり、単純に置き換えるだけで、フレームごとの最大事後確率でコードを識別する分類器になります。

では実際に、ビートルズのSgt.Pepper’s Lonely Hearts Club Bandアルバムで正解率を見てみます。

HMM-58.3%

ベイズ-49.7%

ベイズの正解率は結構落ちてます。

一番初めの単純手法では、認識結果にスムージングをかけて認識結果に起きたノイズを除去し

、正解率を上げました。ここでも似たようなことをしてみます。さっき置き換えた行列の主対角線に3を加えて、各行を正規化します。少しHMMに歩み寄った形ですが、コード遷移が起こらない確率を高くしただけで、それ以外の遷移確率の情報入っていません。

それで正解率は57.1%でした。HMMに結構近いです。

この結果から、HMMみたいなコード遷移モデルは、コード進行のモデリングという役割はあまりなく、コード保持の確率を高くしてノイズを減らすという、スムージングに近い役割しかないのではないか、ということが伺えます。

やはり、コード間変化の傾向よりも、一つ一つ単独のコードの認識力を高めることに力を注ぐべきなのかもしれません。