おひとりさま現役パラレルワーカーフクコろぐ

これからの会社員は、複数の収入源をもとう! 会社に翻弄されずアナタらしく仕事ができる。 そんなパラレルワーカーを広めるフクコのブログです。

【文系プログラミング初心者deE資格】ゼロつくディープラーニング #22

f:id:fukuko-parallel-work:20211121200310j:plain


こんにちは!

現役パラレルワーカー フクコです。

f:id:fukuko-parallel-work:20210212204833p:plain




前回の記事↓に続き

www.fukuko-parallel-work.com




来年の2月の試験に向けてE資格試験勉強中のため


E資格とは?の記事はコチラ↓

www.fukuko-parallel-work.com




ゼロつくシリーズでおなじみ

オーライリーから出版されている

ディープラーニングの本格的な入門書でよくおススメされる

「ゼロからつくる Deep Learning」本


f:id:fukuko-parallel-work:20211029220008j:plain





この本↑を毎日5ページずつコツコツこなす

約2か月間で今年中に終了するので

来年のE資格試験までにこれで基礎力をつけることにしました。(^^)


ついつい私は何もないとだらけてしまうので(笑)

毎日5ページ終わった後の記録とまとめを書いていこうと思います。


と、まとめに入る前に…

やる気を出すためのコトバをシェアします!!(主に私のやる気を出すために 笑)


「努力はどれだけしても足りないんだよ。

知ってるだろうそれは お前も…」

by 錆兎(さびと)


私の大好きな鬼滅の刃から

錆兎(さびと)の名言です。


私は主人公の炭治郎大好きなんですが、

錆兎(さびと)とどちらが好きかと言われたら

迷わず錆兎(さびと)を選びます。(笑)それくらいとっても彼の漢気が大好きなのです!


そう! 努力はすればするほど、自分はまだまだと思い知らされる。

そして、レベルアップすればするほど、上には上がいることに次第に気がついていく。。。

私の場合、

試験勉強すればするほど、なんだか全然まだまだ勉強が足りない気がして、

どんどん不安になるタイプなんです… うえ~ん(T-T)


ですが!


足りないと思うなら満足するまで勉強し続ければいいんですよね!! やったりますよ!!(^^)


錆兎(さびと)、どうもありがとう! (^0^)

今日もやる気が出てきました! 

よし!! 今日も頑張るぞ~! お~!! 

というコトで、今日も私はコツコツ努力でノルマをこなしますよ! 笑


ではでは、いい加減まとめに入ります。笑




その前に本の目次の紹介です。

ゼロつくディープラーニングは、下記↓の合計8章で構成されています。

本の目次

  • 5章 誤差伝播法
  • 6章 学習に関するテクニック



ちなみに…

ゼロつくディープラーニング第1章はPython入門のセクション(20ページ分)なので、

とりあえず今回私は飛ばし、第2章からまとめています。

今回も引き続き、第5章のつづきからでーす。



第5章 誤差逆伝播法のつづき

ココでは、

重みパラメータの勾配の計算を効率よく行える誤差逆伝播法」について学ぶ

5.6 Affine / Softmaxレイヤの実装

AffineレイヤとSoftmaxレイヤの実装についてみていく。

5.6.1 Affineレイヤ


ニューラルネットワークの順伝播では、

重みつき信号の総和を計算するため

行列の積を用いて、

Numpyでは、np.dot()を使用

Pythonでは、↓の感じで実装できる。

#numpyのインストール
import numpy as np

X = np.random.rand(2)#入力
W = np.random.rand(2,3)#重み
B = np.random.rand(3)#バイアス

Y = np.dot(X, W) + B

print(X.shape)#(2,)
print(W.shape)#(2, 3)
print(B.shape)#(3,)


ニューロンの重みつき和は、

Y = np.dot(X, W) + Bのように計算できる


Affine(アフィン)変換:

ニューラルネットワークの順伝播で行う行列の積は、

幾何学の分野では「アフィン変換」と呼ばれる。


Affineレイヤの計算グラフは↓のとおり。


f:id:fukuko-parallel-work:20211121214118j:plain



↓の図のようにWの形状が(2,3)であるとすると

 W^T\ は、(3,2)となる。



 \boldsymbol{W} =
\begin{pmatrix}
W₁₁&W₁₂&W₁₃\\
W₂₁&W₂₂&W₂₃
\end{pmatrix}


 \boldsymbol{W^T} =
\begin{pmatrix}
W₁₁&W₂₁\\
W₁₂&W₂₂\\
W₁₃&W₂₃\\
\\
\end{pmatrix}


この図を基に計算グラフを書いてみると↓のとおり。


f:id:fukuko-parallel-work:20211121214140j:plain


5.6.2 バッチ版Affineレイヤ


次は、N個のデータをまとめて順伝播する場合

つまり

バッチ版のAffineレイヤについて考えてみる。



バッチ版Affineレイヤを計算グラフを書いてみると↓のとおり。


f:id:fukuko-parallel-work:20211121214156j:plain



例えばN=2とした場合

Pythonで実装してみると…

# 例えばN=2とした場合、Pythonで実装してみる

X_dot_W = np.array([[0,0,0],[10,10,10]])
B = np.array([1,2,3])

print(X_dot_W)#答えは、array([[ 0,  0,  0],[10, 10, 10]])
print(X_dot_W + B)#答えは、[[ 1  2  3][11 12 13]]

今日のまとめ


ハイ、今日はここまで!!

5ページなんですが、何だか式が増えて難しくなってきました。(>ー<)

第5章の誤差逆伝播法はまだまだつづきます!

引き続き頑張りまっす。


最後まで読んでくださり、ありがとうございます!

フクコ


ディープラーニング入門書おススメ本