DEVELOPER’s BLOG

技術ブログ

RNNとLSTM(Long Short Term Memory)の違いと特徴

2019.07.25 都築 勇祐
ニューラルネットワーク 機械学習
RNNとLSTM(Long Short Term Memory)の違いと特徴

LSTM(Long Short Term Memory)は音声認識など、様々な場面で使われるモデルなのですが、意外と歴史のあるモデルでもあります。今はattention等に押されている感はありますが、通常のRNNを大きく改善したと呼ばれる、学ぶ価値のあるモデルです。ここでは、RNNとの違い、実際の仕組みを解説していきたいと思います。

1 RNN

LSTMはRNNの一種ですが、通常のRNNが情報をそのまま次に引き継ぐのに対し、LSTMでは中間層を噛ませて次に渡しています。

Alt text

従来のRNNは、一度データを通して得た情報を、次のインプットと一緒に後続に渡す仕組みでした。

Alt text

Long Short-Term Memoryより引用。

しかしこのモデルでは、長期依存性の問題があります。昔の情報を現在まで保持するのが難しいため、文章などのデータを適切に処理できないのです。関連する情報とそれが必要になる場面が離れていれば離れているほど、RNNはこれらを上手く繋げることができないのです。

Alt text

Long Short-Term Memoryより引用。

LSTMはこの問題を解決するために開発されました。

2 LSTMの仕組み

では、LSTMの具体的な仕組みについて解説していきます。以下に二種類の図がありますが、この二つの図が同じものを表していることがわかるでしょうか。これがわかれば、今回の目標は半分達成です。

Alt text

Long Short-Term Memoryより引用。

Alt text

これらの図は、1999年に開発されたバージョンで、chainerのLSTMに実装されているものです。

ではステップごとに見ていきましょう。この順番は便宜上のものであり、計算が前後しても大丈夫な部分もありますが、例えばOutput Gateに必要なインプットはForget GateとInput Gateで計算されるので、そういった部分は順番に注意する必要があります。

2-1 Forget Gate

一つ目の部品は、Forget Gateと呼ばれる、文字どおり「忘れる」ためのゲートです。これは実は1997年のオリジナルのLSTMモデルにはない部分で、インプットが大きく変わる際、一度メモリセルで記憶した内容を一気に「忘れる」ことを学習します。

一つ目の図で言うと、下図のようになります。

Alt text

Long Short-Term Memoryより引用。

二つ目の図では、

Alt text

Long Short-Term Memoryより引用。

という式によって表現されています。(とりあえずp_forの項は無視してください)

2-2 Input Gate

二つ目のステップは、その段階の新しいインプット(xt)を処理するゲートです。古いリカーリングインプット(y{t-1})と新しいインプット(xt)をそれぞれシグモイド関数とtanh関数にかけ、XORすることで、新たな候補値のベクトル(C^~t)を計算します。そして、この新たな候補値を、forget gateに古い候補値(C_{t-1})をかけたものに足します。

一つ目の図で言うと、

Alt text

Alt text

Long Short-Term Memoryより引用。

二つ目の図で言うと、

Alt text

Alt text

Alt text

になります。

少しややこしくなりますが、最後の式を見ると、インプットを処理して得たCに、古いCの中でforget gateが残すべきと判断したものを足し合わせる、という仕組みになっていることがわかります。

2-3 Output Gate

最後のデートは、出力を処理するためのゲートです。他のゲートと同様にインプットをシグモイド処理した後で、セル状態(C_t)をtanh関数で処理したものと掛け合わせる構造になっています。

一つ目の図でいうと、

Alt text

Long Short-Term Memoryより引用。

二つ目の図で言うと、

Alt text

Alt text

になります。

LSTMは、主にこの3種類のゲートで成り立っています。一つ一つのゲートにおける仕組みは、図や式で表現されている通りですが、今一度まとめると、

LSTMの特徴は

・y_{t-1}という古いアウトプットを次の段階でインプットとして使用する、というRNNの構造を保ちつつ

・C_{t-1}という長期記憶を少しずつ変えていく

という2点で、それを

・Forget Gate(古いC_{t-1}のうちどの部分を忘れるか)

・Input Gate(新しいインプットと一つ前のアウトプットを組み込む)

・Output Gate(更新された長期記憶を再度処理してアウトプットを作る)

の3つのゲートで管理しています。

ここで疑問となるのが、

なんで入力と出力にややこしいゲートがあるの?

という点です。必要以上にややこしいというのは、その通りです。しかし、これには理由があります。

2-4 入力ゲートと出力ゲートの意味

実は、このややこしいゲートは重みを上手く調節するために存在しています。一般的なRNNでは、ユニットiからの出力が重みw_{ij}をつけてユニットjに入力されます。しかし、時系列データを使うと従来の方法ではこの重みが相反する2つの作用によって上手く更新されない、そのような事態が起きていました。具体的には

・ユニットを活性化されることによる入力/出力信号の伝達

・ユニットからの無関係な入力/出力によってユニットが消去されることを防ぐを入力/出力信号の保護

の二つの更新が同時に行われる場合があるのです。これを防ぐために、一見ややこしく不必要な入力ゲート・出力ゲートがLSTMに付けられているのです。

2-5 様々なLSTM

LSTMにも様々なバージョンがあり、実際には仕様によって少しづつ違います。その中でも比較的重要なものを一つご紹介したいと思います。

上でも記したように、LSTMは「忘却する・入力する・出力する」という3つのゲートで成り立っています。しかし、制御対象であるメモリセルの内部状態(C_t)それ自体は制御に使用されていませんでした。そこで、peephole connectionと呼ばれる接続を各ゲートに流し込むことで解決を図りました。

Alt text

上の図の青い線がpeephole connectionにあたります。ご覧の通り、各ゲートに青い線でメモリセルの内部状態(C_t)が流れ込んでいるのがわかると思います。上の式で説明されていなかった項の正体は実はこのpeephole connectionです。

(もっと知りたい人向け)

・LSTMのBack Propagation (逆伝播)

・Gradient Clipping

・Constant Error Carousel (CEC)

参考文献:

LSTMネットワークの概要

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

Long Short-Term Memory

関連記事

【物体検出】SSD(Single Shot MultiBox Detector)の解説

概要 先日の勉強会にてインターン生の1人が物体検出について発表してくれました。これまで物体検出は学習済みのモデルを使うことが多く、仕組みを知る機会がなかったのでとても良い機会になりました。今回の記事では発表してくれた内容をシェアしていきたいと思います。 あくまで物体検出の入門ということで理論の深堀りや実装までは扱いませんが悪しからず。 物体検出とは ディープラーニングによる画像タスクといえば画像の分類タスクがよく挙げられます。例としては以下の犬の画像から犬

記事詳細
【物体検出】SSD(Single Shot MultiBox Detector)の解説
ニューラルネットワーク 物体検知
【論文】

概要 小説を丸ごと理解できるAIとしてReformerモデルが発表され話題になっています。今回はこのReforerモデルが発表された論文の解説を行います。 自然言語や音楽、動画などのSequentialデータを理解するには広範囲における文脈の依存関係を理解する必要があり困難なタスクです。"Attention is all you need"の論文で紹介されたTransformerモデルは広くこれらの分野で用いられ、優秀な結果を出しています。 例えば機械翻訳

記事詳細
【論文】"Reformer: The Efficient Transformer"の解説
ニューラルネットワーク 論文解説
【論文】

機械学習では、訓練データとテストデータの違いによって、一部のテストデータに対する精度が上がらないことがあります。 例えば、水辺の鳥と野原の鳥を分類するCUB(Caltech-UCSD Birds-200-2011)データセットに対する画像認識の問題が挙げられます。意図的にではありますが訓練データを、 水辺の鳥が写っている画像は背景が水辺のものが90%、野原のものが10% 野原の鳥が写っている画像は背景が水辺のものが10%、野原のものが90% となるように

記事詳細
【論文】"Distributionally Robust Neural Networks"の解説
ニューラルネットワーク 機械学習 論文解説
強力な物体検出M2Detで動画の判別する(google colaboratory)

はじめに この記事では物体検出に興味がある初学者向けに、最新技術をデモンストレーションを通して体感的に知ってもらうことを目的としています。今回紹介するのはAAAI19というカンファレンスにて精度と速度を高水準で叩き出した「M2Det」です。one-stage手法の中では最強モデル候補の一つとなっており、以下の図を見ても分かるようにYOLO,SSD,Refine-Net等と比較しても同程度の速度を保ちつつ、精度が上がっていることがわかります。 ※https:

記事詳細
強力な物体検出M2Detで動画の判別する(google colaboratory)
ニューラルネットワーク 機械学習 画像認識

お問い合わせはこちらから