Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ゼロから作るDeepLearning 第6章ざっくりまとめ
Search
dproject21
February 06, 2017
Technology
2
1.3k
ゼロから作るDeepLearning 第6章ざっくりまとめ
「ゼロから作るDeepLearning」もくもく読書会の事前資料です。
https://deeplearning-yokohama.connpass.com/event/49840/
dproject21
February 06, 2017
Tweet
Share
More Decks by dproject21
See All by dproject21
ISTQB/JSTQBシラバスから学ぶAgileTesting / A guide of agile testing based on ISTQB syllabus
dproject21
4
3.3k
JSTQB Advanced Level 模擬問題作成方法 / methodology to questions creation for JSTQB advanced level
dproject21
3
1.3k
試験に絶対出ないJSTQB AL TA,TM問題 / Questions that will never be given on the exam of JSTQB advanced level
dproject21
0
1.4k
The official zip code book is terrible. And what should I do with the address you wrote.
dproject21
0
160
TDD applied Data Cleansing
dproject21
0
1.8k
Data preprocessing for MachineLearning/BI by Golang and MySQL UDF
dproject21
1
840
高精度名寄せシステムを支える テキスト処理 (の、ほんのさわり)
dproject21
3
2.4k
ゼロから作るDeepLearning 第7章前半ざっくりまとめ
dproject21
0
960
ゼロから作るDeepLearning 第5章 誤差逆伝播法による重み更新を追ってみる
dproject21
0
1.1k
Other Decks in Technology
See All in Technology
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
3
390
サイバーセキュリティと認知バイアス:対策の隙を埋める心理学的アプローチ
shumei_ito
0
390
iOSチームとAndroidチームでブランチ運用が違ったので整理してます
sansantech
PRO
0
140
第1回 国土交通省 データコンペ参加者向け勉強会③- Snowflake x estie編 -
estie
0
130
OCI 運用監視サービス 概要
oracle4engineer
PRO
0
4.8k
Taming you application's environments
salaboy
0
190
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
2
610
SREによる隣接領域への越境とその先の信頼性
shonansurvivors
2
520
Can We Measure Developer Productivity?
ewolff
1
150
TypeScript、上達の瞬間
sadnessojisan
46
13k
Terraform Stacks入門 #HashiTalks
msato
0
350
ドメイン名の終活について - JPAAWG 7th -
mikit
33
20k
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
410
Intergalactic Javascript Robots from Outer Space
tanoku
269
27k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Optimizing for Happiness
mojombo
376
70k
Designing for Performance
lara
604
68k
KATA
mclloyd
29
14k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
Transcript
「ゼロから作るDeepLearning」 第6章ざっくりまとめ (開催前資料) 2017.2.7 たのっち @dproject21
この本のざっくりまとめです • 「ゼロから作るDeepLearning」斎藤 康毅 著 オライリー・ジャパンより2016年9⽉ 発⾏ https://www.oreilly.co.jp/books/9784873117584/ • 公式サポートページ
https://github.com/oreilly-japan/deep-learning-from-scratch • 今回は第6章「学習に関するテクニック」です。 https://deeplearning-yokohama.connpass.com/
パラメータの更新 " # " # 1 ℎ( ) 勾配 :
すべての変数の偏微分をベクト ルでまとめたもの。 ニューラルネットワークでは、損失関 数の値ができるかぎり⼩さくなるベク トルを、勾配降下法を⽤いて求め、重 み付けを更新する。 = − これが、第4章でやった「勾配降下法」 (確率的勾配降下法:SGD)でした。
パラメータの更新 " # " # 1 ℎ( ) SGDでは、⾮効率な学習になってしま うケースがある。そこで別の⼿法によ
る勾配計算を⾏う。 3種類の計算⽅法が紹介されている。 ・Momentum ・AdaGrid ・Adam
パラメータの更新 " # " # 1 ℎ( ) SGD =
− Momentum 物理の「運動量」に関係している。 SGDのジグザグの動きを軽減させるた めの”摩擦”としてを⽤いるようにした。 ← − = +
パラメータの更新 " # " # 1 ℎ( ) SGD =
− AdaGrid 学習係数を減衰させる、というアイデ アから来ている。 ⼊⼒データのパラメータの要素ごとに 学習係数を調整する、というもの。 ℎ ← ℎ + ⨀ = − 1 ℎ 過去の勾配の⼆乗和を保持し、学習係 数を減衰させる。
パラメータの更新 " # " # 1 ℎ( ) SGD =
− Adam AdaGrid + Momentum というような⼿ 法。詳しくは原著論⽂を読んでくださ い。 (と書いてあります) 原著論⽂はこちら。 https://arxiv.org/pdf/1412.6980v9.pdf
パラメータの更新 " # " # 1 ℎ( ) どれがいいの? どれも得意な問題、不得意な問題があ
る。 最近はAdamが好まれている。 多くの研究では、いまでもSGDが使わ れている。 MomentumもAdaGridも試す価値のあ る⽅法。
パラメータの更新 " # " # 1 ℎ( ) どれがいいの? どれも得意な問題、不得意な問題があ
る。 最近はAdamが好まれている。 多くの研究では、いまでもSGDが使わ れている。 MomentumもAdaGridも試す価値のあ る⽅法。
重みの初期値を0にするとどうなるか? 順伝播時は2層⽬のニューロンには全て 同じ値が⼊る。 逆伝播時は全て同じ重みになる。 重みが均⼀になってしまうので、意味 がなくなる。 = 0だと、 同じ値が伝播する 重みの初期値
重み付けの値ごとに、 隠れ層のアクティベーション(活性化 関数の後の出⼒データ)を⾒てみると、 どの重み付けがよいかが分かる。 隠れ層の アクティベーションを⾒る 重みの初期値 … … …
… … ⼊ ⼒ デ タ
Sigmoid関数、tanh関数の場合は 「xavierの初期値」 " : のガウシアン ReLUの場合は 「Heの初期値」 # : のガウシアン
を使うのがよい。 (両⽅ともnはノードの個数) 隠れ層の アクティベーションを⾒る 重みの初期値 … … … … … ⼊ ⼒ デ タ
アクティベーションの分布 を強制的に調整する Batch Normalization (Batch Norm) … … … …
… ⼊ ⼒ デ タ ミニバッチごとに、データの平均が0で 分散が1になるよう正規化を⾏う。 ・学習を早く進⾏させることができる ・初期値にそれほど依存しない ・過学習を抑制する という利点がある。 Affine → Batch Norm → ReLU となるようにする
アクティベーションの分布 を強制的に調整する Batch Normalization (Batch Norm) … … … …
… ⼊ ⼒ デ タ ミニバッチごとに、データの平均が0で 分散が1になるよう正規化を⾏う。 < ← 1 > @ A @B" # < ← 1 >(@ −< )# A @B" @ D ← @ − < # < + ミニバッチ = " , # , … , A を、平均 0、分散1のデータ " I, # I, … , @ D に変換 する。 Affine → Batch Norm → ReLU となるようにする
アクティベーションの分布 を強制的に調整する Batch Normalization (Batch Norm) … … … …
… ⼊ ⼒ デ タ ミニバッチごとに、データの平均が0で 分散が1になるよう正規化を⾏ったデー タに、固有のスケールとシフトで変換 を⾏う。 @ ← @ D + = 0, = 1の値からスタートして、学 習によって調整していく。 ここまでがニューラルネットワーク上 での順伝播。 Affine → Batch Norm → ReLU となるようにする
正則化 過学習(overfitting) 訓練データだけに適応しすぎてしまい、 訓練データには含まれない他のデータ に対応できない状態 過学習の原因として ・パラメータを⼤量に持ち、表現⼒の ⾼いモデルであること ・訓練データが少ないこと がある。
これを抑制する
正則化 Weight decay(荷重減衰) 損失関数の値を⼩さくするため、 Weight decayを損失関数に加算する。 = " , #
, … , : の重みに対して、L2ノルム ( " #, # #, … , : # )のWeight decay 1 2 # を損失関数に加算する。
正則化 Dropout ニューラルネットワークのモデルが複 雑になり、Weight decayでは対応が困 難になったときに⽤いられる。 訓練時にランダムに選ばれたニューロ ンを消去する。 (コード上では、maskしている) ☓
ハイパーパラメータの検証 ハイパーパラメータの検証には、 ・訓練データ ・テストデータ ではなく「検証データ」を⽤いる。
ハイパーパラメータの検証 訓練データ:パラメータの学習に⽤い る 検証データ:ハイパーパラメータの性 能評価に⽤いる テストデータ:ニューラルネットワー クの汎化性能をチェックするために使 う(理想的には⼀度だけ) データの分離はユーザー側で⾏う。 (MNISTの場合、検証データは全デー
タの20%)
ハイパーパラメータの検証 ハイパーパラメータの最適化 ハイパーパラメータの範囲を設定する (0.001〜1000という具合) ↓ ハイパーパラメータの範囲からランダ ムにサンプリング ↓ 学習を⾏い、検証データで認識精度を 評価する(エポックは⼩さく設定)
100回ほど繰り返し、認識精度からハ イパーパラメータの範囲を狭める