暇人日記

アラフォーおっさんのコーセラの機械学習の課題を解こうと頑張っています!

Coursera Machine Learning Week5 2周目⑨ Backpropagation ループ無し

Video振り返り/問題文読み込みをしたので、

今回はBackpropagationの課題にいよいよ取り組みます。

 

解き方の順番は詳細にVideoにも問題文にもありました↓

 

f:id:omoshiroamericanews:20200503122906p:plain


この順番に解いていけばいいはずです。

 

今回はループ無しで解きます。

ヒントはループ有りが推奨でしたが私にはループ有りの方が難しいので、

今回はループ無しで解いて、次回ループ有りで解いてみます。

 

 

ということで順に解いていきます。

 

f:id:omoshiroamericanews:20200503123153p:plain

ここはCostFunctionの時に実行しているので飛ばします。

a3がoutput Layerになりますね。

 

f:id:omoshiroamericanews:20200503123258p:plain

問題文ではf:id:omoshiroamericanews:20200503152209p:plainとあります。

この違いは問題文はループを推奨しているからだと思います。

 

 

δ(3)=a(3)-y(t)になりますが、

tはループに関係しているので、ループ無しで解くときは無視でいいと思います。

 

そうするとこれはoutput layer(=a3)と実Sampleのyとの比較です。

Coursera Machine Learning Week5 課題 2周目⑤ Costfunction ループ無し - 暇人日記

絵としては↓のイメージになります。

 

f:id:omoshiroamericanews:20200503151517p:plain

 

実Sampleは5000X1から5000X10へ増加させていて、

output Layer(=a3)も5000X10なので、そのまま引き算できます。

 

f:id:omoshiroamericanews:20200503123319p:plain

問題文にはf:id:omoshiroamericanews:20200503152452p:plainとあります。

f:id:omoshiroamericanews:20200504143026p:plainの部分を先に考えます。

θ(2)は10X26です。δ(3)は5000X10です。

なのでこの部分を次元が合うようにδ(3) X θ(2)と考えると

5000X10 X 10X26 で5000X26になります。

 

f:id:omoshiroamericanews:20200503153421p:plainf:id:omoshiroamericanews:20200503153700p:plainの中に

z(2)を代入すればいいはずです。

z2は5000X25なので

f:id:omoshiroamericanews:20200503152452p:plain

が次元が合わなくてエラーになりました。

 

f:id:omoshiroamericanews:20200504143355p:plain

Videoを振り返ってδの1つ目は不要であることを思い出しました。

δの1行目を削るのには方法があると思います。

 

1つ目はThetaをそもそも1行目削除する。

θ2は10X26ですが、1行目削れば10X25になります↓

f:id:omoshiroamericanews:20200503154247p:plain

 

そうすると5000X10 X 10X25 でδ(2)は5000X25になります。

 

実行は↓を参考にしました!

f:id:omoshiroamericanews:20200503154937p:plain

 

 

 

δ(2)もできました!

 

f:id:omoshiroamericanews:20200503123329p:plain

ここは前回の日記に書いた通り、

**************************************************************************

f:id:omoshiroamericanews:20200503155713p:plain

**************************************************************************

右の赤枠で考えます。

 

そしてf:id:omoshiroamericanews:20200503160143p:plainのはずです。

 

次元から考えてみます。

 

Theta1_grad = zeros(size(Theta1))
Theta2_grad = zeros(size(Theta2))

 

最大のヒントは↑だと思います。

 

Theta1は25X401なのでTheta1_gradも25X401です。

Theta2は10X26なのでTheta2_gradも10X26です。

 

δ(3)は5000X10

δ(2)は5000X25

となっています。

 

まずTheta1_gradを考えます、25X401が正解です。

f:id:omoshiroamericanews:20200503160131p:plain


はTheta1_grad=δ(2) X  a(1)'となります。

δ(2)は5000X25

a(1)は5000X401

Theta1_gradは25X401

なので、転置すると次元が合います。

 

次にTheta2_gradを考えます、10X26が正解です。

Theta2_grad=δ(3) X  a(2)となります

δ(3)は5000X10

a(2)は5000X26

Theta2_gradは10X26

なので、転置すると次元が合います。

 

これでStep5が完了です。

 

f:id:omoshiroamericanews:20200516103448p:plain

 

最後の↑のStepはm=5000で割ればいいです。

式が2つに分かれてますが、それはRegularizedに関するので

ここでは飛ばします。

 

これでSubmitして正解でした!

 

Step通りには解けましたがやはり中身が理解できていないです。

 

次回はループありでの解き方に挑戦して中身ももう少し理解できらたいいな

と思います!