LSTMネットワークを理解する

投稿日:2015年8月27日

Recurrent Neural Networks

ヒトは毎秒一から思考を始めてはいないのだそうです。 このエッセイを読んでいるあなたは、前の単語の理解に基づいて、一つ一つの単語を理解しているのです。 すべてを投げ出して、またゼロから考え始めるわけではありません。 従来のニューラルネットワークはこれができないので、大きな欠点に思えます。 たとえば、映画の各場面でどのようなイベントが起こっているかを分類したいとします。 従来のニューラル ネットワークが、映画内の以前のイベントに関する推論を使用して、後のイベントにどのように情報を提供できるかは不明です。 5452>

Recurrent Neural Networks have loops.

上の図では、ニューラルネットワークの塊である \(A\) は、ある入力 \(x_t\) を見て、値 \(h_t\) を出力しています。

このようにループがあるため、リカレントニューラルネットワークはなんだか不思議な感じがします。 しかし、もう少し考えてみると、通常のニューラルネットワークと大差ないことがわかります。 リカレントニューラルネットワークは、同じネットワークの複数のコピーと考えることができ、それぞれがメッセージを後継者に渡しているのです。 ループを展開するとどうなるか考えてみましょう。

A unrolled recurrent neural network.

このチェーン状の性質から、再帰型ニューラルネットワークがシーケンスやリストと密接に関連していることがわかります。 このようなデータに使用するには、ニューラル ネットワークの自然なアーキテクチャです。 ここ数年、RNN をさまざまな問題に適用することで、信じられないほどの成功を収めています。 RNNで達成できる驚くべき偉業については、Andrej Karpathyの素晴らしいブログ記事「The Unreasonable Effectiveness of Recurrent Neural Networks」に譲ることにしよう。 これらの成功に不可欠なのは、「LSTM」という非常に特殊なリカレント ニューラル ネットワークの使用で、多くのタスクで標準バージョンよりもはるかに優れた働きをします。 リカレントニューラルネットワークに基づくエキサイティングな成果は、ほとんどすべてLSTMによって達成された。 RNNの魅力の1つは、以前のビデオフレームを使用して現在のフレームを理解するのに役立つかもしれないというように、以前の情報を現在のタスクに接続することができるかもしれないという考えです。 もしRNNがこれを行うことができれば、非常に有用なものになるでしょう。 しかし、それは可能なのでしょうか?

時には、現在のタスクを実行するために、最近の情報だけを見る必要があることがあります。 たとえば、前の単語に基づいて次の単語を予測しようとする言語モデルを考えてみましょう。 the clouds are in the sky” の最後の単語を予測しようとしている場合、それ以上の文脈は必要ありません – 次の単語が sky になることは明らかです。 このような場合、関連する情報とそれが必要とされる場所の間のギャップが小さいと、RNN は過去の情報を使用するように学習することができます。 “I grew up in France… I speak fluent French” というテキストの最後の単語を予測しようとすることを考えてみてください。 最近の情報によると、次の単語はおそらく言語名ですが、どの言語かを絞り込むには、さらに遡ってフランスという文脈が必要です。

残念ながら、そのギャップが大きくなると、RNNは情報をつなげることを学習できなくなります。 人間は、この形式のおもちゃの問題を解決するために、RNNのパラメータを注意深く選ぶことができます。 悲しいことに、実際には、RNNはそれを学習することができないようです。 この問題は、Hochreiter (1991)とBengio, et al. (1994)によって深く調査され、なぜそれが難しいのか、いくつかの非常に基本的な理由が判明した。

ありがたいことに、LSTMにはこの問題がない!

LSTM Networks

Long Short Term Memory networks – 通常単に “LSTM” と呼ばれているが、特殊なRNNである、長期依存を学習することが可能である。 Hochreiter & Schmidhuber (1997)によって紹介され、その後の研究で多くの人々によって改良され、一般化された。1 多くの問題で驚異的によく機能し、現在広く使われている。 長期間にわたって情報を記憶することは、実質的に彼らのデフォルトの動作であり、苦労して学習するものではない!

すべての再帰型ニューラルネットワークは、ニューラルネットワークのモジュールを繰り返す鎖の形をしている。 標準的なRNNでは、この繰り返しモジュールは、単一のtanh層などの非常に単純な構造を持つことになります。

標準的なRNNの繰り返しモジュールは、単一の層を含みます。

LSTM もこの鎖状の構造を持っていますが、繰り返しモジュールは異なる構造を持っています。 5452>

LSTM の繰り返しモジュールは、4 つの相互作用する層を含んでいます。 後でLSTMの図を順を追って見ていくことにしましょう。

上の図では、各線は 1 つのノードの出力から他のノードの入力まで、全体のベクトルを運びます。 ピンクの円はベクトルの足し算のような点演算を表し、黄色のボックスは学習されたニューラルネットワークの層である。 行の結合は連結を、行の分岐はその内容がコピーされ、コピーが異なる場所に移動することを示す。

LSTMの核となる考え方

LSTMの鍵は、図の上部を通る水平線であるセルの状態です。 セル状態はベルトコンベアのようなもので、チェーン全体をまっすぐに走り、わずかな線形相互作用があるのみです。

LSTM には、セル状態に情報を削除または追加する機能がありますが、ゲートという構造によって慎重に制御されます。 シグモイド ニューラル ネット層とポイントワイズ乗算演算で構成されます。

シグモイド層は 0 から 1 の数値を出力し、各成分をどれだけ通過させるかを記述します。 0の値は「何も通さない」ことを意味し、1の値は「すべてを通す」ことを意味する。

LSTMはこれらのゲートを3つ持ち、細胞の状態を保護・制御している。 この決定は “forget gate layer “と呼ばれるシグモイド層で行われる。 この層は \(h_{t-1}) と \(x_t) を見て、セル状態 \(C_{t-1}) の各数値に対して \(0) と \(1) の間の数値を出力します。 1は “fully keep this”、0は “fully get rid of this “を表します。

言語モデルが前の単語を全て考慮して次の単語を予測する例に戻りましょう。 このような問題では、正しい代名詞を使用できるように、セルの状態には現在の主語の性別が含まれる場合があります。 新しい主語が現れたら、古い主語の性別は忘れたい。

次のステップは、セルの状態に保存する新しい情報を決めることである。 これには2つの部分があります。 まず、「入力ゲート層」と呼ばれるシグモイド層で、どの値を更新するかを決定する。 次に、tanh層で新たに追加する値の候補のベクトル「 \tilde{C}_tenta 」を作成します。

言語モデルの例では、新しい被験者の性別をセル状態に追加し、忘れている古い性別を置き換えることになります。

古い状態に、先ほど忘れようと思ったことを忘れながら♪♪♪ \(f_t**) を掛けます。 そして、(i_t*tilde{C}_t})を追加します。

言語モデルの場合、前のステップで決めたように、ここで実際に古い被験者の性別の情報を捨てて、新しい情報を追加します。

最後に、何を出力するかを決めます。 この出力は細胞の状態に基づいていますが、フィルタリングされたバージョンになります。 まず、シグモイド層で細胞の状態のどの部分を出力するかを決定する。

言語モデルの例では、主語を見ただけなので、次に来る動詞に関連する情報を出力したいかもしれません。 たとえば、主語が単数か複数かを出力して、次に来る動詞がどのような形に活用されるべきかを知ることができます。

Variants on Long Short Term Memory

これまで説明したものは、ごく普通の LSTM です。 しかし、すべてのLSTMが上記のようなものであるわけではありません。 実際、LSTMに関わるほぼ全ての論文で、少し異なるバージョンが使われているようです。 5452>

Gers & Schmidhuber (2000)によって紹介された、よく知られたLSTMの変種の1つは、”のぞき穴接続 “を追加していることです。

上の図はすべてのゲートにのぞき穴を追加しているが、多くの論文ではいくつかののぞき穴を与え、他は与えない。

別の変形は結合した忘却と入力ゲートを使用することである。 何を忘れ、何に新しい情報を加えるかを別々に決定するのではなく、一緒に決定するのです。 その代わりに何かを入力しようとするときのみ、忘れるのです。 5452>

LSTM の少し劇的なバリエーションは、Cho ら (2014) が紹介した Gated Recurrent Unit (GRU) です。 これは、忘却ゲートと入力ゲートを単一の “更新ゲート “に結合するものである。 また、セル状態と隠れ状態を統合し、その他の変更も行っている。 結果として得られるモデルは、標準的な LSTM モデルよりもシンプルで、ますます人気が高まっています。

これらは、最も注目すべき LSTM 変数のほんの一部に過ぎません。 Yao, et al. (2015)による Depth Gated RNNs のように、他にもたくさんあります。 また、Koutnik, et al. (2014)によるClockwork RNNsのように、長期依存性に取り組む全く異なるアプローチもあります。

これらの変種のうちどれがベストでしょうか? 違いは重要ですか? Greff, et al. (2015)は、人気のあるバリアントの素晴らしい比較を行っており、それらがすべてほぼ同じであることを発見しています。 Jozefowicz, et al. (2015) は、1 万以上の RNN アーキテクチャをテストし、特定のタスクで LSTM よりも優れた働きをするものを見つけました。 基本的に、これらはすべて LSTM を使って達成されます。 LSTM は、ほとんどのタスクでより効果的に機能します。

LSTM は方程式のセットとして書き下すと、かなり威圧的に見えます。 このエッセイで段階的に説明することで、少しは親しみやすくなったのではないでしょうか。

LSTM は、RNN で達成できることの大きな一歩となりました。 もう1つ大きなステップがあるのだろうかと考えるのは自然なことです。 研究者の間ではよくある意見です。 “ある!次のステップがあり、それは注目だ!”です。 このアイデアは、RNNの各ステップが、ある大きな情報の集合体から見るべき情報を選ぶようにすることです。 例えば、RNNを使って画像を説明するキャプションを作成する場合、RNNは出力する単語ごとに画像の一部を選んで見ることができます。 実際、Xuら(2015)はまさにこれを実行しています。 アテンションを使った本当にエキサイティングな結果がいくつも出ており、さらに多くの結果が出そうです…

RNN研究においてエキサイティングなのは、アテンションだけではありません。 たとえば、Kalchbrenner, et al. (2015)によるGrid LSTMsは非常に有望だと思われます。 生成モデルでRNNを使用する仕事 – Gregor, et al. (2015), Chung, et al. (2015), またはBayer & Osendorfer (2015) など – も非常に興味深いと思われます。 ここ数年は、リカレント ニューラル ネットワークにとってエキサイティングな時期でしたが、これからはもっとエキサイティングになることが約束されています!

Acknowledgement

LSTM の理解を深め、視覚化についてコメントし、この投稿についてフィードバックをくれた多くの人々に感謝します。

この投稿の前に、私はニューラルネットワークについて教える2つのセミナーシリーズで LSTM を説明する練習をしました。 この投稿の前に、私はニューラルネットワークについて教える2つのセミナーシリーズでLSTMの説明の練習をしました。それに参加した皆さん、私に辛抱強く付き合ってくれたこと、そしてフィードバックをくれたことに感謝します。 包括的でないリストを挙げると Felix Gers、Fred Cummins、Santiago Fernandez、Justin Bayer、Daan Wierstra、Julian Togelius、Faustino Gomez、Matteo Gagliolo、および Alex Graves などです。

その他の投稿

Attention and Augmented Recurrent Neural Networks

On Distill

Conv Net

A Modular Perspective

Neural Networks.Neutral Networks.Neutral Networks

Module Perspective

Neutral Networks.Neutral Networks.Neutral Networks9194 多様体とトポロジー

深層学習とNLPと表現


コメントを残す

メールアドレスが公開されることはありません。