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

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

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

f:id:fukuko-parallel-work:20211125202821j: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 産屋敷 耀哉(うぶやしき かがや)


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

「御館様」こと、産屋敷 耀哉の名言です。


うちの会社の本社があるアメリカは

本日、11月25日

感謝祭(Thanksgiving Day!)☆彡


だからって…


チームみんなで一緒にお休みとるのをヤメロ!

だ~れがお前たちのカバーをするんだ!

ちゃんと最後まで仕事は責任もって終わらせろ!

私はゼッタイにお前たちを逃がさない!!(>ー<) 

私はカバーなんか絶対しない!! 

夜はプログラミングの勉強で忙しいのだ!!(>ー<)



なーんちゃって。笑 

は~、スッキリしました!!笑



御館様、どうもありがとう! (^0^)

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

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

というコトで、

たとえ同僚たちのお休みに邪魔されても、毎日努力の継続!ノルマをこなしますよ! 笑


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




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

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

本の目次

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



ちなみに…

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

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

今回から、第6章に入りま~す。



第6章 学習に関するテクニック


ニューラルネットワークの学習において

キーとなる重要なアイディアを説明する。

ニューラルネットワークの学習を効率的に進め、認識精度を高める手法を紹介。


6.1 パラメータの更新


ニューラルネットワークの学習の目的は、

最適化(optimization)損失関数の値をできるだけ小さくするパラメータを見つけるコト


ニューラルネットワークの最適化はムズカしい


なぜなら…


パラメータ空間は非常に複雑

パラメータの勾配を手がかりに、最適なパラメータを見つける


SGD確率的勾配降下法(stochastic gradient descent)

を使って、

勾配方向にパラメータを更新するというステップを何度も繰り返して

徐々に最適なパラメータに近づける

6.1.1 冒険家の話


ココに風変わりな冒険家がいる。

広大な乾燥地帯を日々旅する。

彼の目標は、「最も深く低い谷底」にたどりつくこと。

ただし、条件が2つ

1つめは、「地図を見ない」

2つめは、「目隠しをする」


さあ、どうすれば2つの条件を飲みつつ、効率よく「最も深く低い谷底」にたどりつけるのか??


ディープラーニングのパラメータの最適化も同じような状況


こんな困難な状況で重要になってくるのが、地面の「傾斜」である。

6.1.2 SGD


SGD(stochastic gradient descent)

SGDは数式で書くと↓のとおり。


WWη { \displaystyle\dfrac{\partial L}{\partial W}}


W更新する重みパラメータ

Wに関する損失関数の勾配{ \displaystyle\dfrac{\partial L}{\partial W}}とする。


η(イータ)は、学習率、ハイパーパラメータ


このSGDPythonのクラスで実装↓してみると…

# 6.1 SGD

class SGD:
    def __init__(self, lr=0.01):
        self.lr = lr
        
    def update(self, params, grads):
        for key in params.keys():
            params[key] -= self.lr * grads[key]


 lrは、初期化の引数、learning rate(学習率、η)を表す。

 params grads は、引数で、ディクショナリ変数。それぞれに重みパラメータと勾配が格納されている。


Optimizer = SGD()という一文を入れると、SGDで最適化してくれる。

6.1.3 SGDの欠点


SGDの欠点は、関数の形状が等方的でないと、非効率的な経路で最小値の探索をする点

等方的ある対象の性質や分布が方向に依存しない


今日のまとめ


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

ようやく第6章の学習に関するテクニックに突入!(^^)

引き続き頑張りまっす。


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

フクコ


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


E資格とは?

www.fukuko-parallel-work.com