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.5k
JSTQB Advanced Level 模擬問題作成方法 / methodology to questions creation for JSTQB advanced level
dproject21
3
1.4k
試験に絶対出ない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
180
TDD applied Data Cleansing
dproject21
0
1.8k
Data preprocessing for MachineLearning/BI by Golang and MySQL UDF
dproject21
1
890
高精度名寄せシステムを支える テキスト処理 (の、ほんのさわり)
dproject21
3
2.5k
ゼロから作るDeepLearning 第7章前半ざっくりまとめ
dproject21
0
1k
ゼロから作るDeepLearning 第5章 誤差逆伝播法による重み更新を追ってみる
dproject21
0
1.1k
Other Decks in Technology
See All in Technology
ソフトウェア開発現代史: なぜ日本のソフトウェア開発は「滝」なのか?製造業の成功体験とのギャップ #jassttokyo
takabow
2
1.5k
製造業の会計システムをDDDで開発した話
caddi_eng
3
940
AIエージェント完全に理解した
segavvy
4
260
スケールアップ企業のQA組織のバリューを最大限に引き出すための取り組み
tarappo
4
920
Cloud Native PG 使ってみて気づいたことと最新機能の紹介 - 第52回PostgreSQLアンカンファレンス
seinoyu
1
180
Amazon EKS Auto ModeでKubernetesの運用をシンプルにする
sshota0809
0
110
LINE API Deep Dive Q1 2025: Unlocking New Possibilities
linedevth
1
160
17年のQA経験が導いたスクラムマスターへの道 / 17 Years in QA to Scrum Master
toma_sm
0
380
頻繁リリース × 高品質 = 無理ゲー? いや、できます!/20250306 Shoki Hyo
shift_evolve
0
150
Dapr For Java Developers SouJava 25
salaboy
1
130
3/26 クラウド食堂LT #2 GenU案件を通して学んだ教訓 登壇資料
ymae
1
200
Proxmox VE超入門 〜 無料で作れるご自宅仮想化プラットフォームブックマークする
devops_vtj
0
120
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.2k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
RailsConf 2023
tenderlove
29
1k
Writing Fast Ruby
sferik
628
61k
Docker and Python
trallard
44
3.3k
How to train your dragon (web standard)
notwaldorf
91
5.9k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
How STYLIGHT went responsive
nonsquared
99
5.4k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
We Have a Design System, Now What?
morganepeng
51
7.5k
It's Worth the Effort
3n
184
28k
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回ほど繰り返し、認識精度からハ イパーパラメータの範囲を狭める