fMMI,fMPE,fBMMI

今日は,特徴量変換の識別学習について述べます.


特徴量スペースの識別学習の話に入る前に,
音声認識の音響モデルの研究が,この 10 年どのように発展してきたかについて,
(間違っているかも知れないですが)簡単に復習したいと思います.


まず,HMM を MMI 基準で識別学習する話が,大語彙タスクでも動作することが確認されました.
次に,認識誤り率を少なくするような基準の方がよいだろうということで,MPE がでてきました.
このとき同時に,識別学習による過学習を防ぐため,I-smoothing という技術がでてきました.
これは,パラメタ更新時に,過学習してない(ML などの)パラメタに,データ量に応じて back-off させるという技術です.
これのおかげて,パラメタ更新が安定し,率の向上に大幅に貢献しています.
次に,MMI や MPE 基準を使って,特徴量変換を識別学習しようという話(fMMI,fMPE)がでてきました.
これは,単体だけでもなんと HMM の識別学習と同じくらい効果があり, HMM の識別学習と組み合わせると,さらに率が向上するようです.
次は,マージンを大きくするような学習の方がよいだろうということで,MPE 基準に変わる BMMI 基準がでてきました.
BMMI は,HMM の識別学習でも,fBMMI としても使えて,それぞれ MPE,fMPE をこえる効果があるようです.


以上すべて世界的スーパー研究員 D.Povey の成果です.すごすぎ (>_<)
https://sites.google.com/site/dpovey/my-publications
(D.Povey 以外の人からも,他に様々な素晴らしい手法が提案されていますが,今回は省略させていただきました)


BMMI 以降は,HMM を識別学習する話はどうやら一段落?したようで,
HCRF のように,モデルそのものを識別モデルにしよう,という研究が増えているようです.
ただ,私のサーベイ不足なだけかもしれませんが,今のところ
識別モデルを使って,大語彙音声認識で十分な improve が達成された論文はあまりないような気がします.
(気がしているだけかもしれないので,今後一人勉強会で音響モデルに識別モデルを使う話も取り上げたいです
特に,deep berief network を使った ANN-HMM とか.)


さて,本題に戻ります.今日は,特徴量変換を識別学習する話(fMMI,fMPE,fBMMI)をします.
先にも書きましたが,これは単独でも HMM の識別学習と同じくらいの効果がある,すごい技術です.


観測した音声の特徴量(MFCCなど)を y とおきます.これはクリーン音声です.
これを,音声認識により適切な特徴量 x に変換することを考えます.


fMMI,fMPE,fBMMI では,以下のように yx に変換します.
x=y + Mh
M は横にながーい長方形の行列です.
h は,ガウス分布をものすごくたくさん(700,000個くらい!)用意して,
y がそのガウス分布から出力される尤度を並べた,700,000次元くらいの縦ベクトルです.
M は,例えば y が 39 次元として,39x700,000 の行列です.
この M を,MMI/MPE/BMMI 基準で学習することで,適切な x を求めます.


この定式化は,SPLICE と非常によく似た定式化となっています.
というか,もし y の GMM の混合数が 700,000 で,
変換はバイアス項 b_k のみを考慮する SPLICE であれば,定式化自体はまったく同じです.


もちろん,SPLICE では y は劣化音声特徴量を使っていますし,
GMM の混合数はもっと少なくしていること,変換に A_k を使う場合もあること,
uncertainty decoding や NMN (や私の提案している手法)などへの発展があることなど,
まったくすべて同じというわけではないです.
なおこの関係性は,以下の論文で詳しく議論されています.
http://research.microsoft.com/pubs/58992/2005-deng-spl.pdf


さて,この M をどう最適化するか?という話ですが,
実は MMI-SPLICE に関する一人勉強会でやった方法と基本的には同じです.
すなわち,MMI/MPE/BMMI 基準を M偏微分して,最急降下法で最適化します.


ただし,MMI-SPLICE では,MMI 基準を使っていましたが,
これが MPE や BMMI 基準になったりもしています.
また,最急降下法で最適化するにあたり,様々な工夫が導入されます.


ここでは,http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1415275
を参考に,fMPE で M がどのように更新されるのか見てみます.


と思いましたが,全部詳しく読み込んで日本語で説明しなおすとなると
時間がなくなってしまいそうなので,今日はやめときます.
一人勉強会なので,許してください… 時間があれば後日書きます.


しょぼい内容になってしまいましたが,とりあえず今日はここまで.