0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

深層学習「LSTM+GRU]

Posted at

#1. LSTMとは

LSTM(Long Short Term Memory )とは、勾配消失問題が起こらない構造にしたRNNの一種である。
RNNは、多くの中間層を持つが、この層をLSTMブロックという、長期記憶と短期記憶を司るブロックに置き換えた構造を持つ。実際には、一つのメモリと、三つのゲートから成る。

勾配消失問題とは、逆伝搬するときに、出力側から入力側へ、勾配が上手く伝わらなくなること。
中間層が増えれば増えるほど微分値が増える。この際に、シグモイド関数の微分とかが入ると、微分値が0.25以下になり、連鎖律が広がるとどんどん値が小さくなっていく。

逆に、勾配爆発問題というのがある。これは逆に、勾配がどんどんどんどん大きくなってしまう状態である。例えば、恒等関数があると、発生する可能性がある。
これを防ぐには、勾配クリッピングをする。勾配のノルムが閾値を超えたら、勾配のノルムを閾値に正規化すること。

#2. LSTM全体像

LSTM.PNG

#2.1. CEC

RNNの問題点:シグモイド関数の微分系が、RNNの中間層にあるため、時系列をさかのぼって微分していくと、勾配消失問題が起こる。

RNN問題点の解決策:RNNには、考える機能と記憶する機能が同じ中間層にある。このため、記憶させようと思えば思うほど学習が出来なくなっていた。そこでこの2つを分離して、過去の情報を記憶するためだけのCECというブロックを設ける。

数式的には

以下の式は、時間をさかのぼる前後の勾配の関係を示しているが、これが1よりすくなければ、勾配消失問題が起きる。1より大きければ勾配爆発問題がおきる。1なら何も起こらない。この1を実現するために導入されたものが、CECである。

\delta^{t-z-1} =  \delta^{t-z} \left( W f' (u^{t-z-1} ) \right) = 1
\frac{\partial E }{\partial c^{t-1}}
=
\frac{\partial E }{\partial c^{t}} \frac{\partial c^t }{\partial c^{t-1}}
=
\frac{\partial E }{\partial c^{t}} \frac{\partial  }{\partial c^{t-1}} (a^t - c^{t-1} )
=
\frac{\partial E }{\partial c^{t}} 

##2.2. CECの課題

CECは覚えるだけなので、学習が出来ない。つまりこれはもはやNNではない。
このため、CEC以外に学習する機能ブロック(入力ゲート、出力ゲート、忘却ゲート)が必要である。

##2.3. 入出力ゲート

CECに何を覚えさせるかと、どのように何を使うかを決めるブロックが、入力ゲート、出力ゲートである。

入力ゲートは、時刻tでの入力値と、時刻t-1での出力値を使って、今回の入力値をCECがどう使うかを決める。
出力ゲートは、時刻tでの入力値と、時刻t-1での出力値を使って、今回のCECのデータをどう使うかを決める。

#2.4. 忘却ゲート

問題:CECはずっと情報を貯め続ける。このため、過去の不要な情報によって、判断を誤る場合が出てくる。しかし、覚えるだけなので、過去の情報が削除されない。

解決策:不要な情報を忘れる機能を入れる(忘却ゲート)。今回の入力、前回の出力から、不要な情報を決める。

※出力ゲートでも対応出来そうだが、出力ゲートは、あくまで何をどれだけ使うかだけを決める機能。不要な情報があると、使われる可能性が残る。

#2.5. 覗き穴結合

上記の入力ゲート、出力ゲート、忘却ゲートは、前回の出力と今回の入力を、CECを制御するための判断材料として使っていた。
そして、どうせならCEC自体の情報も、その判断材料の一つに加えてやろうと考える事が出来る。そして、これを実現する仕組みが覗き穴結合である。

覗き穴結合は、CEC自体に重みを掛けて、各ゲートに情報を入力する。しかし、これの効果は大したことはない。

#3. GRU

LSTMは、かなり効果があり有名になったが、その複雑な構造に基づくパラメータ数が多く、計算負荷が高かった。これを改善するのがGRU(Gated Recurrent Unit)である。GRUのほうが、LSTMより計算量が少ない。

GRU.PNG

参考

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?