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
シリーズAI入門:11. ニューラルネットワーク
Search
FSCjJh3NeB
February 03, 2021
Education
0
140
シリーズAI入門:11. ニューラルネットワーク
単純パーセプトロンを中心にニューラルネットワークの概観を軽く眺めます。
FSCjJh3NeB
February 03, 2021
Tweet
Share
More Decks by FSCjJh3NeB
See All by FSCjJh3NeB
シリーズAI入門:13b 生成AI
2hz9qeedd
1
140
Stats of bioRxiv (2021)
2hz9qeedd
0
78
シリーズAI入門:1. ガイダンス・AIの概要
2hz9qeedd
0
190
シリーズAI入門:2. AI研究の歴史
2hz9qeedd
0
230
シリーズAI入門:3. 計算機の仕組み
2hz9qeedd
0
100
シリーズAI入門:4. 人間の情報処理の仕組み
2hz9qeedd
0
220
シリーズAI入門:5. 第1次AIブーム 探索
2hz9qeedd
0
150
シリーズAI入門:6. 第2次AIブーム 知識ベース
2hz9qeedd
0
150
シリーズAI入門:7. 第3次AIブーム パタン認識
2hz9qeedd
0
260
Other Decks in Education
See All in Education
Human Perception and Cognition - Lecture 4 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
750
ThingLink
matleenalaakso
28
3.8k
Utiliser Linkedin pour améliorer son personal branding
martine
0
100
SQL初級中級_トレーニング【株式会社ニジボックス】
nbkouhou
0
23k
XML and Related Technologies - Lecture 7 - Web Technologies (1019888BNR)
signer
PRO
0
2.5k
HTML5 and the Open Web Platform - Lecture 3 - Web Technologies (1019888BNR)
signer
PRO
1
2.6k
AWS Well-Architected Labを活用してつよつよAWSエンジニアになろう!!! #jawsug_tokyo
masakiokuda
0
220
Unraveling JavaScript Prototypes
debug_mode
0
120
JavaScript - Lecture 6 - Web Technologies (1019888BNR)
signer
PRO
0
2.5k
Nodiレクチャー 「CGと数学」講義資料 2024/11/19
masatatsu
1
250
脳卒中になってしまった さあ、どうする
japanstrokeassociation
0
1.1k
アニメに学ぶチームの多様性とコンピテンシー
terahide
0
290
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
40
2.4k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Rails Girls Zürich Keynote
gr2m
94
13k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Designing Experiences People Love
moore
138
23k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.6k
Agile that works and the tools we love
rasmusluckow
328
21k
Optimising Largest Contentful Paint
csswizardry
33
3k
GitHub's CSS Performance
jonrohan
1030
460k
Why Our Code Smells
bkeepers
PRO
335
57k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Transcript
ニューラルネットワーク シリーズAI入門 © FSCjJh3NeB 2021 (※ 但し画像を除く)
本節の参考書 n これならわかる深層学習入門 u 瀧 雅人(著) p 講談社 (2017/10/21) p
ISBN-10: 4061538284 p ISBN-13: 978-4061538283 u 説明も丁寧で,数式も一段ずつ しっかりおってあるので, きちんと勉強にするのにオススメ 2
Neural Network : NN n 神経細胞(neuron)を模して設計された学習手法 u 単純パーセプトロン u 3層パーセプトロン
u 誤差逆伝搬 u オートエンコーダ u ディープラーニング ざっくりとは, こんな感じに進化 3
ニューロン: 神経細胞 n 刺激を受けると活動電位を変化させて情報を伝達 u 例えば,つつかれるとか何かされると電気を流し, 他の神経細胞に “なんか起きた” という情報を伝える p
例えば,軽くつつかれたときは情報は伝えず, ある程度強くつつかれて初めて伝える…のような閾値も u 脳はこの情報伝達の連鎖で情報処理している 4
… … 単純パーセプトロン n ニューロンを模倣したもっとも単純なモデル u 基本的には多数決のようなものだと思えばよい p 1人で複数の票をもっている人もいて,かつ1点投入する u
出力は 0 か 1 かの2値をとる 入力 出力 w1 w2 wk wn x1 x2 xk xn y u が ある値以下なら0 それ以外は1を返す 重み 5
単純パーセプトロン 審査員 3人から, 合格を2票あつめたら, 次のステージに進める カエル:合格 ウサギ:合格 おさる:失格 審査員とその判定 合格が2票で
閾値を超えたので 合格!!! カエル:失格 ウサギ:合格 おさる:失格 失格 u=2 u=1 y=1 y=0 x1 x2 x3 x1 x2 x3 審査員の投票=入力,結果(合否)=出力 6
単純パーセプトロン カエル:合格 ウサギ:合格 おさる:失格 審査員とその判定 合格が3票で 閾値を超えたので 合格!!! カエル:失格 ウサギ:合格
おさる:失格 失格 u=3 u=1 y=1 y=0 大物審査員 カエルさんは 一人で2票持っている!!! 審査員 3人から, 合格を2票あつめたら, 次のステージに進める これが 重み w x1 x2 x3 x1 x2 x3 審査員の投票=入力,結果(合否)=出力 7
単純パーセプトロン n どんな問題に使えるのか? u 0/1 のような2値のラベルのついた教師データを与え, 未知のデータが,どちらのラベルに属するか答える p 迷惑メールかどうかの判定,偽札かどうかの判定,など A
B A? B? 8
謎:重みw はどうやって決めるのか? n 式から見ても,ポイントは明らかに 重みw u 一方で,前掲のスライドでは何の言及もない… u まさか,手作業で良い感じの値を設定する?? 勾配降下法
9
勾配降下法 n “最小値を探す” ための単純な手法のひとつ u 数学において,最小値探しはよくある(=大事な) 問題の一つ。数理最適化問題として知られる。 p 他の手法としては,例えばニュートン法など n
手続きは単純 u 教師データを持っているため,重みw をある値に設定し た場合に,どのくらい正しく分類できるか計算可能 p 正しく分類 = 誤差を最小にする u 重みw をちょっと変えてみては誤差を調べる u 誤差が一番小さくなったら w を確定する 10
勾配降下法 n 重みを ちょっと変える ? u よさげな重みを探すのはOK u どう探すか??? u
基本的には,誤差と重みの関 係は右図のようになっていて, どこかに 誤差最小 となる 最適解があるはず u なので,それを探す 重みをちょっとずつ変えてみて,誤差を最小にする すごく単純 11
勾配降下法 n 基本的な考え方 u ある 重み を設定したとき, 右図の微分値(傾き)を算出 u 微分値を用い
重み を少し移動 p 当然,下っていく方に動かす u 上記を,繰り返していって, 傾きがある程度小さくなったら 打ち切り Start 本手法は 最急降下法 という ( 勾配降下法 ⊃ 最急降下法 ) 12
勾配降下法 n 誤差 と 重み の関係を表す関数は自明? u 当然,自明ではない(微分は可能そうだがどんな形か分からない) n 関数が自明でないのに,どう微分値を求める?
u 解析的に求めず,力尽くで算出する p f(x) の 任意の点の微分値 を 求めたいのなら… …で,求めるのが早くて簡単 J 13 f(x) x x+δ f(x+δ)
勾配降下法 n 疑問点 u 例えば,右図のような関数を考える u 最適解は,当然 B u でも,前掲の手法だと
A に落ち着いて, そこで解の探索を打ち切ってしまう… みたいなことも,起きたりするのでは?? u おっしゃるとおり!!! p 他にもいろいろな種類の課題が… B A 問題に対応したいろいろなバリエーション手法も ただし,計算量の問題もあり何を使うべきかはケースバイケース ※ ちなみに,線型モデルにおいては二乗誤差が凸関数になることが知られている 14
勾配降下法 n やってることはこれ 1発目 2発目 3発目 ちょっと上過ぎ? もう少し右下を狙おう やり過ぎた。 もう少し左かな
やったね! 勾配降下法はこの方向を計算している 狙撃手は目が見えていなくて,スポッター(観測手,補助者)が “もうちょい右” など指示を出している…と考えると,より正解に近い 15
単純パーセプトロンの限界 n 2値分類はうまくいく …だがそれだけ… u しかも,線形分離可能なものだけしか扱えない p 必ずしも,有限回の試行で最適解に収束しない n やっぱりいろいろやらせたい!!
u パーセプトロンちゃんは,やればできる子!! …多分… 線形分離可能 線形分離不可能 ※1 線形分離可能 = 直線でスパッと分けられるの意 ※2 より正確には “超平面” 16
単純パーセプトロン n 出力を2値ではなく,連続値にしてみる u 一般的に シグモイド関数 を用いて実現 p 閾値を表す関数を 活性化関数
という … … w1 w2 wk wn x1 x2 xk xn y シグモイド関数 ※ 関数f は 任意の活性化関数 17
単純パーセプトロン n 最初に示したパーセプトロンは活性化関数として 階段関数 を採用していた,といえる u 階段関数バージョンの単純パーセプトロンのことを 特に 古典パーセプトロン ともいう
シグモイド関数 階段関数 (ステップ関数) 18
単純パーセプトロン カエル:20 ウサギ:80 おさる:32 審査員とその判定 152点/400点 u=152 大物審査員 カエルさんは 評価点2倍
で評価する 審査員 3人がそれぞれ, 100点満点で評価 これが 重み w x1 x2 x3 x1 x2 x3 審査員の採点=入力,結果(合否)=出力 合計時には重みをかけて40点 = 0.23 19
単純パーセプトロンとロジスティック回帰 n 活性化関数にシグモイド関数を採用した場合, 数式としてはロジスティック回帰と等価 n ロジスティック回帰 u 成功・失敗 の 2値をとるデータを想定
u 上記に関わる特徴量が n個 あったとする u ある特徴量セットが 成功・失敗 する確率を求める 20
単純な 0/1 よりは柔軟な表現になったがそれだけ… 結局,線形分離可能な問題しか解けない ひとつのニューロンだけだったからなのでは? 人間の脳も無数のニューロンの組み合わせで処理 いくつもニューロンを組み合わせれば良いのでは? 多層パーセプトロンの誕生 21
フーリエ級数のイメージ n どんな複雑な波形も,単純な波形の組み合わせで 表現ができる! u ひとつの波形(関数)だけだと,複雑は無理 u ふたつだと,少し良い u みっつだと,さらに良い
1項のみ 2項まで 3項まで 4項まで 方波形の フーリエ級数近似 @wikipedia n パーセプトロンも関数 u たくさんの関数を重ねれば, 複雑な連続関数を模倣できる※ u 多ければ多いほど表現力が増す 22 ※ cf. 普遍性定理
最初の方のイメージで言うと… 良い審査をする審査員には多く票を振り分けたい 審査員も,観点Aからの評価は得意だけど,観点Bは不得意とかある 少人数の1回の審査だけで合否判断…というのではちょっと判断が粗すぎる 審査員の審査,その審査…とかしてあげれば,適正な評価ができる! …みたいな。 審査 審査 審査 23
多層(3層)パーセプトロン n 出力までの間にさらに層を挟んだパーセプトロン u 多層になったおかげで,非線形でも可能に! ← 線形分離の問題を解決 u さらに,複数出力も可能に! ←
ベクトルが扱える 入力 隠れ層 w11 wJI x1 xi xI 重み … … … h1 hJ y1 yk yK … … v11 vKJ 出力 重み 24
多層(3層)パーセプトロンの課題 n 明らかに重みの計算が大変 u 2層の時には,対象は1つだけだった p 勾配法の計算は1つだけ(それでも,最適解探しは面倒) u 3層では,隠れ層 +
出力 の数 p 隠れ層が多いほど複雑なものにも対応できるし, 画像などベクトルを扱いたければ出力も増やす必要 が,これよりさらに根本的で大きな問題が… 25
多層(3層)パーセプトロンの課題 n 入力と出力のズレ(誤差)を最小化する重みの探索 u 単層でも多層でも,何を入れて,何が出てきて, それが正解とどのくらいズレてたか…しか わからない u 隠れ層の 重み
はどう計算すれば良いのか??? p 隠れ層のどれが,出力に対してどのくらい影響しているか, というのがわからなければ,どこをどう調整して良いのやら… 誤差逆伝搬法 26
多層(3層)パーセプトロンの課題 … … w1 w2 wk wn x1 x2 xk
xn y 正解データ ! y 誤差E 既知 既知 単純パーセプトロンでは 入力に対するズレがわかっているので, ズレを最小化するよう 重み を計算可能 w11 wJI x1 xi xI … … … h1 hJ y1 yk yK … … v11 vKJ 誤差E 正解データ 正解データ 正解データ 既知 既知 調整しようにもどこをどう調整すれば…? 未知 未知 未知 27
誤差逆伝搬:はじめに ─ 普通に考えるとすごく大変 n 例えば,全層が1素子のみの例を考える u これを勾配降下法でなんとかする u 間の層をまとめて,単純パーセプトロン的に扱えれば なんとかなるはず
u やったね! …と,思いきや… u まとめられるけど,まとめること自体や,まとめたやつ (合成関数)を微分するというのが大変に面倒 x1 y1 ただの関数の連鎖なので,まぁ まとめる ことはできる ひとつの時はそこそこ楽だったのに… 28
誤差逆伝搬:分割統治 n それなら,ひとつずつ解いていったら? … … 何らかの 重み はついていて, 何かの入力に対し, 何らかの出力はしている
赤のノードの出力がいくらで, どんな 重み がかかって, 自分に入力されてきたか,はわかる 最終局面では,誤差も当然わかる 29
誤差逆伝搬:図解0 n 概念と記法の整理 u パーセプトロンは,入力を合算して活性化関数を通し,出力 i j k ひとつ前の層の各出力に重みをつけたのの合算 任意の活性化関数(シグモイド関数など)
出力は,入力の合算 u を活性化関数にかけたもの 数式怖い!という人は とりあえず,今はパスしてOK は,入力層から数えて,何層目かを示す 入力の合算 活性化関数 出力 ※ さっきまでは出力は y って書いてなかった?? ←最終出力は y ,途中の出力が z という関係です 30
誤差逆伝搬:図解1 n 下図のようなネットワークを考える 31
誤差逆伝搬:図解2 n ある特定のノードペアに着目する j i 32
誤差逆伝搬:図解3 n ノード i の入出力を考えると以下の通り u 緑のラインの通り,値を集約して出力 j i iの出力値
は,入力層から数えて,何層目かを示す 33
誤差逆伝搬:図解4 n ノード j に入ってくる 誤差影響度※ は以下の通り u ひとつ先の層の誤差が赤のラインの通り集約 j
i 前のノードまでの 誤差影響度の総和 ゴールからここまでの 誤差影響度 iの出力値 ※ 最終の誤差に与える影響の度合い 最終出力の 誤差を表す関数 誤差影響度 数式怖い!という人は 数式は見ないでOK 34
誤差逆伝搬:図解5 n ノード i,j の間の重みは u j への入力として, i の出力に対して
この重み がかかる j i iの出力値 前のノードまでの 誤差影響度の総和 ゴールからここまでの 誤差影響度 35
誤差逆伝搬:図解6 n 重み の傾きは,出力値 と 誤差 との関係で決定 u 両方わかってるので,計算できる j
i iの出力値 前のノードまでの 誤差影響度の総和 ゴールからここまでの 誤差影響度 36
偏微分について n 念のため,偏微分について確認 u 変数が複数あるとき,任意の変数以外を定数として微分 u 記号には を用いる たとえば… としたとき
文章で説明するなら… 変数として x, y の2つをもつ,ある関数 z があったとして, 変数 x 以外の値が変わらないとしたら,z の変化量は 2x 37
偏微分について n 前頁で示した説明に基づくと,誤差逆伝搬の図解6スライド にあった謎の記号の意味は以下の通り このエッジの 重みw 以外が固定されているとして, この 重みw が,誤差全体に与える影響はどのくらい?
その影響の度合いは… ノードj への入力z と,ゴールからここまでの影響度 δ を それぞれ掛け合わせたくらいの感じ (= wをいじると,入力に誤差をかけただけ動く) 急に数式が出てきてびっくりしたかもしれませんが, 難しいことは何もいってない。全然怖くない! 38
図解4の補遺 n ごちゃっとした式を少しだけ読み解く u やってることは,誤差の影響度合いの合計 p ノード j の 影響度合いは,前のノード前の影響度合いと,
それらへのノードへの入力の大きさで決まる つながってるノード全部 の意 (l+1)層への入力の大きさ ※ f ではなく f’ (微分)な点に注意 j 前のノードまでの 誤差影響度の総和 (l+1)層までの誤差影響度 j 39
誤差逆伝搬:まとめ n めちゃめちゃ大変かと思ったけど, よくよく考えてみたら意外と簡単にいけた u 多層の場合,重さを求めるための微分(勾配算出)が ものすごく大変そうだと思われた p 合成関数を作って,微分するという操作は困難 u
単純に解けないか,いろいろと考えてみたところ, 普通に一段ずつ出力を計算していって誤差を求め, 影響度を一段ずつ戻すだけで求められるとわかった u やったね! 多層にした場合であっても, 無理なく重みが求められるように 40
n 数式を追わずに ふわっと簡単に説明しているので, 「は??当たり前じゃん」と思うかもしれませんが… n 普通に いつでも 一段ずつ戻せる訳ではない!! u 戻せるのは
活性化関数 が一定の条件を満たしているから p 微分が可能(連続したなめらかな関数)であると言うこと • そもそも微分できないと勾配降下法が使えない p 微分値が一定ではないこと • y=ax+b の様な活性化関数であれば,微分はできるが傾き一定でダメ …など,いろいろな工夫をして 簡単にできるようにした のが実態 41 特にシグモイド関数は なので, 微分したときに元の関数が出てきて,微分をずーっと繰り返せる
パーセプトロンのアイデアのまとめ n 入力に対して適切な出力を行うよう 重み を計算 u 教師付であるので,適切な出力とは誤差最小 u 数理最適化問題を解けばよく,ここでは勾配降下法など シンプルなアイデアを採用
n 複雑な問題のために拡張すると課題 u 多層化することで対応したが,勾配の算出に課題 u 誤差逆伝搬という手法で,勾配の算出を実現 p 行いたかった 重み の計算が実現できた 42
多層パーセプトロンの課題 n 多段にすればするほど複雑な表現が可能 u 多段での学習ができるようになったので大成功! u いろんな問題が解決できるマスターキーをゲット!! u …と,思ったが3層より深くしてみても不思議なことに 特に精度は向上せず,良いことはなかった…
勾配消失・過学習 43
多層パーセプトロンの課題:勾配消失 n 隠れ層を深くすると,重み の調整に失敗 u 誤差逆伝搬については,誤差の影響度をゴールから逆に どんどん先送りしていくのだった u 活性化関数 f
の微分に重みをかけて送っていく p 微分値が1以下だと…? 仮に 0.1 だとする x1 y1 0.1 0.12 0.13 0.14 誤差の伝搬 層が深くなると,影響度がほぼゼロになる(勾配消失)のため, 入力に近い層になるほど 重み の学習がおこなわれなくなってしまう 0.14 = 0.00001 44
多層パーセプトロンの課題:過学習 n 複雑な表現が可能になると,過剰に適合 u 教師データの再現に注力し過ぎ,未知データについて, うまく分類できなくなってしまう 粗すぎる 適切 過剰 45
人間も過学習する n シミュラクラ現象 u 点が三つあると顔に見える n 数学の教科書がなんかファンシーな感じに見える 46
ニューラルネットワークいろいろ n ここでは パーセプトロン を見てきたが, それ以外の種類の ニューラルネットワーク も存在 u 制限ボルツマンマシン
p 確定的なネットワークであるパーセプトロン型のNWに対し, 確率的なネットワークを作成する p 教師なし のニューラルネットワーク u 自己組織化特徴マップ p こちらも 教師なし のニューラルネットワーク 47 深層学習 ブームの元は このタイプ