Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
850
高精度名寄せシステムを支える テキスト処理 (の、ほんのさわり)
dproject21
3
2.4k
ゼロから作るDeepLearning 第7章前半ざっくりまとめ
dproject21
0
970
ゼロから作るDeepLearning 第5章 誤差逆伝播法による重み更新を追ってみる
dproject21
0
1.1k
Other Decks in Technology
See All in Technology
乗っ取れKubernetes!!~リスクから学ぶKubernetesセキュリティの考え方~/k8s-risk-and-security
mochizuki875
3
450
システムリプレイスプロジェクト発足から7年、改めてコスト最適化に向き合う / replace and cost optimization
takumi
1
400
プルリクが全てじゃない!実は喜ばれるOSS貢献の方法8選
tkikuc
17
2.2k
開発者向けツールを魔改造してセキュリティ診断ツールを作っている話 - 第1回 セキュリティ若手の会 LT
pizzacat83
0
320
農業用ダム監視を目的とした衛星SAR 干渉解析の適用性について
osgeojp
0
140
40歲的我會給20歲的自己,關於軟體開發的7個建議
line_developers_tw
PRO
0
120
How is Cilium Tested?
yutarohayakawa
5
200
Engineer Recruting Deck
siva_official
PRO
1
3.3k
241130紅白ぺぱ合戦LT「編集の技術」
toya524287
5
600
Amazon ECSとCloud Runの相互理解で広げるクラウドネイティブの景色 / Mutually understanding Amazon ECS and Cloud Run
iselegant
19
2.4k
sre本読んだ感想
pisakun
0
200
実践/先取り「入門 Kubernetes Validating/Mutating Admission Policy」 / CloudNative Days Winter 2024
pfn
PRO
1
150
Featured
See All Featured
Fireside Chat
paigeccino
34
3.1k
Into the Great Unknown - MozCon
thekraken
33
1.5k
KATA
mclloyd
29
14k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
RailsConf 2023
tenderlove
29
920
We Have a Design System, Now What?
morganepeng
51
7.3k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
4 Signs Your Business is Dying
shpigford
181
21k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Become a Pro
speakerdeck
PRO
25
5k
Designing for Performance
lara
604
68k
A Modern Web Designer's Workflow
chriscoyier
693
190k
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回ほど繰り返し、認識精度からハ イパーパラメータの範囲を狭める