LSTM -- Gateを持つRNN
RNNは、基本的には、単純な三層構造を持つネットワークをユニットとして、その隣り合う隠れ層同士をフルコネクトで横につなげたものだ。ただし、Feed ForwardのDNNのように、実際に、ユニットを積み重ねるのではなく、隠れ層を結合する重みのパラメーターを共有し、再帰的にシステムを記述する。 RNNの発展系LSTMも、こうしたRNNの基本的なアイデアを踏襲している。ただ、組み合わせの基本となるユニットが少し複雑な構成をしている。LSTMのユニット(Cellと呼ばれる)に導入された新しいアイデアの中心にあるのが、今回、取り上げるGateである。 LSTMの働きを理解するのに、Gateの働きの理解は必須であるのだが、同時に、それは、LSTMの働きを理解する、最も早い近道でもある。 今回は、RNNやLSTMの文脈を離れて、その意味では、天下り的であるが、ニューラル・ネットワーク上のGate回路について見てみようと思う。 次の図の左側が、Gateの構成をグラフで示したものである。 Gateは、入力( In )を出力( Out )に渡すのだが、その流れをGateに与えられる第三の情報( X )でコントロールするのだ。 Gateを構成しているのは、二つの回路だ。(図の右) 一つの回路(図右下)は、Gateに与えられる情報 Xを、Gateを直接コントロールする情報 Controlに変える。もう一つの回路は、Control 情報の元で、入力 In を出力 Out に変える。 Gate内部で、XからControlを生成する回路(図右下)は、Sigmoid関数を活性化関数とする一層のフルコネクトのニューラル・ネットワークである。図中の四角の中に書かれたσは、この層の活性化関数がSigmoidであることを表している。ただし、この層の重み W やバイアス b は、この図では省略されている。 ContorolとInから、Outを生成する回路(図右上)が行なっているのは、簡単な演算である。二つの量を掛け合わせるだけ。ただし、掛け合わせは、ベクトルの要素ごとに行われる。これは、Hadamard積と呼ばれるものだ。Hadamard積については、次の図を参考にされたい。 こうして、Gateが行なっている働きは、次の二つの式で表