1. LSTM (Long Short-Term Memory)とは [概要]
LSTM (Long Shrot-Term Memory) とは,RNN(再帰型ニューラルネットワーク)の1種であり,過去の情報を長期記憶しておく記憶セル(memory cell)の導入により,RNNが持っていた「長期記憶の消失」の課題を少し解決したものである [Hochreiter and Schmidhuber, 1997].LSTMは,RNNの隠れ状態の代わりに,「記憶セルブロック」を再帰する構造で,より「長期の記憶」も,短期の記憶に加えて使用できる.記憶セル内では「全結合層 + 活性化関数」の出力値を重み付け係数として利用することで,他経路の値の調整度を学習するゲート機構(gating mechanism)を利用する.
この記事では,LSTMの概要(2節)と詳しい仕組みである「ゲートの連携」(3節)についてまず紹介する.その上で,自然言語処理分野の応用(4節)として,LSTMがRNNLMによる文章生成や,seq2seq with attentionなどの系列変換モデルに応用されていくことも紹介する.
LSTMの中心アイデアは「忘れることの学習(Learning to forget)」である.再帰予測を繰り返していくなかで,長期間経過して不要になってきた記憶を,少しずつ消去していく(= 忘れる)モデルを,ゲート機構をもちいて実現している.LSTMの記憶セルは,その内部記憶の状態ベクトルであるセル$\bm{c}_t$に,系列データの「長期記憶」の記憶・忘却度合いを学習できると仕組みになっている.
2. LSTM (Long Short-Term Memory) の構成
LSTM (Long-Short Term Memory) [Hochreiter and Schmidhuber, 1997] は,ゲート機構 (gate mechanism)をRNNに追加することで,記憶の長期伝達を可能にした改良版RNNである(図1).図1において,「黄色のブロック」は活性化層による操作を表し,「丸型のピンク色ブロック」は要素ごとの演算を,更に「青色のconcat」は「ベクトル同士の結合」を示す.ゲート機構は,それぞれサブニューラルネットとなっており,それらの重みとバイアスを学習することで,ゲート入力に対する調整重み値の予測を担当する.つまり,名前の通り「ゲート」となって,入っていく量を調整するのが各ゲート機構の役割である.
LSTMは,記憶セルと呼ばれるブロック構造(図1)を,基本繰り返し単位として用い,RNNのように毎ステップ$t$における回帰を行う.LSTMでは,RNNの短期的な記憶 $\bm{h}_t$に加えて,「短期情報を長く保持するための状態変数」$\bm{c}_t$を,記憶セルの内部メモリとして使用する.この長期記憶である$\bm{c}_t$に,次のステップでも保持したいそれ以前の短期記憶$\bm{h}_t$を,重み付けして記憶する仕組みになっている.また,RNNと同様に$\bm{c}_t$,$\bm{h}_t$の受け渡しをステップ間で行い,毎ステップ$t$では同じ学習済み記憶セルを用いる.
記憶セルでは,3つのゲート機構を利用することで,$\bm{c}_t$へ学習する.3つのゲートのうち,LSTMの中心的な役割を果たすのは,忘却ゲートである.忘却ゲートを用いて「$\bm{c}_t$に対して,現在の入力ベクトル$\bm{t}$と短期記憶$\bm{h}_t$を入力として,各ステップでどのくらい短期記憶を忘れて,どのくらい新たに短期記憶を保持すべきか」を制御することにある.残りの2ゲート(入力ゲート,出力ゲート)は,それぞれその際前の新規入力の調整と,その後の出力の調整を担当する.
次節ではそのゲートを用いた「LSTMブロック内の連携の仕組み」について述べていきたい.
3. ゲート間の連携

LSTMのセルブロック内では,3つのゲート(忘却ゲート,入力ゲート,出力ゲート)が,図2のような入出力関係のもとで配置されている [Hochreiter and Schmidhuber, 1997], [Gers et al., 2000]. これらの3ゲートが,(記憶)セルの「忘れる度合い/ 無視する度合い/保持する度合い」をそれぞれ調整するための係数を出力し,セルの情報を各フレームにおける出し入れ具合を学習する.この「3ゲート機構間の連携」により,LSTMは記憶の長期伝達が可能となっている.
各ステップ$t$では,短期記憶$\bm{h}_{t-1}$と観測ベクトル$\bm{x}_t$を結合したベクトル$[\bm{x}_{t},\bm{h}_{t-1}]$を入力に用いてゲート処理を行う.
次の3.1節で,各ゲート機構による,短期記憶と長記憶の更新式について,順に見ていきたい.
3.1 3つのゲート処理
まずは,3.2節で全体の連携を説明する準備として,3つのゲートの定義と役割だけを先にここで紹介していきたい.
忘却ゲートは,セル状態 $\bm{c}_{t-1}$から,どのくらいの割合だけ情報を廃棄するかを決める$\bm{f}_t$(0~1の値)を出力する:
\begin{equation}
\bm{f}_t = \sigma (\bm{W}_{f}[\bm{x}_{t},\bm{h}_{t-1}]+ \bm{b}_{f})\tag{3.1}
\end{equation}
入力ゲートは,どの新情報をセル(長期記憶)に記憶するかを $\bm{i}_t$として出力する:
\begin{align}
\bm{i}_t &= \sigma ( \bm{W}_{i}[\bm{x}_{t},\bm{h}_{t-1}]+ \bm{b}_{i})\tag{3.2}\\
\tilde{\bm{c}}_t &= \tanh(\bm{W}_{h}[\bm{x}_{t},\bm{h}_{t-1}])\tag{3.3}
\end{align}
また,入力ゲート値の分だけ,セルに貯める新情報として $\tilde{\bm{c}}_t$を作成する ($\tanh$により$\tilde{\bm{c}}_t$は-1から1のあいだの値をとる).
忘却ゲート出力 $\bm{f}_t $と入力ゲート出力 $\bm{i}_t$が予測できたあとに,セルの長期記憶 $\bm{c}_t$を「忘却量 (長期記憶)+入力量(短期記憶の予測値)」の重み付け和として更新する($\circ$はアダマール積で,要素ごとの積):
\begin{equation} \bm{c}_t = \bm{f}_t \circ \bm{c}_{t-1} + \bm{i}_t \circ \tilde{\bm{c}}_t\tag{3.4} \end{equation}
出力ゲートでは,セルから新情報のうち何を出力すべきかの重み係数を決定する.出力ゲートの出力値 $\bm{o}_t$を用いて,次フレームの $\bm{h}_t$の予測を行う:
\begin{align}
\bm{o}_t &= \sigma (\bm{W}_{o}[\bm{x}_{t},\bm{h}_{t-1}]+\bm{b}_{o})\tag{3.6}\\
\bm{h}_t &= \bm{o}_t \circ \tanh(\bm{c}_t)\tag{3.6}
\end{align}
3.2 LSTM のブロック処理の全体像
3.1節は,天下り式にLSTMの各式と,ブロック図(記憶セル)を提示しただけであったので,まだ記憶セルの処理の全体像はわかりづらいはずである.よって,3.2節では,図1のLSTMのブロック内の処理を,ゲート構造の連携に焦点をあてて整理した図(図3)を用いて全体の処理の流れを俯瞰したい.
LSTMの3つのゲート機構は,長期記憶を更新する際に,どのタイミング(ステップ)$t$ において,どのくらいのバランスで,短期記憶と長期記憶の2つをインタクションさせるかを学習するのであった(式 (3.4)).この機構のおかげで,短期記憶しか保持できないRNNと比べて,LSTMでは,やや長い系列の変化も,「2つの潜在変数(長期記憶 $\bm{c}_t$と短期記憶 $\bm{h}_t$) + 3つのゲート関数」を通じて「記憶の忘れ方と覚え方」を学習できる.
図3は,LSTMを用いた応用の論文でよく出てくる,「ゲート3つの関係性が見えやすいように書き直した,LSTMブロックの図」である.この図は,中央の一直線にゲートを配置する描き方なので,3つのゲートの実施タイミングと働きを読者が理解しやすいように,各要素が図中に配置されている.
図3では,ブロックの中央にある円 $\bm{c}_t$ が,更新されていくセルの内部状態 を表しており,これがLSTMの中心機構である.長期記憶であるセル内部状態$\bm{c}_t$ を用いて,長期記憶をどれくらい忘れるかと,短期記憶を新たにどれくらい覚えるかを,3ゲートの連携で更新する.セル状態の,各フレームにおけるやりとりは,式(3.4)のように,以下の「3つのゲート処理」の連携により達成される:
LSTMの,3つのゲートによるブロック内での処理手順
- 入力ゲートで調整した入力値の $\bm{i}_t \circ \tilde{\bm{c}_t}$ は,長期記憶と短期記憶をどのくらいセルに保持するかの覚える記憶である.
- 忘却ゲート出力で調整した $\bm{f}_t \circ \tilde{\bm{c}}_{t-1}$ は,前ステップまで溜め込んでおいた長期記憶を,どのくらいステップ $t$ で保持して,残りを破棄するかを調整する忘れる記憶である.
- 出力ゲートでは,上記2つを加算した,新たなセル状態 $\bm{c}_t$ をゲートで調整したのち,次のステップ $t-1$ へと受け渡す.
以上が,3つのゲートを用いたセル状態の忘却・記憶の仕組みである.
※ 図1の描き方によるLTSMブロック図については,2015年に公開されたcolah’s blogの記事「Understanding LSTMs」による,美しい図をもちいた詳細説明が有名である.その後は,この記事の図示の方式に習った LSTMの図解がWeb・授業等でよく見られる.よって,このブログでも,同じ方式で作図した.
ただし,この2015年当時は詳細なLSTMの説明の需要が高かったものの,今となってはLSTMは当時ほどハードルが高い技術ではなく,標準知識や標準APIとなっている.従って,このcolah’s blogの記事のレベルほどに内容をつぶさに知る必要があるかは微妙なところである.そもそも2018年以降は(NLPだと特に) LSTMよりも,Transformer(もしくはTransformer-Decoder だけ or Transformer-Encoderだけ)をよく用いる時代になっている.
3.3 LSTM の難点
RNNを改善して,より長い系列の変化も学習できるようになったLSTMは,3次AIブームの中で注目を集め,NLPを中心にたくさん応用されることになった.
しかし,NLPや音声認識に機械翻訳などで応用される中で,以下のような難点もあった:
- ゲート機構を導入したことでブロック内分岐を多く導入した結果,逆伝播時に大量のパスを微分値が通ることになってしまった.
- 学習が遅く,安定性にも欠いている.
- RNN全般に言えることだが,CNNなど他のディープモデルと異なり,転移学習ができない.
これらの課題を克服するためにRNNを階層化したり双方向化したりRNNを発展させる努力は行われるのだが,RNNの発展には限界があった.そのなかで,系列変換モデル(seq2seq with attention, Transformer)をもちいて,「2系列間の変換問題」で解くことも多くなっていく(機械翻訳やテキスト音声合成など).さらには,一般化言語モデルの事前学習(BERTやGPTなど)が,その後に登場し,RNNの限界が,Transformer・BERTの路線で解決されていくことになる.
4. LSTM の応用
言語テキストや音声系列に対してLSTMを学習することで,(一世代前の技術を使うよりも簡単に)系列認識や系列生成の研究が行えるようになった.RNNLM(RNN言語モデル)の登場により,文章生成技術の発展が,LSTMやGRUを用いて進展していくこととなった.
AlexNetの登場でコンピュータビジョン業界がCNNの研究中心に移行した始めた頃,第3次AIブームに突入したことも手伝って,LSTMの積極的な各種応用が,ビジョン以外の「可変系列データ」である対象として行われた.(現在はLSTMの代わりにTransformerを使用した応用が中心的となっている
また,音声認識,テキスト音声合成(TTS: Text-to-Speech)や,画像キャプション生成などで,LSTM・GRUを使用した seq2seq with attention の応用が非常に活発になった.
5. まとめ
この記事ではLSTMについてその仕組みについて紹介した.逆に応用については4節で少し触れた程度である.
LSTMは3つのゲート機構を用いることにより,短期記憶を途中で忘却しないように保持する仕組みを持つことで,系列長が長いシーケンスデータセットにおける長期的な変化も学習できるようになった.
かつてはNLP分野を中心に,LSTMとその簡略版のGRUを系列モデリング部分に用いることが多かった.しかし,CNNの発展やTransformerの登場に伴い,音声認識やTTS(text-to-speech)にコンピュータビジョンなどでも各種系列データではTransformer・BERTなどによる大規模データを対象とした,言語変換モデル・一般化言語モデルの学習が中心的になっており,LSTM,関連ページ:Deep Learning Libraryの主要なもの一覧
References
- [Hochreiter and Schmidhuber, 1997] S. Hochreiter and J. Schmidhuber. “Long short-term memory.” Neural computation 9.8 (1997): 1735-1780.
- [Gers et al., 2000] F. A. Gers, J. Schmidhuber, and F. Cummins. Learning to forget: Continual prediction with LSTM. Neural Computation, 2000.
関連書籍
- IT Text 自然言語処理の基礎 岡﨑直観, 荒瀬由紀, 鈴木潤, 鶴岡慶雅, 宮尾祐介 .オーム社,2022.
- 4.4 長期短期記憶 (LSTM) p95
- 深層学習による自然言語処理(機械学習プロフェッショナルシリーズ),坪井祐太, 海野裕也, and 鈴木潤 講談社, 2017.
参照外部リンク
- Long short-term memory – Wikipedia
- Understanding LSTMs
- LINE Engineering | 2018年の言語モデル概要
- towards data science | The fall of RNN / LSTM