制限ボルツマンマシン

今日もメモ書き。メモ書きを書き足していく感じがよさそうだ。
以前、Wikipediaディープラーニング(「深層学習」とも言う)について検索した時、ほとんど情報がなかったのに今、見るといろいろな解説が(まだ不十分だが)ある。その中のひとつが「ボルツマンマシン」の項目の「制限ボルツマン・マシン」のサブ項目だ。

学習は一般的なボルツマン・マシンでは非実用的であるが、不可視ユニット間の内部層接続を認めない「制限ボルツマン・マシン」(詳細は英:Restricted Boltzmann machine参照 )または「RBM」と呼ばれているものでは効率的に行われる。 RBMを1段分学習させた後、その不可視ユニットの活性(ユニットの値に相当)を,より高階層のRBMの学習データとみなす。 このRBMを重ねる学習方法は、多階層になっている不可視ユニットを効率的に学習させることができる.この方法は、深層学習のための一般的な方法の一つとなっている。 この方式では一つの新しい階層が加えられることで全体としての生成モデルが改善されていく。 また拡張されたボルツマン・マシンの型として、バイナリ値だけでなく実数を使うことのできるRBMがあり、通常のボルツマン・マシンとともにこちら[1]で概要が説明されている。
RBMの実用例の一つとしては、音声認識ソフトウェアのパフォーマンスの向上があげられる。

制限ボルツマンマシン(Restricted Boltzmann Machine; RBM)の一例。 制限ボルツマンマシンでは、可視と不可視ユニット間でのみ接続している。(可視ユニット同士、または不可視ユニット同士は接続していない。)


ボルツマンマシン 日本語版Wikipediaより


疑問点がいっぱいだ。

  • まず、「学習は一般的なボルツマン・マシンでは非実用的であるが」と書かれているが、ボルツマン・マシンというのはホップフィールド・ネットワークに確率的な挙動を導入したものであり、私の理解ではホップフィールド・ネットワークというのはシナプス係数(=結合係数)を変化させないものである。シナプス係数が変化しないのであれば学習ということはありえず、ここで「非実用的」と言っている意味がわからない。私の理解では「非実用的」ではなく「不可能」とならなければならない。さらに、上の引用では、制限ボルツマン・マシンでは学習は効率的に行われる、とある。この点が第1の疑問点。
  • 第2の疑問点は「RBMを1段分学習させた後、その不可視ユニットの活性(ユニットの値に相当)を,より高階層のRBMの学習データとみなす。 このRBMを重ねる学習方法は、多階層になっている不可視ユニットを効率的に学習させることができる.この方法は、深層学習のための一般的な方法の一つとなっている。」という記述はオートエンコーダという技術と関係があるのかどうか、という点。


日本語Wikipediaオートエンコーダのページの記述も、あまり詳しい説明ではない。

オートエンコーダ(英: autoencoder)とは、機械学習において、ニューラルネットワークを使用した次元圧縮のためのアルゴリズム。2006年にジェフリー・ヒントンらが提案した[1]。線形の次元圧縮としては主成分分析があるが、オートエンコーダはニューラルネットワークを使用する。中間層が2層以上ある場合はディープ・オートエンコーダ(英: deep autoencoder)と呼び、深層学習(英: deep learning)の研究の始まりとなった。


概要
オートエンコーダはフィードフォワードニューラルネットにおいて、入力と出力を同じにして教師あり学習をさせて作る。その際、中間層は1層にして、中間層の次元を入力の次元よりも小さくする。学習方法は、通常通りバックプロパゲーションで良い。この中間層の値を取り出すことにより、次元圧縮した、入力の要約表現になっている。


オートエンコーダ 日本語版Wikipediaより

オートエンコーダのほうはその対象をフィードフォワードニューラルネット(信号の戻りのないネットワーク)となっていて、双方向ネットワークである制限ボルツマンマシンとは異なるようだ。だとすると、これらは別物だろうか? どちらもディープラーニングを構成する基礎技術らしいのだが・・・