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
DLfromScratch4
Search
Minemichi
May 22, 2018
Programming
84
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
DLfromScratch4
the Summary for DLfromScratch4.
Minemichi
May 22, 2018
More Decks by Minemichi
See All by Minemichi
update-directionOfPreactivationInSoftmax
minemichi
0
87
RelationsOfTheCost
minemichi
0
78
Other Decks in Programming
See All in Programming
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
2
690
Simple Storage Service(S3) is not simple
iwatsukayura
0
290
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
790
AmebaブログはKMPから卒業します
kmars0605
0
190
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
0
210
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
500
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
190
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
350
すこし踏み込む CancellationToken
htkym
2
1.7k
Web Framework Benchmark Battle 2026, Any%
a_matsuda
2
2.1k
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
5
3.6k
パスワード再設定メールのURLについて知っておこう
uyuki234
0
160
Featured
See All Featured
Building an army of robots
kneath
307
47k
Raft: Consensus for Rubyists
vanstee
142
7.8k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
220
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Become a Pro
speakerdeck
PRO
31
6.3k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
The Language of Interfaces
destraynor
162
27k
A Soul's Torment
seathinner
8
3.8k
Designing Experiences People Love
moore
143
24k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Transcript
ゼロから作るディー プラー ニング 4 章 ニュー ラルネット( 以下NN) の学習 @2018
minemichi 1
デー タから学習する @2018 minemichi 2
NN は、 パー セプトロンのパラメー タをデー タから 自動的に決定できる デー タ駆動 デー
タから自動的に答えを求めたい! 特微量 入力から本質を抽出する変換器 特微量は基本的にベクトル SHIFT、SURF、HOG などなど デー タを特微量によってベクトルに変換し、 機械 学習の識別機(SVM、KNN) で学習させたらよさげ 結局、 特微量は人が作らないといけないじゃん…… @2018 minemichi 3
特微量を考える必要すらなく デー タから直接学習できるのがNN! 全ての問題を同じ流れで解くことができる 問題に関係なく、 生デー タによるend-to-end 学習 @2018 minemichi
4
訓練デー タとテストデー タ 過学習 特定のデー タにしか対応できていない状態 事前に与えられた問題だけ解けても嬉しくない 加算のプログラムなのに3+3 しか解けない…… 未知なるデー
タを用意して汎用性チェック! @2018 minemichi 5
損失関数 @2018 minemichi 6
損失関数ってなに? NN 学習で用いられる指標 NN の性能の悪さを示す 有名なのは2 乗和誤差や交差エントロピー 誤差 @2018 minemichi
7
2 乗和誤差 E = (y − t ) 出力 y
= [0.1, 0.5, 0.4] 正解 t = [0, 1, 0] 実際のデー タと教師デー タの差 絶対値で計測するために2 乗している は、 微分した時に登場する係数を相殺するため 2 1 k ∑ k k 2 k k 2 1 @2018 minemichi 8
交差エントロピー 誤差 E = − t log y 正解ラベルに対して出した判定( 確率)
そのlog をとっている delta=le-7 #log0 でマイナス無限大になるのを防ぐ微小な値 return -np.sum(t*np.log(y+delta)) k ∑ k k @2018 minemichi 9
ミニバッチ学習 すべての訓練デー タに対する損失関数を求め 総和が小さくなるようにしたい 例えば交差エントロピー 誤差の場合 E = − t
log y 損失関数の平均を出したいから をかける 損失関数をすべて求める時間はない バッチの一部分( ミニバッチ) で全体の近似を取ろう np.random.choice(num1,num2) 0~num1 までの間から num2 個の数字をランダムに取り出し、 配列とする N 1 n ∑ k ∑ nk nk N 1 @2018 minemichi 10
[ バッチ対応版] 交差エントロピー 誤差の実装 デー タがひとつの場合と、 バッチの場合 分けて考える def cross_entropy_error(y,t):
if y.ndim == 1: t = t.reshape(1,t.size) y = y.reshape(1,y.size) batch_size = y.shape[0] return -np.sum(t*np.log(y))/batch_size one-hot 表現でない場合 return -np.sum(np.log(y[np.arange(batch_size), t])) / batch_size @2018 minemichi 11
なぜ損失関数を設定するのか? 微分の概念を後々 に使うことになるから 認識精度 判定が当たった数 認識精度を指標にする 認識精度は不連続な値 パラメー ター の微分がほとんどの場所で0
になる ステップ関数に関しても同じことが言える だからNN でステップ関数は使われない @2018 minemichi 12
数値微分 @2018 minemichi 13
NN のパラメー タ自動決定には勾配法が用いられる 勾配法の理解には微分の理解が不可欠 微分 = 要素が微小な変化をした時の、 全体の瞬間変化量 極限の代わりに実数値を代入 数値微分
数値微分では、 前方差分(x + h) − x の代わりに 中心差分(x + h) − (x − h) を求めるとよい 実数値は丸め誤差との折衷案で10 程度が適当 dx df(x) h→0 lim h f(x + h) − f(x) −4 @2018 minemichi 14
偏微分 変数が複数存在する関数に対する たった1つの変数をター ゲットとした微分 ター ゲット以外の変数は定数として扱う その他は微分と同じ ∂x0 ∂f @2018
minemichi 15
勾配 @2018 minemichi 16
( , ) 勾配 すべての変数に対する偏微分をベクトルとしてま とめたもの np.zeros_like(x) 同じ形状の配列を生成 np.meshgrid(x0, x1)
2 次元グリッド ∂x0 ∂f ∂x1 ∂f @2018 minemichi 17
勾配法 x = x − η 微分で求めた傾きに従い 損失関数が小さくなる方向に動かす η は学習率と呼ばれるもの
勾配法一回につき変化させるパラメー タの大きさ η は大きすぎても小さすぎてもいけない ニュー ラルネットワー クに対する勾配 f = lambda w: net.loss(x, t) 引数w の関数f を定義 0 0 ∂x0 ∂f @2018 minemichi 18
学習アルゴリズムの実装 step1 訓練デー タからミニバッチを取り出す step2 勾配を計算 各重みに関する損失関数の微分 step3 重みパラメー タを更新
step4 繰り返す @2018 minemichi 19
テストデー タで評価 学習を繰り返すことで損失関数の値は減少する しかし、 それは学習で用いたミニバッチに対して テストデー タでも同様の結果が得られるか確認 1 エポック 訓練デー
タを使い切るまでの学習動作 ミニバッチが100、 訓練デー タが10000 の場合 100 回すと1 エポック @2018 minemichi 20
本章のまとめ @2018 minemichi 21
間違いの度合いを表す損失関数でNN の精度を見る 学習とは 損失関数が小さくなるようにパラメー タを更新す ること パラメー タの更新方向を偏微分によって求める 数値微分で頑張ってもいいけど 時間がかかりすぎるので、
誤差逆伝播、 しよう @2018 minemichi 22