スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

LSTM 、ちょっとだけ理解を試みる

時系列データを学習するニューラルネットの一種、 LSTM について、
ちょっとだけ理解しようと試みたので、自分用のメモをここに書いておきます。

「Long Short-Term Memory in Recurrent Neural Networks」
http://www.felixgers.de/papers/phd.pdf
ドイツ Hannover 大、 FELIX GERS の Thesis, 2001 。
p.11 に「従来の(初期の)LSTM」の全体像が書かれている。
が、メモリブロックが1つに省略されているので全体像が分かりにくい。
(RNNの中間層の各ユニットを
「メモリブロック+入出力ゲート」に置き換えたものがLSTMなのだろう。
おそらく、入出力ゲートは、すべての入力とすべての中間層の出力を受け取る、
というアーキテクチャになる。)

Long short term memory - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Long_short_term_memory
LSTM は recurrent neural network (RNN) アーキテクチャの1つ。
普通の RNN と同様、万能。
LSTM は多くのアプリケーションにおいて、 RNN や HMM より性能が良い。
LSTM ネットワークは、普通の RNN のユニットを LSTM Block に置き換えたもの。
(中間層をフルに再帰的結合した典型的なRNNを考えると、
その中間層の各ユニットを LSTM Block に置き換えたものが
LSTM ネットワークの例だと思えばいいだろう、たぶん。)
LSTM Block とは、値を任意の時間記憶できる、 "smart" なネットワーク部品。
図の最下部4ユニットのうち一番左が入力をメモリに送るユニット、他の3つはゲート。
3つのゲートは左から入力ゲート、忘却ゲート、出力ゲート。
それぞれ、入力をいつ記憶すべきか、記憶された値をいつ忘却すべきか、
記憶された値をいつ出力すべきかを決定する。
図のΠは重みなし。
Σは線形和(重みあり)。記憶は減衰せず維持される。
学習は勾配降下法。
従来のRNNだと重要イベント間のタイムラグが増えると勾配が指数関数的に減る。
(中間層の多い多層パーセプトロンで勾配が消える問題と同じと思われる。)
一方でLSTMではエラー信号はメモリ部分にトラップされるので、消えない。
これは "error carousel" と呼ばれる。
carousel :メリーゴーラウンド

「Recurrent Neural Networks」
http://www.slideshare.net/beam2d/pfi-seminar-20141030rnn
PFI 得居さんによるRNNの解説。
Constant Error Carousel (CEC) が記憶する場所。
(CEC はエラーをため込むのか?入力をため込むのか?
モデルとしては値をため込むように作られているが、
勾配法で学習則を導くと学習時にはエラーをため込むかのように振る舞う、
ということだろうか?)
「各 gate への入力は入力系列の今の値と、
直前の時刻における各 LSTM ユニットの出力。
後者は output gate で制御されてしまい、
本当の隠れ状態が見えない。」
この問題を解決するのが Peephole Connection ?
(この「LSTM ユニット」は Wikipedia でいう "LSTM block" と思われる。)
「隠れ状態そのものを gate の制御に使うのが Peephole Connection 。」
Peephole Connection を省いたものもよく用いられる。
(Wikipedia の図では Peephole Connection は省かれている。)

だいぶLSTMのイメージがつかめてきた。
CNN(たたみ込みニューラルネット)が画像に関する事前知識を作り込んでいるように、
LSTMはRNNが持つべき記憶に関する事前知識を作り込んでいるのだろう。
しかし、作り込み方は、他にもいろいろな方法があるだろう。
脳にも何かが作り込まれているはず。
あと、LSTMは教師あり学習だけど、教師なし学習に適用可能だろうか。
出力を入力を一致させる autoencoder にすればよいのだろうか。
また、HMMのようなダイナミックベイジアンネットへの適用は
行われているだろうか。

コメント

コメントの投稿

トラックバック


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。