LSTMブロック (G検定)

LSTMブロック

1. 定義と概要

LSTMブロック とは、LSTM を構成する基本単位です。中核にあるのは、誤差の情報をほぼそのまま次の時刻へ伝える記憶回路 CEC(Constant Error Carousel)です。この CEC への情報の出入りを、3つのゲートが制御します。それぞれの担当は次のとおりです。

ゲート 決めていること
入力ゲート(記憶への書き込みを担当) 新しい情報をどれだけ記憶に書き込むか
忘却ゲート(記憶の消去を担当) 記憶に溜まった情報をどれだけ消すか
出力ゲート(記憶の読み出しを担当) 記憶の中身をどれだけ次の出力として取り出すか

CEC とこれら3つのゲートを組み合わせた構成が、1つの処理ユニットとしての LSTMブロック にあたります。LSTM ネットワークは、この処理ユニットを時系列方向に連ねる構造です。

単純な RNN(前の時刻の出力を次の時刻の入力に使う、時系列データ向けのニューラルネットワーク)の中間層は、毎回の計算で状態をほぼ丸ごと書き換えます。そのため、時間をさかのぼるほど誤差が急激に小さくなる勾配消失(誤差が時間をさかのぼるほど急激に小さくなり、学習が進まなくなる問題)が起きやすく、長期の依存関係を学習しづらいという課題を抱えていました。

この課題に対し、Hochreiter と Schmidhuber が1997年に提案した LSTM は、誤差を一定に保てる CEC を記憶の中核に据えました。ただし CEC だけでは、別の問題が生じます。ひとつは、同じ重みが状況によって逆向きの働きを求められる入力重み衝突(同じ重みが「今は無視・将来は重視」のように矛盾した働きを求められる問題)です。もうひとつは、出力側で起きる出力重み衝突(同じ重みが状況に応じて逆方向の調整を求められる、出力側で起きる似た問題)です。

そのため、CEC の情報の出入りをゲートで制御する現在の LSTMブロック の構成に至っています。

2. 試験対策ポイント

ブロックの中を流れる情報は、大きく2つの系統に分かれます。ひとつは CEC が前の時刻から受け継ぐ記憶そのもの、つまりセル状態(LSTMブロック の中で CEC が保持している記憶の値)の通り道です。もうひとつは、各ゲートが判断材料に使う「その時刻の入力」と「1つ前の出力」、つまり隠れ状態(1つ前の時刻の出力で、次の時刻の計算にも使われる値)の通り道です。3つのゲートはいずれも後者の入力と隠れ状態を見て、セル状態への出入りをどれだけ許すかを判断します。

時刻の入力と1つ前の隠れ状態がブロックに届くと、まず忘却ゲートの出番です。CEC に残っている記憶をどれだけ保ち続けるかが、ここで決まります。続いて入力ゲートが、その時刻の入力のうちどれだけを新しい記憶として書き加えるかを判断し、忘却ゲートが選別したあとの記憶に足し込みます。ここまでがセル状態の更新にあたる段階です。

最後に出力ゲートが、更新後のセル状態のうちどれだけをその時刻の隠れ状態として外に取り出すかを判断し、処理が進みます。記憶を持ち続けることと、それを今この瞬間の出力に反映させることは、別の判断です。CEC の保持と出力ゲートの読み出しが分かれているのは、この違いによるものです。入力ゲートが閉じていれば、新しい入力があってもセル状態は変化しません。

この忘却ゲートは、1997年に Hochreiter と Schmidhuber が発表した最初の LSTM には含まれていませんでした。記憶を自分でリセットする手段がないまま値が蓄積し続けると出力が飽和し、学習が進まなくなる問題が明らかになったためです。Gers・Schmidhuber・Cummins が2000年の論文で、忘却ゲートを後から追加した経緯があります。

CEC の詳しい仕組みそのものは別のテーマとして扱われますが、記憶の通り道に3つのゲートが配置された背景はここにあります。3つのゲートは、いずれも0から1の間で開き具合を表すシグモイド関数(出力を0から1の範囲に収め、ゲートの開き具合を表すのに使われる関数)にもとづく「ふるい」です。入力ゲートと出力ゲートは、それぞれ入力重み衝突・出力重み衝突への対処として置かれている、という位置づけにもなっています。衝突そのものの中身は、別のテーマです。

3. 関連概念との比較・相違点

単純な RNN の中間層との最大の違いは、記憶の持ち方にあります。単純な RNN の中間層は状態を毎回ほぼ丸ごと書き換えるのに対し、LSTMブロック は CEC という記憶の通り道と、ゲートによる出入りの制御を分離した構造を持ちます。記憶をそのまま保つ通り道と、書き換えを判断する仕組みが別になっている点が、両者を分ける軸です。

GRU(LSTM を簡略化した、2つのゲートで構成される時系列処理向けのユニット)の構成単位との違いは、ゲートの数と記憶の統合度にあります。2つの軸で並べると、次のように整理できます。

観点 LSTMブロック GRU の構成単位
ゲートの数と種類 CEC に入力・忘却・出力の3つを組み合わせる リセットゲート・更新ゲートの2つに絞る
記憶の持ち方 セル状態と隠れ状態を分けて持つ セル状態と隠れ状態を1つに統合する

ゲート数が3か2か、そしてセル状態と隠れ状態を分けて持つか1つにまとめるかが、両者を見分ける手がかりになります。

4. ビジネス・実務での活用シナリオ

自然言語処理(人が日常使う言葉をコンピュータに処理させる技術分野)の文書要約や機械翻訳では、話題が変わった段落で忘却ゲートが古い文脈に関する重みを下げ、入力ゲートが新しい話題に関わる語をセル状態に書き込みます。長い文章でも文脈を保ったまま処理を進められるのは、この分業のおかげです。

製造業や IoT のセンサーデータを扱う需要予測では、季節変動のような長期的なパターンを CEC に保持しつつ、直近の異常値を出力ゲートが読み出しに反映させます。長期の記憶と短期の変化を分けて扱える点が、この用途での利点です。

音声認識では、発話の切れ目にあたる箇所で忘却ゲートが働き、それまでの文脈をいったん整理してから次の音素・単語の認識に備える流れが想定されます。

5. 要点まとめ

  • LSTMブロック は、誤差を一定に保つ CEC を中核に入力ゲート・出力ゲート・忘却ゲートを組み合わせた1つの処理ユニットで、LSTM ネットワークはこれを時系列方向に連ねた構造です。
  • 情報は CEC が保持するセル状態の通り道と、各ゲートが参照する現在の入力・1つ前の隠れ状態という2系統で流れ、入力ゲートは書き込み、忘却ゲートは消去、出力ゲートは読み出しをそれぞれ担います。
  • 単純な RNN の中間層は状態を毎回丸ごと書き換えるのに対し LSTMブロック は記憶と制御を分離した構造を持ち、GRU の構成単位はこれをリセットゲート・更新ゲートの2つに簡略化しています。

6. 確認問題

問1LSTMブロックは、誤差をほぼ一定のまま保持する CEC を中核に、入力ゲート・出力ゲート・忘却ゲートを組み合わせた1つの処理ユニットである。

解答・解説をみる

○ 正しい

CEC と3つのゲートを組み合わせた構成が、LSTMブロック の定義そのものです。各ゲートは記憶の書き込み・消去・読み出しという役割にそれぞれ対応します。

問2忘却ゲートは、1997年に発表された最初の LSTM の時点から CEC の構成要素として組み込まれていた。

解答・解説をみる

× 誤り

正しくは、1997年に Hochreiter と Schmidhuber が発表した最初の LSTM に忘却ゲートは含まれていませんでした。記憶を自分でリセットする手段がないまま出力が飽和する問題への対処として、Gers・Schmidhuber・Cummins が2000年の論文で後から追加しています。

問3GRU の構成単位は、LSTMブロック に比べてゲートの数が少なく、セル状態と隠れ状態を1つに統合した構造を持つ。

解答・解説をみる

○ 正しい

LSTMブロック の CEC +3ゲートに対し、GRU はリセットゲート・更新ゲートの2つに絞り、記憶の持ち方も統合した構成です。ゲート数と状態の統合度は、両者を見分ける手がかりになります。