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
510
データマイニングと機械学習 - ニューラルネットワーク
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
540
データベース11: 正規化(1/2) - 望ましくない関係スキーマ
trycycle
0
510
データベース10: 拡張実体関連モデル
trycycle
0
540
データベース09: 実体関連モデル上の一貫性制約
trycycle
0
520
データベース08: 実体関連モデルとは?
trycycle
0
520
データベース14: B+木 & ハッシュ索引
trycycle
0
250
データベース15: ビッグデータ時代のデータベース
trycycle
0
150
データベース06: SQL (3/3) 副問い合わせ
trycycle
0
390
データベース05: SQL(2/3) 結合質問
trycycle
0
490
Other Decks in Technology
See All in Technology
TanStack Routerに移行するのかい しないのかい、どっちなんだい! / Are you going to migrate to TanStack Router or not? Which one is it?
kaminashi
0
600
エンジニア人生の拡張性を高める 「探索型キャリア設計」の提案
tenshoku_draft
1
130
日経電子版のStoreKit2フルリニューアル
shimastripe
1
140
20241120_JAWS_東京_ランチタイムLT#17_AWS認定全冠の先へ
tsumita
2
300
SREが投資するAIOps ~ペアーズにおけるLLM for Developerへの取り組み~
takumiogawa
1
430
iOSチームとAndroidチームでブランチ運用が違ったので整理してます
sansantech
PRO
0
150
Zennのパフォーマンスモニタリングでやっていること
ryosukeigarashi
0
150
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
180
Engineer Career Talk
lycorp_recruit_jp
0
190
OTelCol_TailSampling_and_SpanMetrics
gumamon
1
190
『Firebase Dynamic Links終了に備える』 FlutterアプリでのAdjust導入とDeeplink最適化
techiro
0
130
The Role of Developer Relations in AI Product Success.
giftojabu1
0
130
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
Practical Orchestrator
shlominoach
186
10k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
Done Done
chrislema
181
16k
The Language of Interfaces
destraynor
154
24k
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)の⾏列ができあがると覚えておけばよい