- 「RNN(再起型ニューラルネットワーク)」について学びたいけど理解できるか不安・・・
- 「RNN(再起型ニューラルネットワーク)」についてどこから学んでいいか分からない?
- 「RNN(再起型ニューラルネットワーク)」を体系的に教えて!
「RNN(Recurrent Neural Network:再起型ニューラルネットワーク)」は、音声データやテキストデータなどの時系列データに対応可能なニューラルネットワークのことです。ここで興味があっても難しそうで何から学んだらよいか分からず、勉強のやる気を失うケースは非常に多いです。
私は過去に基本情報技術者試験(旧:第二種情報処理技術者試験)に合格し、また2年程前に「一般社団法人 日本ディープラーニング協会」が主催の「G検定試験」に合格しました。しかし「E資格」を受験し3回不合格になった苦い経験があります。この経験より不合格になった原因を追究し学習すべき要点を整理しました。
そこでこの記事では、「E資格」合格のために「RNN」について解説します。
この記事を参考に「RNN」を学べば、E資格に合格できるはずです。
1.RNN(再帰型ニューラルネットワーク)の概念
時系列データに対応可能な、ニューラルネットワーク
- 時間的順序を追って一定間隔ごとに観察され、しかも相互に統計的依存度が認められるようなデータ系列
具体的な時系列データとは?
・音声データ
・テキストデータ・・・etc

- 一時刻前の中間層出力(WZt-1)も入力に加えて計算する。

u[:,t+1] = np.dot(X, W_in) + np.dot(z[:,t].reshape(1, -1), W)
z[:,t+1] = functions.sigmoid(u[:,t+1])
時系列モデルを扱うには、初期の状態と過去の時間t-1の状態を保持し、そこから次の時間でのtを再帰的に求める再帰構造が必要になる。
2.BPTT(応用学習)
RNNにおいてのパラメータ調整方法の一種
↓
誤差逆伝播の一種
誤差逆伝搬法とは・・・
「【深層学習】深層学習の概要」より
計算結果(=誤差)から微分を逆算することで、不要な再帰的計算を避けて微分を算出できる。




① delta[:,t] = (np.dot(delta[:,t+1].T, W>T) + np.dot(delta_out[:,t].T, W_out.T))*functions.d_sigmoid(u[:,t+1])

- ①W_in -= learning_rate * W_in_grad
- ②W_out -= learning_rate * W_out_grad
- ③W -= learning_rate * W_grad

3.確認テスト
- Q1.RNNのネットワークには大きくわけて3つの重みがある。1つは入力 から現在の中間層を定義する際にかけられる重み、1つは中間層から出力を定義する際にかけられる重みである。残り1つの重みについて説明せよ。
- A1.中間層から中間層の重み
- Q2.下図のy1をx・z0・z1・Win・W・Woutを用いて数式で表せ。
※バイアスは任意の文字で定義せよ。
※また中間層の出力にシグモイド関数g(x)を作用させよ。

- A2.y1=g(Wout・s1+c)
s1=f(Win・x1+w・s0+b)
4.まとめ
最後まで読んで頂きありがとうございます。
皆様のキャリアアップを応援しています!!
コメント