言語処理学会第22回年次大会(NLP2016)のチュートリアル、「声・画像・映像処理における深層学習」のまとめです。内容に誤り等あれば指摘いただければ幸いです。
マルチメディア分野における深層学習の研究動向を俯瞰する
音声における深層学習
隠れマルコフモデルを利用した音声認識が一般的だったが、2010年にDNN-HMMが登場して精度が格段に向上してきた(17%up)。
※音声認識の世界では、1~2%精度が上がると論文が書けるレベルなので、これはすごいこと。
- 1989: Time-Delay Neural Network(TDNN)
- 1994: NNと隠れマルコフモデル(HMM)の融合
- 2000: Tandemアプローチ
- 2009: DNNによる音素認識
- 2010: 言語モデルにRNN登場
- 2011: 大語彙音声認識へ
Time-Delay Neural Network
画像のCNNに近い手法で、時間軸上の固定幅のレンジの音声を畳み込んで音素の認識を行おうとする手法。
今でも認識精度は高いが(b,d,gの認識精度はHMMより精度高い)、大語彙(LVCSR)に対応できない。
DNN-HMM
NNの出力結果をHMMの出力確率に変換する。ただ、これはあまりうまくいかず。
ただ、2011年に登場した大語彙に適用されたモデルはこれを拡大したもの(ノード数が増えた)。
Tandem
DNN-HMMの問題: NNの出力をHMMに適用するために、出力のノードを絞っている。
Tandem: DNNの出力を特徴ベクトル化して使用する。
DNNを利用することで、1フレーム中の複数事象を扱えるようになった?から精度が上がるのではないかと考えられている。
ICASSP2014においては、深層学習はすでにデファクトスタンダード(2015でも同傾向)。
- 音声認識の論文304中84(28%)が深層学習関連
- 4つのセッションがDNN
- ほぼすべての小分野に浸透
今後の展開
性能向上
- RNN: STM+Bi-directionalの利用
- Sequence training: 深層学習にフレームごとの基準ではなく、単語誤りを最小にする基準を設ける
- 実際にやりたいのは単語認識なので、目的をそちらに移行する
- CNN: 周波数ごとにフィルタを作って畳み込む。
- Pretrainingなしで10%エラー削減
- TimeDelay NN (TDNN) Revisited
- RNNは精度はいいけど学習に時間がかかるので、TDNNを大規模にして長時間のコンテキストを学習させる
話者適応
話者に関する情報をNNに入れることで、個別の話者に過剰適合することを防ぐとともに、話者(ドメイン)ごとの認識率を上げる。
- パラメーターによる正規化(話者への過剰適合を防止)
- 話者クラスタごとにNNを作り線形結合させる
- 話者の情報をNNへの入力に追加
- i-Vectorを用いた話者適応: 話者の性質を表現したベクトル(400次元くらい)をNNの入力に加える
- 活性化関数のパラメーターを推定
- ノードに対して、話者ごとにパラメーターを強化/減衰させるアンプリファイアを設ける
DNNによる音素認識
MFCCはもういらない
MFCC: 音声の特徴を表すベクトルのようなものだが、それを使用しなくてもDNNに入れてしまえという。
最近では、音声波形をそのまま入れるような研究も行われている。
GMMももういらない?
GMM-HMMのパラメーター推定に使っていたけど、全部DNNでできそう。
ただ、計算量はまだGMM-HMMの方が軽く、またDNNの学習にGMM-HMMが使われることもある。
言語モデルでは
RNNはDNNよりよい
ただ、リアルタイムで使うのは難しい。
この点を克服するため、実時間RNN LMの研究も進んでいる。
単語CNN
音素ベースではなく、単語ベースで(a,bといった音素でなく、appleなど音声+単語ベースで認識する)
※単語長は200frame(2s)に固定。これで認識率73%
その他
- 音声分離/音声認識の同時学習
- 少量データでのDNN(Mobileや、資源の少ない言語への適応など)
- 音声合成へのDNN適用
画像における深層学習
2012年のImageNetチャレンジでブレイクスルー(ILSVRC 2012)。AlexNetの登場でエラー率が16%。
2015では3.57%に。Residual Netで、152層(AlexNet:8、GoogleNet:22層)。
Residual Net: 入力=出力になるように学習するのでなく、入力+xが出力に近くなるよう学習する。これで深くしても伝搬がうまくいくようになった。
テキストと組み合わせた、Image Captionなども行われている。
動画への適用として、TRECVIDが行われている。
- Semantic INdexing(SIN): 一般的な物体、シーン、動作を検出
- Surveillance Event Detection(SED): 監視カメラから特定の動作を検出
- INstance Search(INS): 物体の静止画をクエリとして、それを含む動画を検出
- Multimedia Event Detection(MED): より複雑なeventを検出
- Localization: 映像中の物体の時間的・空間的位置を検出
- Video Hyperlinking: 映像中のセグメント同士の対応付け
映像、音声ともに多くの特徴量を使うマルチストリーム/マルチモーダルな手法を用いる。
大局的な情報(カラーヒストグラムなど)、音声認識/文字認識(精度があまり出ない)は有効でない傾向。
BoWにもDNNが適用される傾向(Fisher Kernel)。
今後の展開
定義が明確で、データがたくさんあるときDNNは人間を超える。
マルチメディアのタスクはまだまだ課題が多い。以下のような点は今後改善していく必要がある。
- 多種の入力の扱い(画像・音声)
- 正確なラベルがないケースでの学習方法
- 時系列データへの対応
- セグメンテーションと認識の同時化
DNNを使うという点では画像・音声・言語の垣根はなくなってきているので、連携していけると思う。
DNNの実装
ハードウェア
GPUは必須になってきている。多層ネットワークを乗せるには大きなメモリが必要なので、メモリを優先した方がいい。
購入する際は、CUDAがおすすめだがバージョンをよく確認すること。
ソフトウェア
- 汎用: Chainer, TensorFlow, Theano, Torch etc...
- 画像: Caffe
- Caffeは学習済みモデルが多く公開しているので、画像を扱うなら推奨
- 音声: Kaldi
- DNNを既存のGMM-HMMでトレーニングするような形態をとる。
- 生成されるトレーニングデータはKaldi以外でも使用可能なので、汎用ライブラリに入力してもよい
原則として、目的とするタスクに似ているサンプルがたくさんあるものを選ぶ。サンプルの数でコミュニティの活発度もわかる。