ディープラーニングのお勉強体験記”11:RNNコードと数式のギャップ”(リカレントニューラルネットワーク”RNN”を中心にバックプロパゲーション”BPTT”を数式を使って理解したい!)
- リンクを取得
- ×
- メール
- 他のアプリ
RNNバックプロパゲーションの「アルゴリズム」と「数式」の間のちょっとしたギャップ
DNNの時も言いましたが、繰り返しますと、
ディープラーニングに限ったことではないと思いますが、
「理論と実際の間には、何らかの落差がある」
というのが普通なのではないでしょうか。
このRNNのコードの「アルゴリズム」と「数式」との間にも、ちょっとしたギャップを感じていて、ほんとにちょっとしたことなんだと思うのですが、それが原因でいまいち理解できない人もいるんじゃないかと思っています。
「RNNコードと数式の関係」のところで気づいた人もいるかと思いますが、、、、、
どういうことかというと、
ディープラーニングは、RNNの場合、「入力層」、「中間(RNN)層」、「出力層」などがあって、この中間層がRNNになります。そして、時間層を「行ったり」「戻ったりしつつ」上下の層を「登ったり」「下ったり」して学習を進めるわけですね。
で、「RNNバックプロパゲーション」では、自分が注目している層を(l)層とすると、
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
「アルゴリズム」の方では
「(l)層に対して(l-1、t)層と(l、tー1)層」
との関係を示している。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
一方
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
「数式」の方では
「(l)層に対して(l+1、t)層と(l、t+1)層」
との関係を示している。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ざっくり、こういう「違い(ギャップ)」があると思っています。
もうちょっと詳しくいうと、
「アルゴリズム」では、「(l)層」で計算した結果を「(l-1、t)層」と「(l、tー1)層」へ渡すという構造になっていますよね。つまりコードをみていると「(l-1)層」と「(t-1)層」を意識することになります。
一方
「数式」では、「(l)層」は、「(l+1)層」と「(t+1)層」から作られていることが分かります。
まあ、こちらもDNN同様、分かっている人は、「当然じゃん!」ということなんでしょうが、どんなことであっても初心者は、「当たり前」を知りません、こういうことを教えてくれないとどんなことでも入門段階で無駄な苦労をするんですよねー。
以上です。
- リンクを取得
- ×
- メール
- 他のアプリ
コメント
コメントを投稿