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

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

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

f:id:fukuko-parallel-work:20211120190802j: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 エマ


私の大好きな約束のネバーランド」(約ネバ)から

エマの名言です。


↓の記事でも一度お伝えしましたが、夢をかなえたい!なら

約ネバはホントにおススメです!!

巷ではまだまだ「鬼滅の刃」人気がすごいですし、

よくビジネスや自己啓発の名言として出てきますが

ゴールに向かうときのヒトの心理は実際どうなるのか??という描写は

正直、私は「約ネバ」の方がリアルに上手に描写していると思います。


気になる方はコチラ↓

www.fukuko-parallel-work.com


そう! 好きなことをしていくには大きなカベをのり越えないといけない

自由を得るためにはそれなりの覚悟と努力が必要!なんですよね。


エマ、どうもありがとう! (^0^)

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

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

というコトで、エマのように諦めず前に進みつづけて、今日も私はノルマをこなしますよ! 笑


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



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

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

本の目次

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


ちなみに…

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

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

今回は第5章のつづきからでーす。


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

ココでは、

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

5.5 活性化関数レイヤの実装


活性化関数であるReLUとSigmoidレイヤを実装してみる。

5.5.1 ReLUレイヤ


活性化関数として使われるReLU(Rectified Linear Unit)は

次の式で表される。


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


Xに関するyの微分は、↓の式のように求められる。


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



ReLUレイヤを実装してみると↓のとおり。

#ReLU関数
class Relu:
    def __init__(self):
        self.mask = None
        
    def forward(self, x):
        self.mask = (x <= 0)
        out = x.copy()
        out[self.mask] = 0
        
        return out
    
    def backward(self, dout):
        dout[self.mask] = 0
        dx = dout
        
        return dx


ReLUレイヤ

回路における「スイッチ」のように機能する。


5.5.2 Sigmoidレイヤ


つづいて、Sigmoid関数を実装してみる。


Sigmoid関数の式は↓のとおり。


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



Sigmoid関数を計算グラフにすると↓のとおり。


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


Sigmoid関数を実装してみると↓のとおり。

#ReLU関数
class Sigmoid:
    def __init__(self):
        self.out = None
        
    def forward(self, x):
        out = 1 / (1+ np.exp(-x))
        self.out = out
        
        return out
    
    def backward(self, dout):
        dx = dout * (1.0 - self.out) * self.out
        
        return dx


順伝播時に出力をインスタンス変数のOutに保持しておく

逆伝播時に、そのOut変数を使って計算を行う


今日のまとめ


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

今日は5ページなわりにちょっと少なめな感じ。

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

引き続き頑張りまっす。


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

フクコ


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