音声認識の音響モデルにおける深層学習(事前学習編)
まとめている間にネットワークのコネクションが切れてしまい、下書き保存もしてなかったのでさらっぴーの状態から書き直すはめになった。いじけていたもののそろそろ書かんといかんということで再開。
音響モデルに深層学習を適用するときには、前回勉強したハイブリッド方式が採用される。つまり、HMM状態を推定するときにDNNを使用する。
RBMによる事前学習を用いたDNN-HMM
そもそも事前学習ってなんだというところから。
DNNでは学習が必須、というよりかはDNNを学習させることをDL(Deep Learning;深層学習)と呼ぶのだが、学習する段階も事前学習と事後学習の2つに分けられる。
メインの学習は事後学習で、入力を与えて出力が期待値と異なれば、各ノードの重みを調整して期待値に近づけるという操作を行う。
なんか事後学習だけで完結してそうな気もする。実際、層の数がそれほど多くなければ誤差逆伝搬法などの学習法で対応可能である(ような気がする)。
ではなぜ事前学習が必要なのかというと、入力層に近づくにつれて勾配が消失してしまうことにある(誤差が少なくなってしまうと言い換えてもいいかもしれない)。それでは困ったことに入力層付近の学習がいつまで経っても進まないということになる。
ということで事前学習の出番である。事前学習で予め入力層に近い層を学習させておいて、誤差逆伝搬法などで全体を学習する。頭いい。
数ある事前学習の手法の内の一つにRBMを用いたものがある。
RBM(restricted Bolzmann Machine):制限ボルツマンマシン。完全二部グラフによって定義された隠れ変数ありのボルツマンマシン。二層だけのニューラルネットワークみたいな感じかな?
ベルヌーイ・ベルヌーイ型とかガウス・ベルヌーイ型とかあるんですが、ここの事前学習で用いるのはガウス・ベルヌーイ型。なぜかというとベルヌーイ・ベルヌーイ型ではバイナリデータしか取り扱えないためである。この手法で用いられるDNNは実数値を取り扱わないといけないため、それが可能であるガウス・ベルヌーイ型を使用しなければならない。
相変わらず細かな式は省略。もっと細かく書いてある専門書や他のブログを参考にしてください。式書くのめんどくさいし、そんなことやってたらこのブログ続けられない。
で、アルゴリズムの概要だけ書こうかとも思ったけどこれが結構難しい。
http://hil.t.u-tokyo.ac.jp/mklab/publications/Takamune2014Ongaku05published2.pdf
こんなの理解できないよ!、となってしまう。以下(僕みたいな)そのような人向け。
たぶんこんな感じで事前学習が進んでいく。
- 第1層目はRBMをCD-1法を用いて学習する。-1はサンプリングステップを一回だけ行うよということ
- 2層目以降はベルヌーイ・ベルヌーイ型RBMを積み重ねてDBMのように学習する
ふーん……。
分かりやすい素晴らしいブログを見つけてしまったのでそちらを記しておく。
……ボルツマンマシンについてはまた後日復習しよう、ね。
雑音除去自己符号化器による事前学習
RBMみたいな確率的ニューラルネットを使わずに確定的ニューラルネットを使ってやってみよう!みたいなノリ。
RBMは乱数による確率的な動作をしているから確率的ニューラルネットと呼ばれている。
これは何をやるのかというと、
- 入力データに予め雑音を入れておく
- 符号化を行って、雑音を加える前に近い状態にする
- うまくできるまで学習
という手順を踏む。これで雑音に対してロバストな性質を得ることができる。細かな内容は省略。とりあえずこんな性質があるよということで。
識別的事前学習
事前学習の段階でラベル与えちゃえば、最初から識別的な規準で学習できていい初期値が手に入らないかな、という発想で行われる手法。
- 隠れ層1層のDNN(入力層1、隠れ層1、出力層1の計3層)で交差エントロピー学習を行う
- 隠れ層→出力層の重みを初期化し、隠れ層を追加して再度交差エントロピー学習を行う
- 所定の層のDNNになるまで1と2を繰り返す
…文字だと分かりにくいから、気力がでたら図を書こう。
まとめ
事前学習にはいくつか種類があるが、どれが最も適した事前学習かは謎のまま。どれも一定の成果を残しているのだろう。相変わらず試行錯誤の多い分野だなぁ。
参考文献
神嶌敏弘ほか(2015)『深層学習』近未来科学社
http://hil.t.u-tokyo.ac.jp/mklab/publications/Takamune2014Ongaku05published2.pdf
RBMから考えるDeep Learning ~黒魔術を添えて~ - Qiita