再帰型ニューラルネットワーク(RNN)

・RNN:

画像1

時系列データ(株価、音声データなど)に対応可能な、ニューラルネットワークである。

・RNNの数学的記述:

画像2

画像3

u[:,t+1] = np.dot(X, W_in) + np.dot(z[:,t].reshape(1, -1), W)
z[:,t+1] = functions.sigmoid(u[:,t+1])
np.dot(z[:,t+1].reshape(1, -1), W_out)
y[:,t] = functions.sigmoid(np.dot(z[:,t+1].reshape(1, -1), W_out))

確認テスト:RNNのネットワークには大きくわけて3つの重みがある。1つは入力から現在の中間層を定義する際にかけられる重み、1つは中間層から出力を定義する際にかけられる重みである。残り1つの重みについて説明せよ。

回答:もう一つの重みwは一つ前の時系列データにおける中間層結果にかけて、現在の中間層結果と合算するための重みである。

・RNNの特徴:過去の時間t-1の状態を保持し、そこから次の時間でのtを再帰的に求める再帰構造を有する。

・BPTT:RNNにおいてのパラメータ調整方法で、誤差逆伝播の一種

・BPTTの数学的記述とコード:微分の連鎖律という点に変わりない

画像4

np.dot(X.T, delta[:,t].reshape(1,-1))

画像5

np.dot(z[:,t+1].reshape(-1,1), delta_out[:,t].reshape(-1,1))

画像6

np.dot(z[:,t].reshape(-1,1), delta[:,t].reshape(1,-1))

画像7

delta[:,t].reshape(1,-1)

画像8

delta_out[:,t].reshape(-1,1)

確認テスト:下図のy1をx・z0・z1・win・w・woutを用いて数式で表せ。※バイアスは任意の文字で定義せよ。※また中間層の出力にシグモイド関数g(x)を作用させよ。

画像9

回答:y1 = sigmoid(wout・z1 + c) 、z1 = sigmoid( win・x1 + w・z0 + b )

考察

・RNNは通常のニューラルネットワーク(全結合層)との違いは一つ前の中間層結果と対応する重みがあるという点である。時系列データでは特に一つ前の判定がいまの判定に影響を及ぼすため、RNNはこのような構造になった。実際、生物のニューロンも似たような構造が存在する。

・RNNの考え方として、前回計算した中間層の結果を利用し、インプットとしてニューラルネットワークに投入する仕組みである。わりと複雑ではない。

画像10



この記事が気に入ったらサポートをしてみませんか?