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
機械学習 - ニューラルネットワーク
Search
Y. Yamamoto
PRO
June 05, 2023
Technology
0
640
機械学習 - ニューラルネットワーク
1. パーセプトロン
2. 多層パーセプトロン
3. 勾配法
Y. Yamamoto
PRO
June 05, 2023
Tweet
Share
More Decks by Y. Yamamoto
See All by Y. Yamamoto
ビッグデータ × AI = DX?
trycycle
PRO
0
530
名古屋市立大学データサイエンス学部 秋のオープンキャンパス模擬授業20231111
trycycle
PRO
0
8.2k
データサイエンス入門 - ビッグデータとAI
trycycle
PRO
0
660
2022年度データアナリティクスII-第4回-20220502
trycycle
PRO
0
430
2022年度データアナリティクスII-第3回-20220425
trycycle
PRO
0
330
2022年度データアナリティクスII-第2回-20220418
trycycle
PRO
0
570
2022年度データアナリティクスII-第1回-20220411
trycycle
PRO
0
400
2017年度-若手研究B-研究計画調書
trycycle
PRO
1
1.9k
2018年度-基盤研究C-特設分野-研究計画調書
trycycle
PRO
1
3.2k
Other Decks in Technology
See All in Technology
17年のQA経験が導いたスクラムマスターへの道 / 17 Years in QA to Scrum Master
toma_sm
0
380
React Server Componentは 何を解決し何を解決しないのか / What do React Server Components solve, and what do they not solve?
kaminashi
6
1.2k
頻繁リリース × 高品質 = 無理ゲー? いや、できます!/20250306 Shoki Hyo
shift_evolve
0
150
Why Go?
xpmatteo
0
130
ソフトウェアプロジェクトの成功率が上がらない原因-「社会価値を考える」ということ-
ytanaka5569
0
120
20250326_管理ツールの権限管理で改善したこと
sasata299
1
350
アプリケーション固有の「ロジックの脆弱性」を防ぐ開発者のためのセキュリティ観点
flatt_security
7
2.7k
KCD Brazil '25: Enabling Developers with Dapr & Backstage
salaboy
1
120
移行できそうでやりきれなかった 10年超えのシステムを葬るための戦略 / phper-kaigi-2025-ryu
carta_engineering
0
680
3/26 クラウド食堂LT #2 GenU案件を通して学んだ教訓 登壇資料
ymae
1
190
PostgreSQL Unconference #52 pg_tde
nori_shinoda
0
190
30代エンジニアが考える、エンジニア生存戦略~~セキュリティを添えて~~
masakiokuda
4
2k
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
470
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
Why Our Code Smells
bkeepers
PRO
336
57k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.4k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.5k
Building an army of robots
kneath
304
45k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7.1k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Optimizing for Happiness
mojombo
377
70k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
7
610
Measuring & Analyzing Core Web Vitals
bluesmoon
6
320
Transcript
分類問題3: ニューラルネットワーク入門 ⼭本 祐輔 名古屋市⽴⼤学 データサイエンス研究科
[email protected]
第8回 機械学習発展(導入編)
講義のトピック 機械学習 教師あり学習 教師なし学習 強化学習 ・クラスタリング ・データ圧縮 ・分類 ・回帰 …
… 3 行動情報学科に 特有の応用手法 ・K近傍法 ・サポートベクタマシン ・ニューラルネットワーク
K-近傍法(k-NN: k nearest neighbor)のアイデア 4 対象データまでの距離が最も近いK個のデータの ラベルのうち、最も多いラベルに分類する ? K=5:⻘ K=3:緑
K=1:⻘ 多 数 決
サポートベクター (直線に最も近い点) サポートベクターマシンのアイデア X 0 Y マージンを最大化する超平面を見つける (分類境界とサポートベクターの距離) 𝑓(𝒙) =
0 サポートベクター (直線に最も近い点) 5
教師あり学習のための機械学習アルゴリズムの分類 6 ロジスティック回帰 ナイーブベイズ サポートベクターマシン K近傍法 ランダムフォレスト & 決定木 ニューラルネットワーク
訓練データをすべて記憶して おき,それら全部を使って 予測を⾏う(推論計算が遅い) 訓練データの背後にあるモデル を抽出し,それを予測時に使う (推論計算は速い) インスタンスベース モデルベース 本⽇学ぶのはコレ
教師あり学習の歴史(⼀部抜粋) ロジスティック回帰 サポートベクターマシン 決定木 パーセプトロン 単純ベイズ分類器 ランダムフォレスト k-近傍法 ベイジアンネットワーク 深層学習
1958年 1957年 1951年 1979年 1985年 1992年 1960年代 2001年 2010年代 7
教師あり学習の歴史(⼀部抜粋) ロジスティック回帰 サポートベクターマシン 決定木 単純ベイズ分類器 ランダムフォレスト k-近傍法 ベイジアンネットワーク 1958年 1957年
1951年 1979年 1985年 1992年 1960年代 2001年 2010年代 8 パーセプトロン 深層学習 多層パーセプトロン
1 ニューラルネットワークの最小単位 パーセプトロン 9
機械学習の2クラス分類問題とは(1/2) •と×のデータ集合が与えられたときに, 未知のN次元データが•か×をどう予測する? Q. X 0 Y ? ▲ ?
▲ 10
機械学習の2クラス分類問題とは(2/2) •と×のデータを2分するような超平面を見つける A. X 0 Y ? ▲ ? ▲
ax+by+c=0 直線より下側なら「•」 直線より上側なら「×」 11
2クラス分類問題に対する素朴なアプローチ (2次元バージョン) 12 ⼊⼒ 𝒙 = 𝑥! , 𝑥" が与えられたとき
関数 𝑓 𝒙 = 𝑤! 𝑥! + 𝑤" 𝑥" + 𝑤# について ・𝑓 𝒙 > 0 ならば 1 に分類(×) ・𝑓 𝒙 ≤ 0 ならば -1 に分類(•) (上記はstep(𝑓 𝒙 )と書くことも可)
2クラス分類問題に対する素朴なアプローチ(N次元バージョン) 13 ⼊⼒ 𝒙 = 𝑥! , 𝑥" , …
, 𝑥$ が与えられたとき 𝑓 𝒙 = 𝑤! 𝑥! + 𝑤" 𝑥" + ⋯ + 𝑤# = 𝒘%𝒙 について ・𝑓 𝒙 > 0 ならば 1 に分類(×) ・𝑓 𝒙 ≤ 0 ならば -1 に分類(•) 学習データを使って関数 f(x) をどう見つけるか? (上記はstep(𝑓 𝒙 )と書くことも可)
サポートベクター (直線に最も近い点) 関数f(x)の⾒つけ⽅: サポートベクターマシン編 X 0 Y マージンを最大化する超平面を見つける (分類境界とサポートベクターの距離) 𝑓(𝒙)
= 0 サポートベクター (直線に最も近い点) 14
関数f(x)の別の⾒つけ⽅:損失関数の最⼩化 15 訓練データを使って予測したときに 予測と実際の値との誤差が最小になるf(x)を見つける 訓練データ 𝐷 = (𝒙! , 𝑦!
, 𝒙" , 𝑦" , … , (𝒙& , 𝑦& )} 1個⽬のデータの特徴量 1個⽬のデータの正解ラベル 損失関数 𝐿 𝐷 = 1 '(! & 𝑔(𝑦' , 𝑓(𝒙' )) データ1個に関する誤差を評価 例: 𝐿 𝐷 = , |実際の得点i君 ‒ 予測得点 i君 |
関数f(x)の別の⾒つけ⽅:損失関数の最⼩化 16 訓練データを使って予測したときに 予測と実際の値との誤差が最小になるf(x)を見つける 訓練データ 𝐷 = (𝒙! , 𝑦!
, 𝒙" , 𝑦" , … , (𝒙& , 𝑦& )} 損失関数 𝐿 𝐷 = 1 '(! & 𝑔(𝑦' , 𝑓(𝒙' )) = 1 '(! & 𝑔(𝑦' , 𝒘%𝒙' ) 誤差の総和に着⽬ パーセプトロンもこの流派
パーセプトロン:2クラス分類問題を解く線形分類器(1/2) 17 推論フェーズ ⼊⼒ 𝒙 = 𝑥! , 𝑥" ,
… , 𝑥# が与えられたとき 𝑓 𝒙 = 𝑤# 𝑥# + 𝑤#$! 𝑥#$! + ⋯ + 𝑤% = 𝒘&𝒙 について ・𝑓 𝒙 > 0 ならば 1 に分類 ・𝑓 𝒙 ≤ 0 ならば -1 に分類 Σ x1 xn 1 … ×w0 ×w1 ×wn step(・) 1 or -1
パーセプトロン:2クラス分類問題を解く線形分類器(2/2) 18 学習フェーズ 𝐿 𝐷 = 0 '(! ) 𝑔(𝑦'
, 𝑓(𝒙' )) = 0 '(! ) max(0, −𝑦' 𝒘&𝒙' ) 訓練データ 𝐷 = (𝒙) , 𝑦) , …, (𝒙* , 𝑦* )}について 以下の損失関数が最⼩となるパラメータwを⾒つける. 予測が正しかったら罰則なし. 外れていたら −𝑓(𝒙! )だけ 損失が出たと考える 損失関数は微分最⼩化がお約束 予測が当たっている場合, 必ずゼロ以上になる
パーセプトロンのパラメータ最適化(パーセプトロンの学習則) Step 1 予測関数 f (x) の重み w をランダムに設定 Step
2 訓練データDからデータ(x, y)をランダムに1個取得し 関数 f (x) を使ってラベルを予想 Step 3 ステップ2の予測が正解ラベル y と⼀致しない場合 以下の式を⽤いて重み w を更新(𝜂は学習率) 𝒘 ← 𝒘 + 𝜂𝑦𝒙 Step 4 ある程度の回数だけ Step2-3を繰り返す 19 損失関数を微分最⼩化で 得られた重みの更新式
パーセプトロンの学習の例(1/7) 20 and viagra the of nigeria y v1 1
1 0 1 1 +1 v2 0 0 1 1 0 -1 v3 0 1 1 0 0 +1 v4 1 0 0 1 0 -1 v5 1 0 1 0 1 +1 v6 1 0 1 1 0 -1 メールに出現する単語の情報と迷惑メールラベル 学習率 𝜂 = ! " 重みの初期値 𝒘 = (0,0,0,0,0)
パーセプトロンの学習の例(2/7) 21 and viagra the of nigeria y v1 1
1 0 1 1 +1 v2 0 0 1 1 0 -1 v3 0 1 1 0 0 +1 v4 1 0 0 1 0 -1 v5 1 0 1 0 1 +1 v6 1 0 1 1 0 -1 メールに出現する単語の情報と迷惑メールラベル v1 に対する予測(正解は+1) 予測関数の値 𝒘𝑻𝒗! = 0 𝒘 ← 𝒘 + 1 2 +1 𝒗! = 0,0,0,0,0 + 1 2 , 1 2 , 0, 1 2 , 1 2 = (! " , ! " , 0, ! " , ! " ) 0より⼤きくないので予測間違い (パラメータ更新へ)
パーセプトロンの学習の例(3/7) 22 and viagra the of nigeria y v1 1
1 0 1 1 +1 v2 0 0 1 1 0 -1 v3 0 1 1 0 0 +1 v4 1 0 0 1 0 -1 v5 1 0 1 0 1 +1 v6 1 0 1 1 0 -1 メールに出現する単語の情報と迷惑メールラベル v2 に対する予測(正解は-1) 予測値 𝒘𝑻𝒗" = ! " , ! " , 0, ! " , ! " % 0,0,1,1,0 = ! " 𝒘 ← 𝒘 + 1 2 −1 𝒗" = 1 2 , 1 2 , 0, 1 2 , 1 2 − 0,0, 1 2 , 1 2 , 0 = (! " , ! " , − ! " , 0, ! " ) 0より⼩さくないので予測間違い (パラメータ更新へ)
パーセプトロンの学習の例(4/7) 23 and viagra the of nigeria y v1 1
1 0 1 1 +1 v2 0 0 1 1 0 -1 v3 0 1 1 0 0 +1 v4 1 0 0 1 0 -1 v5 1 0 1 0 1 +1 v6 1 0 1 1 0 -1 メールに出現する単語の情報と迷惑メールラベル v3に対する予測(正解は+1) 予測値 𝒘𝑻𝒗/ = ! " , ! " , − ! " , 0, ! " % 0,1,1,0,0 = 0 𝒘 ← 𝒘 + 1 2 +1 𝒗* = 1 2 , 1 2 , − 1 2 , 0, 1 2 + 0, 1 2 , 1 2 , 0,0 = (! " , 1,0,0, ! " ) 0より⼤きくないので予測間違い (パラメータ更新へ)
パーセプトロンの学習の例(5/7) 24 and viagra the of nigeria y v4 1
0 0 1 0 -1 v5 1 0 1 0 1 +1 v6 1 0 1 1 0 -1 メールに出現する単語の情報と迷惑メールラベル v4に対する予測(正解は-1) 予測値 𝒘𝑻𝒗0 = ! " , 1,0,0, ! " % 1,0,0,1,0 = ! " 𝒘 ← 𝒘 + 1 2 −1 𝒗+ = 1 2 , 1,0,0, 1 2 − 1 2 , 0,0, 1 2 , 0 = (0,1,0, − ! " , ! " ) 0より⼩さくないので予測間違い (パラメータ更新へ)
パーセプトロンの学習の例(6/7) 25 and viagra the of nigeria y v4 1
0 0 1 0 -1 v5 1 0 1 0 1 +1 v6 1 0 1 1 0 -1 メールに出現する単語の情報と迷惑メールラベル v5に対する予測(正解は+1) 予測値 𝒘𝑻𝒗" = 0,1,0, − # $ , # $ % 1,0,1,0,1 = # $ 0より⼤きいので予測は正しい (パラメータは更新しない)
パーセプトロンの学習の例(7/7) 26 and viagra the of nigeria y v4 1
0 0 1 0 -1 v5 1 0 1 0 1 +1 v6 1 0 1 1 0 -1 メールに出現する単語の情報と迷惑メールラベル v6に対する予測(正解は-1) 予測値 𝒘𝑻𝒗& = 0,1,0, − # $ , # $ % 1,0,1,1,0 = − # $ 0より⼩さいので予測は正しい (パラメータは更新しない) これ以上学習しても パラメータは変化せず 最終的な予測関数 𝒘𝑻𝒙 = 0,1,0, − 1 2 , 1 2 % 𝒙
パーセプトロンの限界 27 X 0 Y x1 xn 1 … ×w0
×w1 ×wn Σ step(・) 1 or -1 ・単層パーセプトロンは線形分離可能な場合しか学習できない ・パーセプトロンを多層化すれば⾮線形問題も扱えるが、 パーセプトロンの学習則はパラメータをうまく学習できない 第1次ニューラルネットワークブームは終焉へ
Neural Network Playgroundでパーセプトロンを体験 28 https://playground.tensorflow.org/
2 第2次ニューラルネットワークブーム パーセプトロンの多層化 29
パーセプトロンの限界の克服:⾮線形問題への対応 30 x1 xi 1 … xn-1 xn … z
×w10 ×w11 ×w1i ×w1n step(・) リマインダ ・𝑥 > 0 ならば 1 ・𝑥 ≤ 0 ならば-1 step 𝑥 = 𝑓 𝒙 = step(𝒘!𝒙) ネットワークを 関数で表現すると
パーセプトロンの限界の克服:⾮線形問題への対応 31 x1 xi 1 … xn-1 xn … ネットワークの多層化
・データの特徴を段階的に深く学習 ・モデルの表現⼒の向上 可微分で非線形な活性化関数の導入 ・逆伝播法による最適化が可能に(後述) 𝑧! (!) 𝑧$ (!) 𝑧% (!) 𝑧! ($) ・各層の出⼒に⾮線形関数をかますことで ⼊出⼒の⼤⼩関係の⼊れ替えが可能に
パーセプトロンの限界の克服:⾮線形問題への対応 32 x1 xi 1 … xn-1 xn … Sigmoid
(・) Sigmoid (・) ネットワークの多層化 ・データの特徴を段階的に深く学習 ・モデルの表現⼒の向上 可微分で非線形な活性化関数の導入 𝑧! (!) 𝑧$ (!) 𝑧% (!) 𝑧! ($) ・各層の出⼒に⾮線形関数をかますことで ⼊出⼒の⼤⼩関係の⼊れ替えが可能に ・逆伝播法による最適化が可能に(後述) 線形関数を単純に組み合わせても線形しか表現できない
パーセプトロンの限界の克服:⾮線形問題への対応 33 x1 xi 1 … xn-1 xn … z
×w10 ×w11 ×w1i ×w1n step(・) リマインダ ・𝑥 > 0 ならば 1 ・𝑥 ≤ 0 ならば 0 step 𝑥 = 微分不可能な 活性化関数 𝑓 𝒙 = step(𝒘!𝒙) ネットワークを 関数で表現すると
パーセプトロンの限界の克服:⾮線形問題への対応 34 x1 xi 1 … xn-1 xn … ネットワークの多層化
・データの特徴を段階的に深く学習 ・モデルの表現⼒の向上 可微分で非線形な活性化関数の導入 𝑧! (!) 𝑧$ (!) 𝑧% (!) 𝑧! ($) Sigmoid (・) Sigmoid (・) ・逆伝播法による最適化が可能に(後述) ・各層の出⼒に⾮線形関数をかますことで ⼊出⼒の⼤⼩関係の⼊れ替えが可能に
可微分で⾮線形な活性化関数(1/2) 35 𝑓 𝑥 = 1 1 + exp(−𝑥) シグモイド関数
𝑓 𝑥 = max(0, 𝑥) ReLU(ランプ関数) ・値域が[-1, 1]となるため確率 と 対応させて使う ・その昔は中間層で頻繁に利⽤ ・深層学習の中間層で頻繁に利⽤ ・シンプルなので計算が速い ・0以上の範囲では微分可能
可微分で⾮線形な活性化関数(2/2) 36 𝑓 𝑢@ = 𝑒A! ∑'(! B 𝑒A" ソフトマックス関数
例 ・K種類あるクラスのうち,出⼒がクラスkに属する確率 ・深層学習で分類問題を⾏うときの出⼒層で利⽤ ・⼊⼒がマイナスでも常に正の値に返せる 𝒖! = (10,2,1)のとき 𝑓"#$%&'( 𝑢) = 0.9995 𝑓"#$%&'( 𝑢* = 0.0003 𝑓"#$%&'( 𝑢+ = 0.0001 ・指数関数を噛ましているので,⼊⼒が⼤きい場合と ⼩さい場合の区別がはっきりする 活性化関数は出⼒の調整に使う
可微分でない or ⾮線形な活性化関数 37 𝑓 𝑥 = C 1 𝑖𝑓
𝑥 > 0 0 𝑖𝑓 𝑥 ≤ 0 ステップ関数 ・かつてパーセプトロンの 出⼒層で使⽤された ・⾮線形だが微分不可能 𝑓 𝑥 = 𝑥 恒等関数 ・ど線形 ・回帰問題の出⼒層で利⽤
多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(1/6) 38 x1 xi 1 … xn …
1層⽬ (隠れ層) 2層⽬ (出⼒層) ⼊⼒層 1層⽬の活性化関数 𝜙" 𝑥 (例: 𝜙" 𝑥 = ReLU(𝑥)) 2層⽬の活性化関数 𝜙# 𝑥 (例: 𝜙# 𝑥 = " "$%&'()*) ) 定義したネットワーク & 活性化関数に従い, ⼊⼒層から出⼒層まで順に値を波及させる y1 𝑧! (!) 𝑧$ (!) 𝑧% (!) 例
多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(2/6) 39 x1 xi 1 … xn …
z21 1層⽬ (隠れ層) 2層⽬ (出⼒層) ⼊⼒層 ×w10 (1) ×w11 (1) ×w1n (1) ×w1i (1) 定義したネットワーク & 活性化関数に従い, ⼊⼒層から出⼒層まで順に値を波及させる 𝑧! (!) 𝑧$ (!) 𝑧% (!) 𝑧! (!) = 𝜙(!) , $%& ' 𝑤!$ ! 𝑥$ = 𝜙(!)(𝑢! (!) )
多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(3/6) 40 x1 xi 1 … xn …
𝑧! (!) 1層⽬ (隠れ層) 2層⽬ (出⼒層) ⼊⼒層 ×w20 (1) ×w21 (1) ×w2n (1) ×w2i (1) 𝑧( (!) = 𝜙(!) , $%& ' 𝑤 ($ ! 𝑥$ = 𝜙(!)(𝑢( (!)) y1 𝑧$ (!) 𝑧% (!) 定義したネットワーク & 活性化関数に従い, ⼊⼒層から出⼒層まで順に値を波及させる
多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(4/6) 41 x1 xi 1 … xn …
1層⽬ (隠れ層) 2層⽬ (出⼒層) ⼊⼒層 ×w30 (1) ×w31 (1) ×w3n (1) ×w3i (1) 定義したネットワーク & 活性化関数に従い, ⼊⼒層から出⼒層まで順に値を波及させる y1 𝑧! (!) 𝑧$ (!) 𝑧% (!) 𝑧) (!) = 𝜙(!) , $%& ' 𝑤 )$ ! 𝑥$ = 𝜙(!)(𝑢 ) (!))
多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(5/6) 42 x1 xi 1 … xn …
1層⽬ (隠れ層) 2層⽬ (出⼒層) ⼊⼒層 ×w11 (2) ×w12 (2) ×w13 (2) 𝑦! = 𝜙(()(, $%! ) 𝑤 !$ (()𝑧 $ (!)) 定義したネットワーク & 活性化関数に従い, ⼊⼒層から出⼒層まで順に値を波及させる y1 𝑧! (!) 𝑧$ (!) 𝑧% (!)
多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(6/6) 43 定義したネットワーク & 活性化関数に従い, ⼊⼒層から出⼒層まで順に値を波及させる x1 xi
1 … xn … y1 2層⽬ (出⼒層) ⼊⼒層 𝑦! = 1 1 + exp(− ∑ $%! ) 𝑤 !$ (() 𝑧 $ (!) ) 分類問題なら出⼒層が最⼤となるクラスを選択 2クラス分類の場合 𝑧! (!) 𝑧$ (!) 𝑧% (!)
MLPを別の視点から⾒る(1/2) 44 x1 xi 1 … xn … z21 1層⽬
(隠れ層) 2層⽬ (出⼒層) ⼊⼒層 ×w10 (1) ×w11 (1) ×w1n (1) ×w1i (1) 𝑧! (!) 𝑧$ (!) 𝑧% (!) 𝑧! (!) = 𝜙(!) , $%& ' 𝑤 !$ ! 𝑥$ = 1 1 + exp(− ∑ $%& ' 𝑤 !$ ! 𝑥$ ) 活性化関数に シグモイド関数 あるノードでの⼊出⼒処理はロジスティック回帰 どこかで ⾒たことある形!? 画像出典: https://cvml-expertguide.net/2021/09/28/logistic-regression/
MLPを別の視点から⾒る(2/2) 45 出⼒層 中間層(隠れ層) ⼊⼒層 … … … …… …
… … … … … … …… … …… (ざっくり言うと)ニューラルネットワークは ロジスティック回帰モデルのつなぎ合わせ ロジスティック回帰モデル ロジスティック回帰モデル ロジスティック回帰モデル ロジスティック回帰モデル
隠れ層(中間層)の役割 46 出⼒層 中間層(隠れ層) ⼊⼒層 … … … …… …
… … … … … … …… … …… 推論に有用な表現を入力データから自動抽出 時間・空間計算量がUPするが中間層が⼤きいほど表現⼒はUP
中間層の役割の例1 47 出⼒層 ⼊⼒層 … … … …… … …
… … … …… メジャー で成功する? 打率 本塁打 盗塁数 得点 中間層(隠れ層)
中間層の役割の例1 48 … … … …… … … … …
… …… 打率 本塁打 盗塁数 得点 パワー系要素 スピード系要素 技術系要素 攻撃貢献度 守備貢献度 精神貢献度 ⼊⼒を推論に有⽤な特徴量に変換していく メジャー で成功する?
中間層の役割の例2:ネオコグニトロン(CNNの初期モデル) 49 画像出典: https://dbnst.nii.ac.jp/pro/detail/498 ⼈間が苦労して特徴量抽出を⾏う必要がない
多層パーセプトロンによる「学習」(1/3) 𝐿 𝐷, W = 0 '(! ) 𝑔(𝑦' ,
𝑓(𝒙' )) 訓練データ 𝐷 = (𝒙) , 𝑦) , …, (𝒙* , 𝑦* )}について 損失関数が最⼩となるパラメータWを⾒つける. ニューラルネットワーク f(x) の全パラメータ = 1 2 0 '(! ) 𝑦' − 𝑓 𝒙' " 回帰問題の損失関数 誤差の⼆乗 50
多層パーセプトロンによる「学習」(2/3) 51 訓練データ 𝐷 = (𝒙) , 𝑦) , …,
(𝒙* , 𝑦* )}について 損失関数が最⼩となるパラメータWを⾒つける. ニューラルネットワーク f(x) の全パラメータ = 5 ,-) . 5 /-) 0 {−𝑝/-1* log 𝑓/ 𝒙2 } 𝐿 𝐷, W = 0 '(! ) 𝑔(𝑦' , 𝑓(𝒙' )) 分類問題の損失関数 クロスエントロピー (複数の確率分布の近さを測る指標) 出⼒層でk番⽬のクラスに 対応する出⼒ 参考: https://zeema.hatenablog.com/entry/2017/11/09/223026
多層パーセプトロンによる「学習」(3/3) 52 訓練データ 𝐷 = (𝒙) , 𝑦) , …,
(𝒙* , 𝑦* )}について 損失関数が最⼩となるパラメータWを⾒つける. 損失関数は微分最⼩化がお約束 ニューラルネットワーク f(x) の全パラメータ 𝐿 𝐷, W = 1 $(! & 1 @(! B {−𝑝@(N" log 𝑓@ 𝒙' } 分類問題の損失関数 𝐿 𝐷, W = 1 2 0 '(! ) 𝑦' − 𝑓 𝒙' " 回帰問題の損失関数
損失関数を微分最⼩化するとは? 53 x1 xi 1 … xk … L-1層⽬ (隠れ層)
⼊⼒層 𝑧! (!) 𝑧$ (!) 𝑧& (!) 𝑧' (!) … … 𝑧! (()!) 𝑧$ (()!) 𝑧 & (()!) 𝑧' (()!) … … 𝑧! (() 𝑧& (() 𝑧* (() … … …… …… …… …… 1層⽬ (隠れ層) L層⽬ (出⼒層)
損失関数を微分最⼩化するとは? 54 x1 xi 1 … xk … L-1層⽬ (隠れ層)
⼊⼒層 𝑧! (!) 𝑧$ (!) 𝑧& (!) 𝑧' (!) … … 𝑧! (()!) 𝑧$ (()!) 𝑧 & (()!) 𝑧' (()!) … … 𝑧! (() 𝑧& (() 𝑧* (() … … …… …… …… …… 1層⽬ (隠れ層) L層⽬ (出⼒層) = 𝑓(𝒙; 𝑤!! ! , … , 𝑤+! ! , … , 𝑤!' (,) , … , 𝑤+' (,) )) 𝑓 𝒙 1層⽬の1番⽬のノード につながるパスの重み L層⽬のn番⽬のノード につながるパスの重み
損失関数を微分最⼩化するとは? 55 x1 xi 1 … xk … L-1層⽬ (隠れ層)
⼊⼒層 𝑧! (!) 𝑧$ (!) 𝑧& (!) 𝑧' (!) … … 𝑧! (()!) 𝑧$ (()!) 𝑧 & (()!) 𝑧' (()!) … … 𝑧! (() 𝑧& (() 𝑧* (() … … …… …… …… …… 1層⽬ (隠れ層) L層⽬ (出⼒層) = 𝑓(𝒙; 𝑤!! ! , … , 𝑤+! ! , … , 𝑤!' (,) , … , 𝑤+' (,) )) 𝑓 𝒙 訓練データを⼊⼒した 𝐿 𝐷, W を 各𝑤 #$ (&)で微分し最⼩化すればよい パラメータ最適化 複雑怪奇な関数 L をどうやって微分するのか?
誤差逆伝播法(Backpropagation) 56 • ニューラルネットワークの効率的な最適化方法 • 出力層から層を遡って後向きに微分(勾配)計算 推論時(⼊⼒層から出⼒層へ) (順伝播の結果を出⼒層から⼊⼒層へ波及させて再帰的に最適化) 逆伝播法(計算結果を波及させ最適化)
回帰問題で考える誤差逆伝播法 57 xk xK … L-1層⽬ (隠れ層) ⼊⼒層 𝑧! (!)
𝑧 + (!) 𝑧,! (!) … … 𝑧! (()!) 𝑧 + (()!) 𝑧,"#! (()!) … 𝑧 & (() …… …… …… 1層⽬ (隠れ層) L層⽬ (出⼒層) 損 失 関 数 … x1 … 最⼩⼆乗誤差 𝐿 = 1 2 7 ,-" . 𝑦, − 𝑧, / #
誤差逆伝播法:「出⼒層」の重みの勾配(1/5) 58 L-1層⽬ (隠れ層) 𝑧! (()!) 𝑧 + (()!) 𝑧,"#!
(()!) … 𝑧 & (() …… …… …… L層⽬ (出⼒層) … 𝜕𝐿 𝜕𝑤 !" ($) = 𝜕𝐿 𝜕𝑧 ! ($) 𝜕𝑧! ($) 𝜕𝑢 ! ($) 𝜕𝑢! ($) 𝜕𝑤 !" ($) 𝑤 $- (,) 微分の連鎖率 最適化の⽬標 𝑧2 (4) = 𝜙 4 5 6-) ../0 𝑤26 4 𝑧6 47) = 𝜙 4 (𝑢2 (4)) ⽂字が多いので 𝑢 ! (/)と置く リマインダ
誤差逆伝播法:「出⼒層」の重みの勾配(2/5) 59 L-1層⽬ (隠れ層) 𝑧! (()!) 𝑧 + (()!) 𝑧,"#!
(()!) … 𝑧 & (() …… …… …… L層⽬ (出⼒層) … 𝜕𝐿 𝜕𝑤 !" ($) = 𝜕𝐿 𝜕𝑧 ! ($) 𝜕𝑧! ($) 𝜕𝑢 ! ($) 𝜕𝑢! ($) 𝜕𝑤 !" ($) 𝑤 $- (,) 最適化の⽬標 𝑢2 (4) = 5 6-) ../0 𝑤26 4 𝑧6 47) 𝑧 " ($&') = リマインダ
誤差逆伝播法:「出⼒層」の重みの勾配(3/5) 60 L-1層⽬ (隠れ層) 𝑧! (()!) 𝑧 + (()!) 𝑧,"#!
(()!) … 𝑧 & (() …… …… …… L層⽬ (出⼒層) … 𝜕𝐿 𝜕𝑤 !" ($) = 𝜕𝐿 𝜕𝑧 ! ($) 𝜕𝑧! ($) 𝜕𝑢 ! ($) 𝜕𝑢! ($) 𝜕𝑤 !" ($) 𝑤 $- (,) 最適化の⽬標 𝜙′ $ (𝑢 ! ($)) リマインダ 𝑧' (R) = 𝜙 R (𝑢' (R)) =
誤差逆伝播法:「出⼒層」の重みの勾配(4/5) 61 L-1層⽬ (隠れ層) 𝑧! (()!) 𝑧 + (()!) 𝑧,"#!
(()!) … 𝑧 & (() …… …… …… L層⽬ (出⼒層) … 𝜕𝐿 𝜕𝑤 !" ($) = 𝜕𝐿 𝜕𝑧 ! ($) 𝜕𝑧! ($) 𝜕𝑢 ! ($) 𝜕𝑢! ($) 𝜕𝑤 !" ($) 𝑤 $- (,) 最適化の⽬標 𝜕 1 2 ∑/-) 0 𝑦/ − 𝑧/ 4 * 𝜕𝑧 2 (4) = リマインダ 𝐿 = 1 2 5 /-) 0 𝑦/ − 𝑧/ 4 * 𝑧 ' (R) − 𝑦' =
誤差逆伝播法:「出⼒層」の重みの勾配(5/5) 62 L-1層⽬ (隠れ層) 𝑧! (()!) 𝑧 + (()!) 𝑧,"#!
(()!) … 𝑧 & (() …… …… …… L層⽬ (出⼒層) … 𝜕𝐿 𝜕𝑤 'S (R) = 𝜕𝐿 𝜕𝑧 ' (R) 𝜕𝑧 ' (R) 𝜕𝑢 ' (R) 𝜕𝑢 ' (R) 𝜕𝑤 'S (R) 𝑤 $- (,) 最適化の⽬標 = 𝑧2 4 − 𝑦2 𝜙8 4 𝑢2 4 𝑧6 (47)) 出⼒層と 正解との誤差 出⼒層 への⼊⼒ 活性化関数の微分
誤差逆伝播法:「中間層」の重みの勾配(1/2) 63 t-1層⽬ 𝑧! (-)!) 𝑧+ (-)!) 𝑧,$#! (-)!) …
…… …… …… … … … 𝑤 $- (1) 𝑧! (-) 𝑧 & (-) 𝑧,$ (-) t層⽬ = (5 / 𝜕𝐿 𝜕𝑧 / %9) 𝜕𝑧/ %9) 𝜕𝑢 / %9) 𝑤2/ (%9)))𝜙8 % 𝑢2 % 𝑧6 (%) … … 𝑧! (-.!) 𝑧 & (-.!) 𝑧,$%! (-.!) t+1層⽬ 𝜕𝐿 𝜕𝑤 26 (%) = 𝜕𝐿 𝜕𝑧 2 (%) 𝜕𝑧2 (%) 𝜕𝑢 2 (%) 𝜕𝑢2 (%) 𝜕𝑤 26 (%) ターゲットノード への⼊⼒ 活性化関数の微分
誤差逆伝播法:「中間層」の重みの勾配(2/2) 64 t-1層⽬ 𝑧! (-)!) 𝑧+ (-)!) 𝑧,$#! (-)!) …
…… …… …… … … … 𝑤 $- (1) 𝑧! (-) 𝑧 & (-) 𝑧,$ (-) t層⽬ = (5 / 𝜕𝐿 𝜕𝑧 / %9) 𝜕𝑧/ %9) 𝜕𝑢 / %9) 𝑤2/ (%9)))𝜙8 % 𝑢2 % 𝑧6 (%) … … 𝑧! (-.!) 𝑧 & (-.!) 𝑧,$%! (-.!) t+1層⽬ ターゲットノードからの 出⼒に関連する情報 (t+1層⽬で計算済み!!) 𝜕𝐿 𝜕𝑤 26 (%) = 𝜕𝐿 𝜕𝑧 2 (%) 𝜕𝑧2 (%) 𝜕𝑢 2 (%) 𝜕𝑢2 (%) 𝜕𝑤 26 (%) ある層の勾配計算に前の層の結果を使う
誤差逆伝播法のまとめ 65 出力層から層を順に遡り、再帰的に勾配を計算 出⼒層での誤差を⼊⼒層に向けて波及させる 勾配が求まれば、勾配法で損失関数の最⼩化ができる 勾配計算のために出⼒層での誤差を計算 パラメータ最適化(学習)のために
Neural Network PlaygroundでMLPを体験 66 https://playground.tensorflow.org/
Hands-on タイム 以下のURLにアクセスして, 多層パーセプトロンを体験してみましょう https://mlnote.hontolab.org/ 67
3 計算機で関数の最小値を求める方法 勾配法 68
多層パーセプトロン(MLP)による「学習」(再掲) 69 訓練データ 𝐷 = (𝒙) , 𝑦) , …,
(𝒙* , 𝑦* )}について 損失関数が最⼩となるパラメータWを⾒つける. 損失関数は微分最⼩化がお約束 ニューラルネットワーク f(x) の全パラメータ 𝐿 𝐷, W = 1 $(! & 1 @(! B {−𝑝@(N" log 𝑓@ 𝒙' } 分類問題の損失関数 𝐿 𝐷, W = 1 2 0 '(! ) 𝑦' − 𝑓 𝒙' " 回帰問題の損失関数 複雑怪奇な損失関数を どうやって計算機で微分・最小化するのか?
⼈間による関数の微分・最⼩化 70 𝑓(𝑥) = 𝑥0 − 2𝑥/ + 1 f(x)
x 例 𝑑𝑓 𝑑𝑥 = 4𝑥) − 6𝑥( = 2𝑥((2𝑥 − 3) 以下の関数の最⼩値を求めよ. 解 23 24 = 0となるのは 𝑥 = 0, ) ( グラフ形状から 𝑥 = ) ( における 極値は関数の最⼩値となる. よって最⼩値は 𝑓 ) ( = − !! !5 . 計算機は解析的に最⼩値を⾒つけられない…
最急降下法 71 x 𝒙(') 𝑑𝑓 𝑑𝒙 (𝒙(')) 勾配(微分係数)を使って,関数の最小値を 数値計算的に求める最も単純なアルゴリズム 𝑓(𝒙)を最⼩化する
𝒙 を求める ⽬標 1. ランダムにxの初期値(𝒙(&))を設定 ⼿順(αは⼩さな正の定数) 2. 収束するまで以下を繰り返す 2a. 𝒙(67!) ← 𝒙(6) − 𝛼 23 2𝒙 𝒙(6)
最急降下法 72 x 𝒙(') −𝛼 )* )𝒙 (𝒙(')) 𝒙(,) 勾配(微分係数)を使って,関数の最小値を
数値計算的に求める最も単純なアルゴリズム 𝑓(𝒙)を最⼩化する 𝒙 を求める ⽬標 1. ランダムにxの初期値(𝒙(&))を設定 ⼿順(αは⼩さな正の定数) 2. 収束するまで以下を繰り返す 2a. 𝒙(67!) ← 𝒙(6) − 𝛼 23 2𝒙 𝒙(6)
最急降下法 73 勾配(微分係数)を使って,関数の最小値を 数値計算的に求める最も単純なアルゴリズム x 𝒙(-) 𝒙(,) −𝛼 )* )𝒙
(𝒙(,)) 𝑓(𝒙)を最⼩化する 𝒙 を求める ⽬標 1. ランダムにxの初期値(𝒙(&))を設定 ⼿順(αは⼩さな正の定数) 2. 収束するまで以下を繰り返す 2a. 𝒙(67!) ← 𝒙(6) − 𝛼 23 2𝒙 𝒙(6)
最急降下法 74 x 𝒙(./01) 勾配(微分係数)を使って,関数の最小値を 数値計算的に求める最も単純なアルゴリズム 𝑓(𝒙)を最⼩化する 𝒙 を求める ⽬標
1. ランダムにxの初期値(𝒙(&))を設定 ⼿順(αは⼩さな正の定数) 2. 収束するまで以下を繰り返す 2a. 𝒙(67!) ← 𝒙(6) − 𝛼 23 2𝒙 𝒙(6)
最急降下法の問題点 75 計算に時間がかかる 局所解に陥る可能性あり 画像出典:https://ruthwik.github.io/machinelearning/2018-01-15-gradient-descent/ 初期値や学習率の設定によっては 局所解周辺から抜け出せないことも ⼤規模データを対象とした学習では 勾配の計算量が膨⼤になる 𝐿
= , $%! !&&&&& 𝑔(𝑦$ , 𝑓(𝒙$ ; 𝑾)) 損失関数 𝑑𝐿 𝑑𝑾 = 𝑑 𝑑𝑾 , $%! !&&&&& 𝑔(𝑦$ , 𝑓(𝒙$ ; 𝑾)) 損失関数の勾配 Wを1回更新するのに これを10万回計算…
損失関数のi番⽬の データに関する部分 確率的勾配降下法(Stochastic Gradient Descent: SGD)(1/2) 76 ランダムに選んだ1つのデータで勾配を計算して パラメータを更新し、それをデータの数だけ繰り返す たことにし
最急降下法 𝑾(:9)) ← 𝑾(:) − 𝛼 𝑑 𝑑𝑾 𝑔(𝑦2 , 𝑓(𝒙2 ; 𝑾(:))) 𝑾(:9)) ← 𝑾(:) − 𝛼 𝑑 𝑑𝑾 1 '(! & 𝑔(𝑦', 𝑓(𝒙'; 𝑾(]))) 確率的勾配降下法 For each (xi , yi ) in 全データ: 損失関数
確率的勾配降下法(Stochastic Gradient Descent: SGD)(2/2) 77 𝐿(𝑾, 𝐷)を最⼩化する 𝑾 を求める ⽬標
1. ランダムにWの初期値(𝑾(&))を設定 ⼿順(αは⼩さな正の定数) 2. 収束するまで以下を繰り返す W ランダムに選んだ1つのデータで勾配を 近似計算してパラメータの更新する勾配法 2a. Dをランダムにシャッフル 2b. Dの先頭から順にデータxを取り 𝑾(0$") ← 𝑾(0) − 𝛼 𝑑 𝑑𝑾 𝑔(𝑦, 𝑓(𝒙; 𝑾(0))) 𝑾(./01) 最急降下法の局所解問題をある程度克服
様々な確率的勾配法の振る舞い 78 画像出典: http://hduongtrong.github.io/2015/11/23/coordinate-descent/
様々な確率的勾配法の振る舞い 79 画像出典: http://hduongtrong.github.io/2015/11/23/coordinate-descent/
Hands-on タイム 以下のURLにアクセスして, 勾配法を体験してみましょう https://mlnote.hontolab.org/ 80