Sequence to Sequence

ここでは、RNNがなぜ "Sequence to Sequence" のNeural Network と呼ばれるのかを説明しようと思う。

まず、RNNのグラフを見やすく表現し、以下の議論を分かりやすくするために、グラフの表記を少し変えてみよう。

入力層・隠れ層・出力層の三層からなる単純なネットワークを考えよう(次の図の上)。
これを、TensorFlowのグラフで書けば次のようになる(次の図の中)。ここでは、ニューラル・ネットワークの基本的な計算式 φ( WX + b ) が、明示的に図示されている。

新しい表記は、このグラフの細部を省略したものだ(次の図の下)。
重みのパラメーターのU, Vのみを残して、二つのバイアスbも二つの活性化関数φも表記上からは消えている。ただ、入力ベクトルxが、パラメーターUの作用を受けて隠れ層のベクトルhを形成し、隠れ層ベクトルが、パラメーターVの作用を受けて、出力ベクトルoに変換されることは、きちんと表現されている。


こうした表記(ただし、今度は、入力層を下に、出力層を上にしている(次の図の左))を用いると、単純な三層のニューラル・ネットワークを横に並べ、隣り合う隠れ層のノードをフル・コネクトで結んだネットワーク(次の図の右上)は、次の図の右下のように表されることになる。


この図では、パラメーターのU1, U2, U3 も、V1, V2, V3 も、W1, W2 も、それぞれ異なっていることに注意しよう。これは、横につなげられたニューラル・ネットワークが、それぞれ異なったパラメーターを持つ、異なったネットワークであることを表している。

ところで、単純なニューラルネットを横につなげたものがRNNではないのだ。

次の図の右の方を見て欲しい。そこには、パラメーターは、U, V, W の三つしかない。
左の図の U1=U2=U3=U, V1=V2=V3=V, W1=W2=W としたものが、右のグラフである。これが、RNNのグラフになる。

RNNは、同じパラメーターを持つ、同じニューラル・ネットワークを横につなげたものだ。この図では、三つのニューラルネットが横につながっているように表記されているが、この三つのニューラルネットは、同じパラメーターを共有している同一のネットワークである。


見方を変えよう。

もしも、先の図で、入力層からの三つの入力が「同時」に与えられることがなく、「別々」に与えられるなら、この三つのネットワークは、一つのネットワークの別々の場合の状態を表していると考えることができる。

次の図の左を見て欲しい。これが、RNNの一つの表示である。一つのネットワークだ。

注目して欲しいのは、隠れ層hの出力は二つに分かれていて、出力層oに向かうものと、隠れ層h自身に向かうものがあるということ。ループがあるのだ。Full ConnectのFeed Forwardのネットワークには、ループは存在しなかった。このことは、RNNの大きな特徴の一つである。(Back Propargationは、Feed Back Loopと考えていいのだが。)

この一つのネットワークに「別々」に、というか、次々と入力が与えられると、この一つのネットワークの状態は、次々に変化していく。こうした状態の変化を、入力ごとに表現したものが、今まで見てきた右側の図だと考えればいい。これらは、基本的に、同じものを表現している。

確かに、右の表示でも、隠れ層hの出力は二つに分かれていて、出力層oに向かうものと、隠れ層h(ただし、隣の)に向かうものがある。もちろん、それは、RNNを、隣り合うネットワークの隠れ層同士を結ぶものとして導入してきたので、当然なのだが。ただ、そのイメージは、RNNの実装を考える時には、捨てたほうがいい。一方で、RNNの動作をイメージするには、こうした展開形が、ずっとわかりやすい。

(先にも触れたが、左の表示と右の表示が、同じものになるためには、右側の表示の入力が、「同時」には与えられないことが、前提である。)



入力と状態の変化が、時間上で起きると考えるのは自然である。先の図でも、添え字に用いられている (t-1) -> (t) -> (t+1) は、時間の変化に対応していると考えることもできる。ただ、本当に重要なことは、この変化が、あとさきの「順序」を持って継起することである。時間は、順序を持つ継起の一つの身近な例にすぎない。

こうして、RNNは、順番を持つ入力 x1, x2, x3, .... を、出力 o1, o2, o3, ... に変換するのだが、この出力 o1, o2, o3, ... も、当然、順番を持ち、順番を保つ。Sequence x1, x2, x3, .... は、Sequence o1, o2, o3, ... に変換されることになる。






コメント

このブログの人気の投稿

TensorFlow Foldについて

TPU論文の翻訳(1)

TPU論文の翻訳(2)