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
June 05, 2023
Technology
0
540
データマイニングと機械学習 - ニューラルネットワーク
1. パーセプトロン
2. 多層パーセプトロン
3. 勾配法
Y. Yamamoto
June 05, 2023
Tweet
Share
More Decks by Y. Yamamoto
See All by Y. Yamamoto
データベース12: 正規化(2/2) - データ従属性に基づく正規化
trycycle
0
560
データベース11: 正規化(1/2) - 望ましくない関係スキーマ
trycycle
0
540
データベース10: 拡張実体関連モデル
trycycle
0
560
データベース09: 実体関連モデル上の一貫性制約
trycycle
0
550
データベース08: 実体関連モデルとは?
trycycle
0
540
データベース14: B+木 & ハッシュ索引
trycycle
0
260
データベース15: ビッグデータ時代のデータベース
trycycle
0
170
データベース06: SQL (3/3) 副問い合わせ
trycycle
0
400
データベース05: SQL(2/3) 結合質問
trycycle
0
510
Other Decks in Technology
See All in Technology
Fanstaの1年を大解剖! 一人SREはどこまでできるのか!?
syossan27
2
170
宇宙ベンチャーにおける最近の情シス取り組みについて
axelmizu
0
110
フロントエンド設計にモブ設計を導入してみた / 20241212_cloudsign_TechFrontMeetup
bengo4com
0
1.9k
Wantedly での Datadog 活用事例
bgpat
1
470
alecthomas/kong はいいぞ / kamakura.go#7
fujiwara3
1
300
終了の危機にあった15年続くWebサービスを全力で存続させる - phpcon2024
yositosi
13
11k
ゼロから創る横断SREチーム 挑戦と進化の軌跡
rvirus0817
2
270
GitHub Copilot のテクニック集/GitHub Copilot Techniques
rayuron
36
14k
ハイテク休憩
sat
PRO
2
150
Oracle Cloudの生成AIサービスって実際どこまで使えるの? エンジニア目線で試してみた
minorun365
PRO
4
280
re:Invent 2024 Innovation Talks(NET201)で語られた大切なこと
shotashiratori
0
310
10分で学ぶKubernetesコンテナセキュリティ/10min-k8s-container-sec
mochizuki875
3
350
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
48
2.2k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
17
2.3k
Raft: Consensus for Rubyists
vanstee
137
6.7k
For a Future-Friendly Web
brad_frost
175
9.4k
Into the Great Unknown - MozCon
thekraken
33
1.5k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5k
YesSQL, Process and Tooling at Scale
rocio
169
14k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Transcript
分類問題3: ニューラルネットワーク入門 ⼭本 祐輔 名古屋市⽴⼤学データサイエンス学部 准教授
[email protected]
第8回 データマイニングと機械学習 2023
2023年6月7日
講義のトピック 機械学習 教師あり学習 教師なし学習 強化学習 ・クラスタリング ・データ圧縮 ・分類 ・回帰 …
… 2 行動情報学科に 特有の応用手法 時系列データ分析 時間経過とともに変化する データに対する分析⼿法 ・K近傍法 ・サポートベクタマシン ・ニューラルネットワーク
K-近傍法(k-NN: k nearest neighbor)のアイデア 3 対象データまでの距離が最も近いK個のデータの ラベルのうち、最も多いラベルに分類する ? K=5:⻘ K=3:緑
K=1:⻘ 多 数 決
サポートベクター (直線に最も近い点) サポートベクターマシンのアイデア X 0 Y マージンを最大化する超平面を見つける (分類境界とサポートベクターの距離) 𝑓(𝒙) =
0 サポートベクター (直線に最も近い点) 4
教師あり学習のための機械学習アルゴリズムの分類 5 ロジスティック回帰 ナイーブベイズ サポートベクターマシン K近傍法 ランダムフォレスト & 決定木 ニューラルネットワーク
訓練データをすべて記憶して おき,それら全部を使って 予測を⾏う(推論計算が遅い) 訓練データの背後にあるモデル を抽出し,それを予測時に使う (推論計算は速い) インスタンスベース モデルベース 本⽇学ぶのはコレ
教師あり学習の歴史(⼀部抜粋) ロジスティック回帰 サポートベクターマシン 決定木 パーセプトロン 単純ベイズ分類器 ランダムフォレスト k-近傍法 ベイジアンネットワーク 深層学習
1958年 1957年 1951年 1979年 1985年 1992年 1960年代 2001年 2010年代 6
教師あり学習の歴史(⼀部抜粋) ロジスティック回帰 サポートベクターマシン 決定木 単純ベイズ分類器 ランダムフォレスト k-近傍法 ベイジアンネットワーク 1958年 1957年
1951年 1979年 1985年 1992年 1960年代 2001年 2010年代 7 パーセプトロン 深層学習 多層パーセプトロン
1 ニューラルネットワークの最小単位 パーセプトロン 8
機械学習の2クラス分類問題とは(1/2) •と×のデータ集合が与えられたときに, 未知のN次元データが•か×をどう予測する? Q. X 0 Y ? ▲ ?
▲ 9
機械学習の2クラス分類問題とは(2/2) •と×のデータを2分するような超平面を見つける A. X 0 Y ? ▲ ? ▲
ax+by+c=0 直線より下側なら「•」 直線より上側なら「×」 10
2クラス分類問題に対する素朴なアプローチ (2次元バージョン) 11 ⼊⼒ 𝒙 = 𝑥! , 𝑥" が与えられたとき
関数 𝑓 𝒙 = 𝑤! 𝑥! + 𝑤" 𝑥" + 𝑤# について ・𝑓 𝒙 > 0 ならば 1 に分類(×) ・𝑓 𝒙 ≤ 0 ならば -1 に分類(•) (上記はstep(𝑓 𝒙 )と書くことも可)
2クラス分類問題に対する素朴なアプローチ(N次元バージョン) 12 ⼊⼒ 𝒙 = 𝑥! , 𝑥" , …
, 𝑥$ が与えられたとき 𝑓 𝒙 = 𝑤! 𝑥! + 𝑤" 𝑥" + ⋯ + 𝑤# = 𝒘%𝒙 について ・𝑓 𝒙 > 0 ならば 1 に分類(×) ・𝑓 𝒙 ≤ 0 ならば -1 に分類(•) 学習データを使って関数 f(x) をどう見つけるか? (上記はstep(𝑓 𝒙 )と書くことも可)
サポートベクター (直線に最も近い点) 関数f(x)の⾒つけ⽅: サポートベクターマシン編 X 0 Y マージンを最大化する超平面を見つける (分類境界とサポートベクターの距離) 𝑓(𝒙)
= 0 サポートベクター (直線に最も近い点) 13
関数f(x)の別の⾒つけ⽅:損失関数の最⼩化 14 訓練データを使って予測したときに 予測と実際の値との誤差が最小になるf(x)を見つける 訓練データ 𝐷 = (𝒙! , 𝑦!
, 𝒙" , 𝑦" , … , (𝒙& , 𝑦& )} 1個⽬のデータの特徴量 1個⽬のデータの正解ラベル 損失関数 𝐿 𝐷 = 1 '(! & 𝑔(𝑦' , 𝑓(𝒙' )) データ1個に関する誤差を評価 例: 𝐿 𝐷 = , |実際の得点i君 ‒ 予測得点 i君 |
関数f(x)の別の⾒つけ⽅:損失関数の最⼩化 15 訓練データを使って予測したときに 予測と実際の値との誤差が最小になるf(x)を見つける 訓練データ 𝐷 = (𝒙! , 𝑦!
, 𝒙" , 𝑦" , … , (𝒙& , 𝑦& )} 損失関数 𝐿 𝐷 = 1 '(! & 𝑔(𝑦' , 𝑓(𝒙' )) = 1 '(! & 𝑔(𝑦' , 𝒘%𝒙' ) 誤差の総和に着⽬ パーセプトロンもこの流派
パーセプトロン:2クラス分類問題を解く線形分類器(1/2) 16 推論フェーズ ⼊⼒ 𝒙 = 𝑥! , 𝑥" ,
… , 𝑥# が与えられたとき 𝑓 𝒙 = 𝑤! 𝑥! + 𝑤" 𝑥" + ⋯ + 𝑤$ = 𝒘%𝒙 について ・𝑓 𝒙 > 0 ならば 1 に分類 ・𝑓 𝒙 ≤ 0 ならば -1 に分類 Σ x1 xn 1 … ×w0 ×w1 ×wn step(・) 1 or -1
パーセプトロン:2クラス分類問題を解く線形分類器(2/2) 17 学習フェーズ 𝐿 𝐷 = 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を繰り返す 18 損失関数を微分最⼩化で 得られた重みの更新式
パーセプトロンの学習の例(1/7) 19 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) 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 メールに出現する単語の情報と迷惑メールラベル v1 に対する予測(正解は+1) 予測関数の値 𝒘𝑻𝒗! = 0 𝒘 ← 𝒘 + 1 2 +1 𝒗! = 0,0,0,0,0 + 1 2 , 1 2 , 0, 1 2 , 1 2 = (! " , ! " , 0, ! " , ! " ) 0より⼤きくないので予測間違い (パラメータ更新へ)
パーセプトロンの学習の例(3/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 メールに出現する単語の情報と迷惑メールラベル 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) 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 メールに出現する単語の情報と迷惑メールラベル 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) 23 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) 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 メールに出現する単語の情報と迷惑メールラベル v5に対する予測(正解は+1) 予測値 𝒘𝑻𝒗" = 0,1,0, − # $ , # $ % 1,0,1,0,1 = # $ 0より⼤きいので予測は正しい (パラメータは更新しない)
パーセプトロンの学習の例(7/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 メールに出現する単語の情報と迷惑メールラベル v6に対する予測(正解は-1) 予測値 𝒘𝑻𝒗& = 0,1,0, − # $ , # $ % 1,0,1,1,0 = − # $ 0より⼩さいので予測は正しい (パラメータは更新しない) これ以上学習しても パラメータは変化せず 最終的な予測関数 𝒘𝑻𝒙 = 0,1,0, − 1 2 , 1 2 % 𝒙
パーセプトロンの限界 26 X 0 Y x1 xn 1 … ×w0
×w1 ×wn Σ step(・) 1 or -1 ・単層パーセプトロンは線形分離可能な場合しか学習できない ・パーセプトロンを多層化すれば⾮線形問題も扱えるが、 パーセプトロンの学習則はパラメータをうまく学習できない 第1次ニューラルネットワークブームは終焉へ
Neural Network Playgroundでパーセプトロンを体験 27 https://playground.tensorflow.org/
2 第2次ニューラルネットワークブーム パーセプトロンの多層化 28
パーセプトロンの限界の克服:⾮線形問題への対応 29 x1 xi 1 … xn-1 xn … z
×w10 ×w11 ×w1i ×w1n step(・) リマインダ ・𝑥 > 0 ならば 1 ・𝑥 ≤ 0 ならば-1 step 𝑥 = 𝑓 𝒙 = step(𝒘!𝒙) ネットワークを 関数で表現すると
パーセプトロンの限界の克服:⾮線形問題への対応 30 x1 xi 1 … xn-1 xn … ネットワークの多層化
・データの特徴を段階的に深く学習 ・モデルの表現⼒の向上 可微分で非線形な活性化関数の導入 ・逆伝播法による最適化が可能に(後述) 𝑧! (!) 𝑧$ (!) 𝑧% (!) 𝑧! ($) ・各層の出⼒に⾮線形関数をかますことで ⼊出⼒の⼤⼩関係の⼊れ替えが可能に
パーセプトロンの限界の克服:⾮線形問題への対応 31 x1 xi 1 … xn-1 xn … Sigmoid
(・) Sigmoid (・) ネットワークの多層化 ・データの特徴を段階的に深く学習 ・モデルの表現⼒の向上 可微分で非線形な活性化関数の導入 𝑧! (!) 𝑧$ (!) 𝑧% (!) 𝑧! ($) ・各層の出⼒に⾮線形関数をかますことで ⼊出⼒の⼤⼩関係の⼊れ替えが可能に ・逆伝播法による最適化が可能に(後述) 線形関数を単純に組み合わせても線形しか表現できない
パーセプトロンの限界の克服:⾮線形問題への対応 32 x1 xi 1 … xn-1 xn … z
×w10 ×w11 ×w1i ×w1n step(・) リマインダ ・𝑥 > 0 ならば 1 ・𝑥 ≤ 0 ならば 0 step 𝑥 = 微分不可能な 活性化関数 𝑓 𝒙 = step(𝒘!𝒙) ネットワークを 関数で表現すると
パーセプトロンの限界の克服:⾮線形問題への対応 33 x1 xi 1 … xn-1 xn … ネットワークの多層化
・データの特徴を段階的に深く学習 ・モデルの表現⼒の向上 可微分で非線形な活性化関数の導入 𝑧! (!) 𝑧$ (!) 𝑧% (!) 𝑧! ($) Sigmoid (・) Sigmoid (・) ・逆伝播法による最適化が可能に(後述) ・各層の出⼒に⾮線形関数をかますことで ⼊出⼒の⼤⼩関係の⼊れ替えが可能に
可微分で⾮線形な活性化関数(1/2) 34 𝑓 𝑥 = 1 1 + exp(−𝑥) シグモイド関数
𝑓 𝑥 = max(0, 𝑥) ReLU(ランプ関数) ・値域が[-1, 1]となるため確率 と 対応させて使う ・その昔は中間層で頻繁に利⽤ ・深層学習の中間層で頻繁に利⽤ ・シンプルなので計算が速い ・0以上の範囲では微分可能
可微分で⾮線形な活性化関数(2/2) 35 𝑓 𝑢@ = 𝑒A! ∑'(! B 𝑒A" ソフトマックス関数
例 ・K種類あるクラスのうち,出⼒がクラスkに属する確率 ・深層学習で分類問題を⾏うときの出⼒層で利⽤ ・⼊⼒がマイナスでも常に正の値に返せる 𝒖% = (10,2,1)のとき 𝑓'()*+,- 𝑢# = 0.9995 𝑓'()*+,- 𝑢$ = 0.0003 𝑓'()*+,- 𝑢. = 0.0001 ・指数関数を噛ましているので,⼊⼒が⼤きい場合と ⼩さい場合の区別がはっきりする 活性化関数は出⼒の調整に使う
可微分でない or ⾮線形な活性化関数 36 𝑓 𝑥 = C 1 𝑖𝑓
𝑥 > 0 0 𝑖𝑓 𝑥 ≤ 0 ステップ関数 ・かつてパーセプトロンの 出⼒層で使⽤された ・⾮線形だが微分不可能 𝑓 𝑥 = 𝑥 恒等関数 ・ど線形 ・回帰問題の出⼒層で利⽤
多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(1/6) 37 x1 xi 1 … xn …
1層⽬ (隠れ層) 2層⽬ (出⼒層) ⼊⼒層 1層⽬の活性化関数 𝜙" 𝑥 (例: 𝜙" 𝑥 = ReLU(𝑥)) 2層⽬の活性化関数 𝜙# 𝑥 (例: 𝜙# 𝑥 = " "$%&'()*) ) 定義したネットワーク & 活性化関数に従い, ⼊⼒層から出⼒層まで順に値を波及させる y1 𝑧! (!) 𝑧$ (!) 𝑧% (!) 例
多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(2/6) 38 x1 xi 1 … xn …
z21 1層⽬ (隠れ層) 2層⽬ (出⼒層) ⼊⼒層 ×w10 (1) ×w11 (1) ×w1n (1) ×w1i (1) 定義したネットワーク & 活性化関数に従い, ⼊⼒層から出⼒層まで順に値を波及させる 𝑧! (!) 𝑧$ (!) 𝑧% (!) 𝑧! (!) = 𝜙(!) , $%& ' 𝑤!$ ! 𝑥$ = 𝜙(!)(𝑢! (!) )
多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(3/6) 39 x1 xi 1 … xn …
𝑧! (!) 1層⽬ (隠れ層) 2層⽬ (出⼒層) ⼊⼒層 ×w20 (1) ×w21 (1) ×w2n (1) ×w2i (1) 𝑧( (!) = 𝜙(!) , $%& ' 𝑤 ($ ! 𝑥$ = 𝜙(!)(𝑢( (!)) y1 𝑧$ (!) 𝑧% (!) 定義したネットワーク & 活性化関数に従い, ⼊⼒層から出⼒層まで順に値を波及させる
多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(4/6) 40 x1 xi 1 … xn …
1層⽬ (隠れ層) 2層⽬ (出⼒層) ⼊⼒層 ×w30 (1) ×w31 (1) ×w3n (1) ×w3i (1) 定義したネットワーク & 活性化関数に従い, ⼊⼒層から出⼒層まで順に値を波及させる y1 𝑧! (!) 𝑧$ (!) 𝑧% (!) 𝑧) (!) = 𝜙(!) , $%& ' 𝑤 )$ ! 𝑥$ = 𝜙(!)(𝑢 ) (!))
多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(5/6) 41 x1 xi 1 … xn …
1層⽬ (隠れ層) 2層⽬ (出⼒層) ⼊⼒層 ×w11 (2) ×w12 (2) ×w13 (2) 𝑦! = 𝜙(()(, $%! ) 𝑤 !$ (()𝑧 $ (!)) 定義したネットワーク & 活性化関数に従い, ⼊⼒層から出⼒層まで順に値を波及させる y1 𝑧! (!) 𝑧$ (!) 𝑧% (!)
多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(6/6) 42 定義したネットワーク & 活性化関数に従い, ⼊⼒層から出⼒層まで順に値を波及させる x1 xi
1 … xn … y1 2層⽬ (出⼒層) ⼊⼒層 𝑦! = 1 1 + exp(− ∑ $%! ) 𝑤 !$ (() 𝑧 $ (!) ) 分類問題なら出⼒層が最⼤となるクラスを選択 2クラス分類の場合 𝑧! (!) 𝑧$ (!) 𝑧% (!)
MLPを別の視点から⾒る(1/2) 43 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) 44 出⼒層 中間層(隠れ層) ⼊⼒層 … … … …… …
… … … … … … …… … …… (ざっくり言うと)ニューラルネットワークは ロジスティック回帰モデルのつなぎ合わせ ロジスティック回帰モデル ロジスティック回帰モデル ロジスティック回帰モデル ロジスティック回帰モデル
隠れ層(中間層)の役割 45 出⼒層 中間層(隠れ層) ⼊⼒層 … … … …… …
… … … … … … …… … …… 推論に有用な表現を入力データから自動抽出 時間・空間計算量がUPするが中間層が⼤きいほど表現⼒はUP
中間層の役割の例1 46 出⼒層 ⼊⼒層 … … … …… … …
… … … …… メジャー で成功する? 打率 本塁打 盗塁数 得点 中間層(隠れ層)
中間層の役割の例1 47 … … … …… … … … …
… …… 打率 本塁打 盗塁数 得点 パワー系要素 スピード系要素 技術系要素 攻撃貢献度 守備貢献度 精神貢献度 ⼊⼒を推論に有⽤な特徴量に変換していく メジャー で成功する?
中間層の役割の例2:ネオコグニトロン(CNNの初期モデル) 48 画像出典: https://dbnst.nii.ac.jp/pro/detail/498 ⼈間が苦労して特徴量抽出を⾏う必要がない
多層パーセプトロンによる「学習」(1/3) 𝐿 𝐷, W = 0 &'! ( 𝑔(𝑦& ,
𝑓(𝒙& )) 訓練データ 𝐷 = (𝒙) , 𝑦) , …, (𝒙* , 𝑦* )}について 損失関数が最⼩となるパラメータWを⾒つける. ニューラルネットワーク f(x) の全パラメータ = 1 2 0 &'! ( 𝑦& − 𝑓 𝒙& " 回帰問題の損失関数 誤差の⼆乗 49
多層パーセプトロンによる「学習」(2/3) 50 訓練データ 𝐷 = (𝒙) , 𝑦) , …,
(𝒙* , 𝑦* )}について 損失関数が最⼩となるパラメータWを⾒つける. ニューラルネットワーク f(x) の全パラメータ = 5 /0# 1 5 20# 3 {−𝑝204* log 𝑓2 𝒙5 } 𝐿 𝐷, W = 0 &'! ( 𝑔(𝑦& , 𝑓(𝒙& )) 分類問題の損失関数 クロスエントロピー (複数の確率分布の近さを測る指標) 出⼒層でk番⽬のクラスに 対応する出⼒ 参考: https://zeema.hatenablog.com/entry/2017/11/09/223026
多層パーセプトロンによる「学習」(3/3) 51 訓練データ 𝐷 = (𝒙) , 𝑦) , …,
(𝒙* , 𝑦* )}について 損失関数が最⼩となるパラメータWを⾒つける. 損失関数は微分最⼩化がお約束 ニューラルネットワーク f(x) の全パラメータ 𝐿 𝐷, W = 1 $(! & 1 @(! B {−𝑝@(N" log 𝑓@ 𝒙' } 分類問題の損失関数 𝐿 𝐷, W = 1 2 0 &'! ( 𝑦& − 𝑓 𝒙& " 回帰問題の損失関数
損失関数を微分最⼩化するとは? 52 x1 xi 1 … xk … L-1層⽬ (隠れ層)
⼊⼒層 𝑧! (!) 𝑧$ (!) 𝑧& (!) 𝑧' (!) … … 𝑧! (()!) 𝑧$ (()!) 𝑧 & (()!) 𝑧' (()!) … … 𝑧! (() 𝑧& (() 𝑧* (() … … …… …… …… …… 1層⽬ (隠れ層) L層⽬ (出⼒層)
損失関数を微分最⼩化するとは? 53 x1 xi 1 … xk … L-1層⽬ (隠れ層)
⼊⼒層 𝑧! (!) 𝑧$ (!) 𝑧& (!) 𝑧' (!) … … 𝑧! (()!) 𝑧$ (()!) 𝑧 & (()!) 𝑧' (()!) … … 𝑧! (() 𝑧& (() 𝑧* (() … … …… …… …… …… 1層⽬ (隠れ層) L層⽬ (出⼒層) = 𝑓(𝒙; 𝑤!! ! , … , 𝑤+! ! , … , 𝑤!' (,) , … , 𝑤+' (,) )) 𝑓 𝒙 1層⽬の1番⽬のノード につながるパスの重み L層⽬のn番⽬のノード につながるパスの重み
損失関数を微分最⼩化するとは? 54 x1 xi 1 … xk … L-1層⽬ (隠れ層)
⼊⼒層 𝑧! (!) 𝑧$ (!) 𝑧& (!) 𝑧' (!) … … 𝑧! (()!) 𝑧$ (()!) 𝑧 & (()!) 𝑧' (()!) … … 𝑧! (() 𝑧& (() 𝑧* (() … … …… …… …… …… 1層⽬ (隠れ層) L層⽬ (出⼒層) = 𝑓(𝒙; 𝑤!! ! , … , 𝑤+! ! , … , 𝑤!' (,) , … , 𝑤+' (,) )) 𝑓 𝒙 訓練データを⼊⼒した 𝐿 𝐷, W を 各𝑤 #$ (&)で微分し最⼩化すればよい パラメータ最適化 複雑怪奇な関数 L をどうやって微分するのか?
誤差逆伝播法(Backpropagation) 55 • ニューラルネットワークの効率的な最適化方法 • 出力層から層を遡って後向きに微分(勾配)計算 推論時(⼊⼒層から出⼒層へ) (順伝播の結果を出⼒層から⼊⼒層へ波及させて再帰的に最適化) 逆伝播法(計算結果を波及させ最適化)
回帰問題で考える誤差逆伝播法 56 xk xK … L-1層⽬ (隠れ層) ⼊⼒層 𝑧! (!)
𝑧 + (!) 𝑧,! (!) … … 𝑧! (()!) 𝑧 + (()!) 𝑧,"#! (()!) … 𝑧 & (() …… …… …… 1層⽬ (隠れ層) L層⽬ (出⼒層) 損 失 関 数 … x1 … 最⼩⼆乗誤差 𝐿 = 1 2 7 ,-" . 𝑦, − 𝑧, / #
誤差逆伝播法:「出⼒層」の重みの勾配(1/5) 57 L-1層⽬ (隠れ層) 𝑧! (()!) 𝑧 + (()!) 𝑧,"#!
(()!) … 𝑧 & (() …… …… …… L層⽬ (出⼒層) … 𝜕𝐿 𝜕𝑤 !" ($) = 𝜕𝐿 𝜕𝑧 ! ($) 𝜕𝑧! ($) 𝜕𝑢 ! ($) 𝜕𝑢! ($) 𝜕𝑤 !" ($) 𝑤 $- (,) 微分の連鎖率 最適化の⽬標 𝑧5 (7) = 𝜙 7 5 90# 1./0 𝑤59 7 𝑧9 7:# = 𝜙 7 (𝑢5 (7)) ⽂字が多いので 𝑢 ! (/)と置く リマインダ
誤差逆伝播法:「出⼒層」の重みの勾配(2/5) 58 L-1層⽬ (隠れ層) 𝑧! (()!) 𝑧 + (()!) 𝑧,"#!
(()!) … 𝑧 & (() …… …… …… L層⽬ (出⼒層) … 𝜕𝐿 𝜕𝑤 !" ($) = 𝜕𝐿 𝜕𝑧 ! ($) 𝜕𝑧! ($) 𝜕𝑢 ! ($) 𝜕𝑢! ($) 𝜕𝑤 !" ($) 𝑤 $- (,) 最適化の⽬標 𝑢5 (7) = 5 90# 1./0 𝑤59 7 𝑧9 7:# 𝑧 " ($&') = リマインダ
誤差逆伝播法:「出⼒層」の重みの勾配(3/5) 59 L-1層⽬ (隠れ層) 𝑧! (()!) 𝑧 + (()!) 𝑧,"#!
(()!) … 𝑧 & (() …… …… …… L層⽬ (出⼒層) … 𝜕𝐿 𝜕𝑤 !" ($) = 𝜕𝐿 𝜕𝑧 ! ($) 𝜕𝑧! ($) 𝜕𝑢 ! ($) 𝜕𝑢! ($) 𝜕𝑤 !" ($) 𝑤 $- (,) 最適化の⽬標 𝜙′ $ (𝑢 ! ($)) リマインダ 𝑧' (R) = 𝜙 R (𝑢' (R)) =
誤差逆伝播法:「出⼒層」の重みの勾配(4/5) 60 L-1層⽬ (隠れ層) 𝑧! (()!) 𝑧 + (()!) 𝑧,"#!
(()!) … 𝑧 & (() …… …… …… L層⽬ (出⼒層) … 𝜕𝐿 𝜕𝑤 !" ($) = 𝜕𝐿 𝜕𝑧 ! ($) 𝜕𝑧! ($) 𝜕𝑢 ! ($) 𝜕𝑢! ($) 𝜕𝑤 !" ($) 𝑤 $- (,) 最適化の⽬標 𝜕 1 2 ∑20# 3 𝑦2 − 𝑧2 7 $ 𝜕𝑧 5 (7) = リマインダ 𝐿 = 1 2 5 20# 3 𝑦2 − 𝑧2 7 $ 𝑧 ' (R) − 𝑦' =
誤差逆伝播法:「出⼒層」の重みの勾配(5/5) 61 L-1層⽬ (隠れ層) 𝑧! (()!) 𝑧 + (()!) 𝑧,"#!
(()!) … 𝑧 & (() …… …… …… L層⽬ (出⼒層) … 𝜕𝐿 𝜕𝑤 'S (R) = 𝜕𝐿 𝜕𝑧 ' (R) 𝜕𝑧 ' (R) 𝜕𝑢 ' (R) 𝜕𝑢 ' (R) 𝜕𝑤 'S (R) 𝑤 $- (,) 最適化の⽬標 = 𝑧5 7 − 𝑦5 𝜙; 7 𝑢5 7 𝑧9 (7:#) 出⼒層と 正解との誤差 出⼒層 への⼊⼒ 活性化関数の微分
誤差逆伝播法:「中間層」の重みの勾配(1/2) 62 t-1層⽬ 𝑧! (-)!) 𝑧+ (-)!) 𝑧,$#! (-)!) …
…… …… …… … … … 𝑤 $- (1) 𝑧! (-) 𝑧 & (-) 𝑧,$ (-) t層⽬ = (5 2 𝜕𝐿 𝜕𝑧 2 *<# 𝜕𝑧2 *<# 𝜕𝑢 2 *<# 𝑤52 (*<#))𝜙; * 𝑢5 * 𝑧9 (*) … … 𝑧! (-.!) 𝑧 & (-.!) 𝑧,$%! (-.!) t+1層⽬ 𝜕𝐿 𝜕𝑤 59 (*) = 𝜕𝐿 𝜕𝑧 5 (*) 𝜕𝑧5 (*) 𝜕𝑢 5 (*) 𝜕𝑢5 (*) 𝜕𝑤 59 (*) ターゲットノード への⼊⼒ 活性化関数の微分
誤差逆伝播法:「中間層」の重みの勾配(2/2) 63 t-1層⽬ 𝑧! (-)!) 𝑧+ (-)!) 𝑧,$#! (-)!) …
…… …… …… … … … 𝑤 $- (1) 𝑧! (-) 𝑧 & (-) 𝑧,$ (-) t層⽬ = (5 2 𝜕𝐿 𝜕𝑧 2 *<# 𝜕𝑧2 *<# 𝜕𝑢 2 *<# 𝑤52 (*<#))𝜙; * 𝑢5 * 𝑧9 (*) … … 𝑧! (-.!) 𝑧 & (-.!) 𝑧,$%! (-.!) t+1層⽬ ターゲットノードからの 出⼒に関連する情報 (t+1層⽬で計算済み!!) 𝜕𝐿 𝜕𝑤 59 (*) = 𝜕𝐿 𝜕𝑧 5 (*) 𝜕𝑧5 (*) 𝜕𝑢 5 (*) 𝜕𝑢5 (*) 𝜕𝑤 59 (*) ある層の勾配計算に前の層の結果を使う
誤差逆伝播法のまとめ 64 出力層から層を順に遡り、再帰的に勾配を計算 出⼒層での誤差を⼊⼒層に向けて波及させる 勾配が求まれば、勾配法で損失関数の最⼩化ができる 勾配計算のために出⼒層での誤差を計算 パラメータ最適化(学習)のために
Neural Network PlaygroundでMLPを体験 65 https://playground.tensorflow.org/
Hands-on タイム 以下のURLにアクセスして, 多層パーセプトロンを体験してみましょう https://dmml2023.hontolab.org/ 66
3 計算機で関数の最小値を求める方法 勾配法 67
多層パーセプトロン(MLP)による「学習」(再掲) 68 訓練データ 𝐷 = (𝒙) , 𝑦) , …,
(𝒙* , 𝑦* )}について 損失関数が最⼩となるパラメータWを⾒つける. 損失関数は微分最⼩化がお約束 ニューラルネットワーク f(x) の全パラメータ 𝐿 𝐷, W = 1 $(! & 1 @(! B {−𝑝@(N" log 𝑓@ 𝒙' } 分類問題の損失関数 𝐿 𝐷, W = 1 2 0 &'! ( 𝑦& − 𝑓 𝒙& " 回帰問題の損失関数 複雑怪奇な損失関数を どうやって計算機で微分・最小化するのか?
⼈間による関数の微分・最⼩化 69 𝑓(𝑥) = 𝑥0 − 2𝑥/ + 1 f(x)
x 例 𝑑𝑓 𝑑𝑥 = 4𝑥) − 6𝑥( = 2𝑥((2𝑥 − 3) 以下の関数の最⼩値を求めよ. 解 23 24 = 0となるのは 𝑥 = 0, ) ( グラフ形状から 𝑥 = ) ( における 極値は関数の最⼩値となる. よって最⼩値は 𝑓 ) ( = − !! !5 . 計算機は解析的に最⼩値を⾒つけられない…
最急降下法 70 x 𝒙(') 𝑑𝑓 𝑑𝒙 (𝒙(')) 勾配(微分係数)を使って,関数の最小値を 数値計算的に求める最も単純なアルゴリズム 𝑓(𝒙)を最⼩化する
𝒙 を求める ⽬標 1. ランダムにxの初期値(𝒙(&))を設定 ⼿順(αは⼩さな正の定数) 2. 収束するまで以下を繰り返す 2a. 𝒙(67!) ← 𝒙(6) − 𝛼 23 2𝒙 𝒙(6)
最急降下法 71 x 𝒙(') −𝛼 )* )𝒙 (𝒙(')) 𝒙(,) 勾配(微分係数)を使って,関数の最小値を
数値計算的に求める最も単純なアルゴリズム 𝑓(𝒙)を最⼩化する 𝒙 を求める ⽬標 1. ランダムにxの初期値(𝒙(&))を設定 ⼿順(αは⼩さな正の定数) 2. 収束するまで以下を繰り返す 2a. 𝒙(67!) ← 𝒙(6) − 𝛼 23 2𝒙 𝒙(6)
最急降下法 72 勾配(微分係数)を使って,関数の最小値を 数値計算的に求める最も単純なアルゴリズム x 𝒙(-) 𝒙(,) −𝛼 )* )𝒙
(𝒙(,)) 𝑓(𝒙)を最⼩化する 𝒙 を求める ⽬標 1. ランダムにxの初期値(𝒙(&))を設定 ⼿順(αは⼩さな正の定数) 2. 収束するまで以下を繰り返す 2a. 𝒙(67!) ← 𝒙(6) − 𝛼 23 2𝒙 𝒙(6)
最急降下法 73 x 𝒙(./01) 勾配(微分係数)を使って,関数の最小値を 数値計算的に求める最も単純なアルゴリズム 𝑓(𝒙)を最⼩化する 𝒙 を求める ⽬標
1. ランダムにxの初期値(𝒙(&))を設定 ⼿順(αは⼩さな正の定数) 2. 収束するまで以下を繰り返す 2a. 𝒙(67!) ← 𝒙(6) − 𝛼 23 2𝒙 𝒙(6)
最急降下法の問題点 74 計算に時間がかかる 局所解に陥る可能性あり 画像出典:https://ruthwik.github.io/machinelearning/2018-01-15-gradient-descent/ 初期値や学習率の設定によっては 局所解周辺から抜け出せないことも ⼤規模データを対象とした学習では 勾配の計算量が膨⼤になる 𝐿
= , $%! !&&&&& 𝑔(𝑦$ , 𝑓(𝒙$ ; 𝑾)) 損失関数 𝑑𝐿 𝑑𝑾 = 𝑑 𝑑𝑾 , $%! !&&&&& 𝑔(𝑦$ , 𝑓(𝒙$ ; 𝑾)) 損失関数の勾配 Wを1回更新するのに これを10万回計算…
損失関数のi番⽬の データに関する部分 確率的勾配降下法(Stochastic Gradient Descent: SGD)(1/2) 75 ランダムに選んだ1つのデータで勾配を計算して パラメータを更新し、それをデータの数だけ繰り返す たことにし
最急降下法 𝑾(=<#) ← 𝑾(=) − 𝛼 𝑑 𝑑𝑾 𝑔(𝑦5 , 𝑓(𝒙5 ; 𝑾(=))) 𝑾(=<#) ← 𝑾(=) − 𝛼 𝑑 𝑑𝑾 1 '(! & 𝑔(𝑦', 𝑓(𝒙'; 𝑾(]))) 確率的勾配降下法 For each (xi , yi ) in 全データ: 損失関数
確率的勾配降下法(Stochastic Gradient Descent: SGD)(2/2) 76 𝐿(𝑾, 𝐷)を最⼩化する 𝑾 を求める ⽬標
1. ランダムにWの初期値(𝑾(&))を設定 ⼿順(αは⼩さな正の定数) 2. 収束するまで以下を繰り返す W ランダムに選んだ1つのデータで勾配を 近似計算してパラメータの更新する勾配法 2a. Dをランダムにシャッフル 2b. Dの先頭から順にデータxを取り 𝑾(0$") ← 𝑾(0) − 𝛼 𝑑 𝑑𝑾 𝑔(𝑦, 𝑓(𝒙; 𝑾(0))) 𝑾(./01) 最急降下法の局所解問題をある程度克服
様々な確率的勾配法の振る舞い 77 画像出典: http://hduongtrong.github.io/2015/11/23/coordinate-descent/
様々な確率的勾配法の振る舞い 78 画像出典: http://hduongtrong.github.io/2015/11/23/coordinate-descent/
レポート課題 79 課題内容 https://dmml2023.hontolab.org/に記載 提出先 学務情報システム 締め切り 2023年7⽉7⽇(⾦) 提出形式 PDFファイル
(必ずWordファイルをPDF化すること)
数学記号(集合) 80 集合 (太字でない⼤⽂字アルファベット) 𝑆 集合の要素 (太字でない⼩⽂字アルファベット) 𝑠 𝑆 =
𝑠' , 𝑠( , … , 𝑠) = 𝑥 𝑥 ∈ 𝑅 ∧ 𝑓 𝑥 > 0} 外延表現:要素を並べる書き⽅ 内包表現:要素の条件を指定する書き⽅ (xが実数でかつ f (x)がゼロより⼤きくなるようなxの集合) 集合の書き⽅ 集合の⼤きさ(要素数) |𝑆|
例 81 𝑁 = 0, 1, 2, … 𝑍 =
… , −2, −1, 0, 1, 2, … 𝑂 = 2n + 1 | n ∈ 𝑁 (⾃然数) (整数) (奇数) 𝐹 = りんご, みかん, なし |𝐹| = 3
数学記号(ベクトル) 82 𝒙 ベクトル (太字の⼩⽂字) 断りがない限り,縦ベクトル 𝒙 " = 𝑥!
" + ⋯ + 𝑥_ " ベクトルの要素の書き⽅ 実数を成分とする m次元ベクトル 𝒙 = 𝑥! ⋮ 𝑥_ ∈ 𝑅_ = 𝑥! , … , 𝑥_ % ベクトルの⼤きさ 𝒙 と書くことも 𝒙 K 𝒚 = 𝒙%𝒚 = ∑ 𝑥@ 𝑦@ ベクトルの内積 𝒙, 𝒚 と書くことも
数学記号(⾏列) 83 ⾏列 (太字の⼤⽂字) 𝑿 = 𝑥'' ⋯ 𝑥)' ⋮
𝑥*' ⋱ ⋯ ⋮ 𝑥*) ∈ 𝑅*×) 𝑿の各列(縦ベクトル) を使った書き⽅ 実数を成分とする m⾏ n 列の⾏列 = 𝑥!" *×) こんな書き⽅も = 𝒙' , … , 𝒙) 𝑿 ⾏列の 要素の書き⽅
機械学習でよく⾒かける数学的処理(1/3) 84 1 '(! $ 𝑥' = 𝑥! + 𝑥"
+ ⋯ + 𝑥$ M '(! $ 𝑥' = 𝑥! 𝑥" … 𝑥$ 𝜕 𝜕𝑥, 𝑓(𝒙) 数列の和 数列の積 偏微分 𝑓 𝒙 = 𝑤! 𝑥! + 𝑤( 𝑥( + ⋯ + 𝑤' 𝑥' 例: 𝜕 𝜕𝑥' 𝑓 𝒙 = 𝑤'
機械学習でよく⾒かける数学的処理 (2/3) 85 argmax "∈$ 𝑓(𝑥) argmin %∈$ 𝑓(𝑥) max
%∈$ 𝑓(𝑥) min %∈$ 𝑓(𝑥) 関数を最⼤化 関数を最⼩化 実数の範囲でパラメータxを 動かし関数f(x)を最⼤化・最⼩化 関数を最⼤化する パラメータ 関数を最⼩化する パラメータ 関数を最適化する 実数を⾒つける
機械学習でよく⾒かける数学的処理 (3/3) 86 sign 𝑥 = 6 1: 𝑥 >
0 0: 𝑥 = 0 −1: 𝑥 < 0 符号関数 値の符号に応じて ・正なら1 ・負なら-1 ・ゼロなら0 を返す関数と覚える 画像出典: https://ja.wikipedia.org/wiki/符号関数 (sgn 𝑥 と書くことも)
機械学習でよく出くわす瞬時に理解すべき数式 87 𝑨:# % = 𝑨𝑻 :# 𝑨𝑩 % =
𝑩𝑻𝑨𝑻 5 5 𝑤5 𝑥5 = 𝒘𝑻𝒙 Matrix Cookbook: http://www2.imm.dtu.dk/pubdb/edoc/imm3274.pdf 𝜕 𝜕𝒙 𝒙 $ = 𝜕 𝜕𝒙 𝒙𝑻𝒙 = 2𝒙 𝜕 𝜕𝒙 𝑴𝒙 = 𝑴𝑻 𝜕 𝜕𝒙 𝒘𝑻𝒙 = 𝒘 𝜕 𝜕𝒙 𝒙 − 𝒂 $ = 2(𝒘 − 𝒂) 𝜕 𝜕𝒙 𝑨𝒙 − 𝒃 $ = 2𝑨𝑻(𝑨𝒙 − 𝒃) 𝑨 + 𝑩 % = 𝑨𝑻 + 𝑩𝑻
⾏列サイズの⾒積もり 88 ⾏列A はm⾏ k列(m×k),⾏列B はk⾏ n列(k×n), ⾏列 Wはm⾏ m列(m×m),ベクトルxは
m⾏ 1列(m×1) とする.このとき以下の演算結果のサイズは? Q1. 𝑨𝑻𝒙 Q2. 𝒙𝑻𝑾𝒙 Q3. 𝒙𝑻𝒙 スカラー スカラー (k×1)の⾏列(k次元ベクトル) (m×k)の⾏列と(k×n)の⾏列の積をとると, (m×n)の⾏列ができあがると覚えておけばよい