Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ゼロから作るDeepLearning 第6章ざっくりまとめ
Search
dproject21
February 06, 2017
Technology
1.5k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ゼロから作るDeepLearning 第6章ざっくりまとめ
「ゼロから作るDeepLearning」もくもく読書会の事前資料です。
https://deeplearning-yokohama.connpass.com/event/49840/
dproject21
February 06, 2017
More Decks by dproject21
See All by dproject21
ISTQB/JSTQBシラバスから学ぶAgileTesting / A guide of agile testing based on ISTQB syllabus
dproject21
4
4.1k
JSTQB Advanced Level 模擬問題作成方法 / methodology to questions creation for JSTQB advanced level
dproject21
3
1.6k
試験に絶対出ないJSTQB AL TA,TM問題 / Questions that will never be given on the exam of JSTQB advanced level
dproject21
0
1.6k
The official zip code book is terrible. And what should I do with the address you wrote.
dproject21
0
250
TDD applied Data Cleansing
dproject21
0
2k
Data preprocessing for MachineLearning/BI by Golang and MySQL UDF
dproject21
1
1k
高精度名寄せシステムを支える テキスト処理 (の、ほんのさわり)
dproject21
3
2.7k
ゼロから作るDeepLearning 第7章前半ざっくりまとめ
dproject21
0
1.1k
ゼロから作るDeepLearning 第5章 誤差逆伝播法による重み更新を追ってみる
dproject21
0
1.3k
Other Decks in Technology
See All in Technology
日経電子版を支えていく Kasane Design System/fec_fukuoka
nikkei_engineer_recruiting
0
1.6k
技術的負債から考える、AI時代のエンジニアリング投資 — ビズリーチの技術的負債と向き合った経験から、変更し続けられるソフトウェアを考える/ technical-debt-con2026
visional_engineering_and_design
3
3k
安心して変更できるWebフロントエンドの作り方
pirosikick
5
2.6k
銀行勘定系システムにおける開発プロセス刷新×AIによる環境モダナイゼーション / Development Process Transformation and AI-Driven Environment Modernization
muit
0
2.2k
Spring BootからQuarkusへの移行
tatsuya1bm
2
120
AIエージェントを最高のパートナーに育てる方法|評価と判断軸を育てる5つのステップ
koichiaoki
1
120
積み重なった技術負債への挑戦 〜初手としての全社ゴト化〜
techtekt
PRO
0
1.3k
データ_AIの事業の勝敗をわけるもの
nek0128
0
380
山手線を徒歩で一周してわかった、 位置情報アプリは「足」が最強のデバッガー
hinakko
0
160
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
830
AI に書かせたその API、 “信頼” できますか?
nagix
0
110
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
1
1.6k
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
540
Utilizing Notion as your number one productivity tool
mfonobong
4
590
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.9k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
600
sira's awesome portfolio website redesign presentation
elsirapls
0
410
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
460
GitHub's CSS Performance
jonrohan
1033
470k
Discover your Explorer Soul
emna__ayadi
2
1.3k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
690
Code Review Best Practice
trishagee
74
20k
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回ほど繰り返し、認識精度からハ イパーパラメータの範囲を狭める