ラビットチャレンジ【深層学習day3】~再帰型ニューラルネットワークの概念~

概要

再帰ニューラルネットワーク(以下、CNN)は時系列データに対応可能なNNである

過去の中間層の出力を参照することで時系列データに対応している

CNNにはBackpropagation Through Time(以下、BPTT)を活用している

この章では以下の項目を学んだ

・AlexNet(CNNの復習)(確認テスト1つ含む)

・RNNの基礎(確認テスト1つ含む)

・演習チャレンジ

・BPTT(確認テスト2つ含む)

・演習チャレンジ

・ハンズオン

AlexNet(CNNの復習)

モデルの構造:5層の畳み込み層およびプーリング層など、それに続く3層の全結合層から構成される

過学習を防ぐためにサイズ4096の全結合層の出力nドロップアウトを使用している

<<確認テスト>>

サイズ5×5の入力画像を、サイズ3×3のフィルタで畳み込んだ時の出力画像のサイズを答えよ。なおストライドは2、パディングは1とする。


O_{h} = {5+2*1-3\over{2}}+1 = 3

上記より(3x3)

RNNの基礎

・時系列データに対応可能なNN

・前回に学習した中間層の出力を次回の学習のさきに中間層の入力として使用する

RNNは以下のような構造をしている

f:id:Maruring:20210717085216p:plain

上図からZ4の出力はZ1の影響を受けるようになる。過去の学習の影響を受けるようになる

また、CNNは数学的記述で以下のように表すことができる

f:id:Maruring:20210717085340p:plain

<<確認テスト>>

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

中間層から中間層への重み

演習チャレンジ

v = _activatoin(W.dot(np.concatenate([left, right])))

BPTT

RNNにおけるパラメータ調整方法の1つ

BPTTは数学的記述で以下のように表すことができる

f:id:Maruring:20210717090036p:plain

<<確認テスト>>

①連鎖律の原理を使い、dz/dxを求めよ。z=t2, t=x+yとする

f:id:Maruring:20210716131341p:plain

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


y_{1} = g(w_{out}f(w_{in})) + x_{1} + wz_{0} + b
演習チャレンジ

delta_t = delta_t.dot(U)

weight_init_stdやlearning_rate, hidden_layer_sizeを変更

初期設定は[weight_init_std,learning_rate, hidden_layer_size] = [1,0.1,16]

learning_rate, hidden_layer_sizeを変更したさいに学習が早く収束した

f:id:Maruring:20210717093914p:plain

重みの初期化方法をXaiver,Heに変更

Heの初期化のさいに一度、大きく上昇した後に一気に収束している

f:id:Maruring:20210717094042p:plain

中間層の活性化関数をReLU,tanhに変更

初期化と中間層の組み合わせで確認した。初期化問わず学習が発散しているのを確認した

f:id:Maruring:20210717094218p:plain