ディープラーニングのお勉強体験記”30:番外編「XP」の各sin波コード”(リカレントニューラルネットワーク”RNN”を中心にバックプロパゲーション”BPTT”を数式を使って理解したい!)

イメージ
「ゼロから作るDeep Learning 2 ―自然言語処理編」のRNNコード、P216、第5章「5.5.3 RNNLMの学習コード」から作ったWindows XPの各sin波コード 前回「Windows xp」でAnacondaを使えるようにしたと紹介しました。でもって、ここではそこで動く「sin波学習コード」紹介します。わざわざ紹介する内容でもないかもしれませんが、、、、、、 「Jupyter Notebook」を使うということと(普段は「Jupyter Lab」を使ってます)、コードの先頭部分に「%matplotlib inline」を追加する、グラフの表示部分をちょっと書き換えるだけ(1波形1コマンドラインにする)と、簡単ですから、、、、、 でもまあ、一応書かせてもらいます!(簡単なことでも、それなりに苦労はしていますので) 目次 1:xp用のRNNのSIN波コード 2:xp用のLSTMのSIN波コード 3:xp用のGRUのSIN波コード 1:xp用のRNNのSIN波コード # 完成版 Windows xp用 RNNコード # ゼロから作る Deep Learning2のP216、第5章「5.5.3 RNNLMの学習コード」でコード全体が見えるようにできるだけ「import」を外した # プログラムの動作検証用にSINカーブを学習させるため変更したコード # coding: utf-8 # import sys # sys.path.append('C:\\kojin\\資料\\AI関連\\ゼロから作る Deep Learning\\ゼロから作る Deep Learning2\\deep-learning-from-scratch-2-master\\') %matplotlib inline import matplotlib.pyplot as plt import numpy as np # from common.optimizer import SGD # from dataset import ptb # このimportを有効にするには上記パス設定「sys.path.append('C:\\kojin\\AI関連\\・・・」が必要! # from simple_r...

ディープラーニングのお勉強体験記”25:GRUのBPTTちょっとした補足”(リカレントニューラルネットワーク”RNN”を中心にバックプロパゲーション”BPTT”を数式を使って理解したい!)

GRUバックプロパゲーションの「アルゴリズム」と「数式」の間のちょっとした補足


DNNRNNのときに、 "「アルゴリズム」と「数式」の間のちょっとしたギャップ" について書きましたが、LSTMもGRUも同じようなギャップがあります。ただ、GRUは、LSTMと違って、「層方向」と「時間方向」のバックプロパゲーション”BPTT”の式が微妙に違っているので、その辺を意識してみるとアルゴリズムの理解が進みやすいのかな?思った次第です。
というわけで、そんな大した話ではないのですが、ちょっと書いておこうと思います。

ただ、図を載せるだけですけど、、、、、、、

GRUの「数式」が表す、バックプロパゲーション”BPTT”は、絵的には、


です。

また、GRUの「コード」が表す、バックプロパゲーション”BPTT”は、絵的には、


です。

意味的には、RNNの時と同じです。
大雑把に言っています、コードの部分は、「数式」の処理も一応含まれていはいます。

「数式」は「dL/dh」を導こうとして、(l+1)層と(t+1)層から「dL/dh」をもらってきます。

一方

「コード」は「dL/dh」から計算して、(l-1)層と(t-1)層への「dL/dh」を求め、それぞれに渡しています。



以上です。




コメント

このブログの人気の投稿

ディープラーニングのお勉強体験記”17:LSTM数式導出”(リカレントニューラルネットワーク”RNN”を中心にバックプロパゲーション”BPTT”を数式を使って理解したい!)

ディープラーニングのお勉強体験記”18:LSTMコードと数式”(リカレントニューラルネットワーク”RNN”を中心にバックプロパゲーション”BPTT”を数式を使って理解したい!)

ディープラーニングのお勉強体験記”30:番外編「XP」の各sin波コード”(リカレントニューラルネットワーク”RNN”を中心にバックプロパゲーション”BPTT”を数式を使って理解したい!)