2017年2月10日金曜日

RNNでの φ ( WX + b ) の応用

前回、次のようなグラフの表記法を導入した。


大きな流れは分かりやすくなるのだが、実際に、どのような処理がなされているのかは、この表記ではわからない。その点では、TensorFlowでのグラフ表記の方が、細かいところまでよくわかった。

このTensorFlowのグラフが表しているのは、フルコネクトのニューラルネットのある層の出力は、φ ( WX + b ) という形で表せるということである。ここにφ は、その層の活性化関数、はその層の重み、はその層のバイアス、はその層への入力である。

この計算式 φ ( WX + b ) は、とても基本的なものである。

ここでは、復習を兼ねて、三層からなる単純なネットワークの新しいグラフ表記を、この式で表してみよう。それが、次の図である。


内容的には、先の図で、TensorFlowのグラフが表しているものと同じである。ただ、グラフが表しているものを式で表すと、細かなところまではっきりとわかる。これは大事なことで、RNNのような複雑なネットワークでは、グラフだけすますと、肝心のところがわからなくなる。グラフと式を併用するのがいい。もちろん、基本的な情報は、式の方にある。

さて、今日の本題だが、RNNのグラフ表記を式で表してみようと思う。それが、次の図である。


出力層の式は同じだが、隠れ層の式に、ちょっとした変化がある。それは、RNNの隠れ層が、入力層からだけでなく、隣の隠れ層からの入力も受けるので当然のことである。

上の図で、赤い字で書かれた部分が、それである。

RNNでは、隣り合う隠れ層は、フルコネクトでつながっている。隠れ層同士のつながりの重みをWとすれば、隣の隠れ層 h(t-1)から受け取るベクトルは、Wh(t-1)をかけたものになる。それは、隠れ層が、重みU でフルコネクトでつながっている入力層 x(t)から受け取るベクトルが、Ux(t) をかけたものになるのと同じことである。

こうして、RNNの隠れ層が外から受け取るベクトルは、入力層からくるベクトルに、隠れ層からくるベクトルを足したものだと考えればいいことになる。




0 件のコメント:

コメントを投稿