未分類

RNN/LSTM

/*最近TensorFlowを動かして遊んでいますが,GPU使える環境じゃないので学習に3時間とかかかります.30万円くらいほしいものです.*/
時系列データの学習に興味が湧いてきたのでググって調べたことをまとめようと思います.
参考:
Understanding LSTM Networks

わかるLSTM ~ 最近の動向と共に

ひとつ目のサイトは図が非常にわかりやすいのでおすすめです.

RNN

RNNはRecurrent Neural Networkの略で,時刻t-1の隠れ層の出力を時刻tの入力として扱うものです.こうすることで過去のデータを考慮して現在の出力を出すことができます.

LSTM

LSTMとは

単純なRNNは理論上「長時間の相関」を考慮することができますが,実験的には短時間の相関しか考慮できませんでした.例を挙げると文章を見せて次にくる単語を予想する問題で”the clouds are in the”のあとは”sky”が来ることはわかっても”I grew up in France…(長文) I speak fluent”の後に”French”が来ることは予想できませんでした.この「長時間の相関」を考慮した出力を行うために改良されたRNNがLSTMです.LSTMはLong Short Term Memoryの略です.

用語

LSTMは普通のニューラルネットワークと比べて若干複雑な構造を持っており,いくつか用語が出てくるのでまず簡単に説明をします.

  • LSTMブロック・・・通常のニューラルネットワークでは第N層に変数がベクトル状に存在していて,({\mathbf h}_N),それらと重み行列の積が活性化関数を通して第N+1層の入力となる(a\left({\mathbf h}_N^T W+{\mathbf b}_N\right))構造をしています.LSTMではこのように単純には出力が決定されず,「ゲート」と呼ばれる構造が出力を制御しています.ゲートの集まりをLSTMブロックと言って,通常のニューラルネットワークにおける層間のつながりを複雑化したものです.
  • 状態・・・LSTMは状態を持っており,これが長時間の相関を見出す役目を持っています.状態はベクトル状の変数で,時刻0から時刻tまでずっと毎時更新されながら受け渡されていきます.
  • ゲート・・・出力と状態の制御を行う構造です.時刻t-1の状態と時刻tの入力から時刻tの状態と出力を決定します.

仕組み

Screenshot from 2016-04-10 17-28-26
参考サイトより引用

まずこの図をご覧ください.Xtが入力,htが出力です.黄色い四角がゲート,⊗や⊕は要素ごとの積や和を表します.左からひとつずつ説明します.

過去の状態と出力

Screenshot from 2016-04-10 17-36-09

この2本の矢印は時刻t-1から状態と出力{\mathbf h}_{t-1}を引き継いでいることを表します.上が状態,下が出力です.

忘却ゲート

Screenshot from 2016-04-10 17-38-47.png

時刻t-1の出力は時刻tの入力と結合されて一つのベクトルとなります.それに行列をかけてバイアスを加えたあとシグモイドに通し,時刻t-1の状態と要素ごとの積をとります.要素ごとの積を取る際に忘却ゲートの結果が0であればその要素のことを忘れて,1であれば完全に覚えたままということになります.

入力ゲート

Screenshot from 2016-04-10 17-51-23

二個目の黄色い四角が入力ゲートです.計算式としては忘却ゲートと同じになりますが,使われる重み行列とバイアスが違っています.また,隣のtanhは新たな状態の「候補」を計算する部分です.この候補と入力ゲートの結果を要素ごとに掛け算し,先に忘却処理した状態と足し合わせることで時刻tの状態を計算します.

出力ゲート

Screenshot from 2016-04-10 17-56-35

最後に時刻tの出力を決定しなければなりません.出力ゲートの計算式も忘却ゲート・入力ゲートと重み/バイアス以外同じです.その結果と時刻tの状態をtanhに通したものと要素ごとの積をとって時刻tの出力とします.

Peephole

以上がLSTMの基本構造ですが,上で述べた仕組みには,時刻t-1の状態が時刻tの状態の更新過程に関与していないという欠点がありました.Peepholeはこれを解消するもので,下の矢印を「時刻t-1の出力,時刻tの入力」から「時刻t-1の出力,時刻tの入力,時刻t-1(出力ゲートに関しては時刻t)の状態」に変更します.

最後に

最初に挙げた参考サイトは非常によくまとまっているので参照されることをおすすめします.Qiitaの記事はLSTM技術全体を俯瞰できる良い記事です.

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中