====== LSTMとは ====== ===== 概要 ===== LSTMは、1997年に Sepp Hochreiter と Jürgen Schmidhuberによって提唱された[[機械学習:再帰型ニューラルネットワーク|リカレントニューラルネットワーク]]のアーキテクチャーです。[[機械学習:単純再帰型ニューラルネットワーク|単純なリカレントニューラルネットワーク]]と同様に、ニューラルネットワークでは扱いが難しかった時系列データ(文章、音声、映像)に対して有効な手法です。単純なリカレントネットワークでは長期的な依存関係を学習できない問題を回避しています。 ==== LSTMの適用領域 ==== * 音声認識 * 文章生成 * 音楽生成 * 映像解析 ==== LSTMアーキテクチャー ==== {{ :機械学習:2015greff_lstm_ja.png?300 |}} 図で情報は下から上へと流れます。中央にセルと書いてある部分にリカレント結合(再帰結合)があります LSTM はメモリセルと呼ばれる記憶素子と3つのゲート(門)から構成されています。3つもゲートには名前がついていて,入力ゲート,出力ゲート,忘却ゲートと言います。図では忘却ゲートは左から,入力ゲートと出力ゲートは右から中央に流れ込んできます。 ゲートに2種類の記号が使われていることを確認してください。一つはギリシャアルファベットのシグマσ,もう一種類は英語のアルファベットのgとhです。 さらに,ゲートの流れと合流する点に2種類あることも確認してください。 マルで囲まれた+の記号と,マルで囲まれた・の記号です。マルで囲まれた+は全部を足し合わせることを,マルで囲まれた・は掛け算を表しています。 青で書かれたピープホールの説明は後回しにして,説明を続けます。 セルへの入力は通常のニューラルネットワークの入力です。この他に3つのゲートにも入力が加わります。ですから入力と結びついている結合係数が通常のネットワークの4倍必要になります。セルへの入力+3つのゲートへの入力で4倍です。3つのゲートへの入力はゲートの開平のために使われます。 3つのゲートは情報をどの程度通すのかの制御に使われます。ゲートが閉じていれば,すなわち 0 に近づくので,情報は通りにくくなります。一方,ゲートが開いている状態は正の状態,シグモイド関数が1に近い場合です。 忘却ゲートが開いていると,1時刻前のセル自身の状態が自分の状態に影響を及ぼすことになります。すなわち忘却ゲートの役割は,直前の影響をどの程度考慮するかを定めることになります。通常のリカレントネットにはゲートがありません。ですからゲートに積極的な役割を与えることが,ゲート自身が結合係数を学習することで,情報の流れを制御します。 もう一つの注意点として実線と点線の区別に注目してください。実線は即時的に働く流れです。一方点線は時間遅延を表します。次の時刻に影響を及ぼすことを示しています。 最後に後回しにした青線で描かれたピープホールですが,セルの内容が直接ゲートを制御するために導入されました。セル自身がゲートを制御することで,より積極的にゲートの開閉の効率向上を目指しています。 図では1つの LSTMブロックだけが描かれています。LSTMブロックが複数集まってLSTM層を構成します。LSTM層を多層化するとディープLSTMになります。多層のLSTMでは,時間的空間的に異なる抽象化が表象されると考えられます。 ==== 学習方法 ==== ==== LSTMのライブラリ ==== * Chainer * Karpathy ==== LSTMの参考文献 ==== 参考記事として、概要としては[[http://colah.github.io/posts/2015-08-Understanding-LSTMs/|Christopher Olah氏のブログ記事]]、全脳アーキテクチャー若手の会の八木氏の資料[[http://qiita.com/t_Signull/items/21b82be280b46f467d1b|「わかるLSTM~ 最近の動向と共に」]] により分かりやすい説明内容が書いてあります。また、LSTMのパラメタ評価として[[http://arxiv.org/pdf/1503.04069v1.pdf|Greff(2015)]]が参考になります。