ラビットチャレンジ 深層学習day3レポート 実装演習 その1

Section1 再帰型ニューラルネットワークの概念

バイナリ加算

  • バイナリ加算
    2進数同士の足し算を行う。
    2進数の加算時の繰り上がりを学習させる。
    下位の数字を過去、上位の数字を未来とすることで時系列データとみなす
  • 8桁同士の2進数の加算
  • 学習回数は1万回
  • 8単位分の時間を1エポック、今回のケースではそれを1万回学習

出力結果

Lossが誤差量。
Pred配列がRNNが予測したバイナリ列。True配列が正しいバイナリ列。
誤差の値はイテレーションが進むにつれて下がっていることがわかる。
足し算の結果もイテレーション1000あたりの結果と比べると正確になっている。

47+46=2や127+15=126などこの辺りでは正しい結果が得られていない。

講義で触れた処理部分。
順伝播の処理

逆伝播の処理部分

 

[try] 中間層の活性化関数を変更してみよう

バイナリ加算のコードの活性化関数をシグモイドからRuLU関数へ変更

学習が進んでも誤差が下がっていない。
イテレーションが9900になっても加算結果が間違っている。
ReLU関数で勾配爆発が起こり、収束していない。

Section2 LSTM

GRUの項目でまとめて行ったため割愛。

Section3 GRU

TensorFlowを使ったRNNによる自然言語処理。
TensorFlowではRNNやLSTM、GRUなどのモデルを指定して実行できることが紹介された。
今回はRNNで実行。

出力結果
(途中省略)

Section4~Section7は該当するコードがないため割愛

割愛

コメント

タイトルとURLをコピーしました