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
hirotask
January 25, 2024
0
19
【備忘録】ニューラルネットワークとはなにか
hirotask
January 25, 2024
Tweet
Share
More Decks by hirotask
See All by hirotask
【地域おこし勉強会】仮想化技術入門
hirotask
0
46
【地域おこし勉強会 第3回】ソフトなソフトウェアを作る【2023_10_25】
hirotask
0
22
【地域おこし勉強会 第2回】Git勉強会【2023/10/18】
hirotask
0
35
【Tech Community LuMo】第1回 バックエンド勉強会
hirotask
0
26
【2023/04/28 東北Tech道場】東北Tech道場に入ったら いつの間にかAndroiderになっていた話
hirotask
0
77
エンジニアもパワポを使って アウトプットしたほうが良い
hirotask
0
130
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
44
13k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Embracing the Ebb and Flow
colly
84
4.5k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.7k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Facilitating Awesome Meetings
lara
51
6.2k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.1k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
Bash Introduction
62gerente
610
210k
Thoughts on Productivity
jonyablonski
68
4.4k
The Power of CSS Pseudo Elements
geoffreycrofte
74
5.4k
How to Think Like a Performance Engineer
csswizardry
22
1.3k
Transcript
1
アジェンダ 1. 自己紹介 2. ニューラルネットワーク概要 3. ニューラルネットワーク詳細 4. ニューラルネットワークの現状 2
まずお前誰やねん 3
自己紹介 名前: hirotask Twitter: @erudosan4649(配信・ゲーム用) @hirotask_(プログラミング・リアル用) 4
ニューラルネットワークとは? 5
まずは概要から 6
ざっくり概要 • 英語表記では、Neural Network(NN) • 機械学習の手法の一つ • 1943年に提案された • 主に教師あり学習を行う
• パーセプトロン(後述)を複数つなぎ合わせた変換器 • Covolutional Neural Network(CNN)やReccurent Neural Network(RNN)といった ニューラルネットワークを発展させたものが最近話題 • Deep Learningはニューラルネットワークの中間層が3層以上バージョン 7
パーセプトロンとは? 8 5 • ニューロンとシナプスから成る数理モデル(下図) • 複数の入力に対して加算と乗算のみを行い、出力値を決定する関数 • 各ニューロンの値は、 重み(Weight)が乗算されたのち加算される
• 出力値を調整するために加算される値を バイアス(Bias)という(下図だとバイアスは 1) 6 5 ニューロン シナプス 入 力 出 力 単純パーセプトロン 2 -1 重み バイアス
ネットワークとは? • パーセプトロンを複数つなぎ合わせたものをネットワークという • ニューラルネットワークは、出力値をsoftmax関数またはsigmoid関数といった活性 化関数(後述)を用いて確率値(0~1)にしたネットワーク • 特に、出力値の活性化関数にstep関数を用いたネットワークは多層パーセプトロン という ◦
多層パーセプトロンの出力値は実数値 9
ニューラルネットワークの数理モデル 10 入 力 ニューラルネットワーク 出 力 : ・・・ :
入力層 (入力レイヤー) 出力層 (出力レイヤー) 中間層 (中間レイヤー)
活性化関数(Activation Function)とは? • 単純なニューロンの値の加算では、表現しきれない問題(計算が複雑等)がある ◦ 逆に言うと、活性化関数を使わなければ複雑な問題は解けない • 活性化関数は、加算された値を更に変換して次のニューロンに渡す役割を持つ • 特に、出力層に用いられる活性化関数は、実数値を確率値に変換する役割を持つ
場合がある • 活性化関数は開発者が決める(AIは決めない) • 代表的な活性化関数として、ReLU関数、tanh関数、sigmoid関数などがある 11
活性化関数のイメージ 12 ※Nekoallergy. “【初心者】ネコでも分かる「活性化関数」ってなに? ”. Zenn. 2021,08,27. https://zenn.dev/nekoallergy/articles/4e224b57a97af9 (参照日: 2022/12/19)
• 単純な足し算だけだと、直線(線 形)しか表せない ◦ 入力としてx1,x2があった時 の出力yはy = x1 + x2 • 活性化関数は曲線(非線形)を表 現することができる ◦ 活性化関数は非線形関数だ から
代表的な活性化関数 13 三谷 大暁.“ニューラルネットワークで使われる活性化関数まとめ ”.AI研.<https://ai-kenkyujo.com/artificial-intelligence/algorithm/neuralnetwork-activationfunction/> (参 照日: 2022/12/21)
【コラム】線形・非線形とは? (1/2) • 簡単に言うと、グラフにした時に直線になるものは線形関数であり、そうでないもの は非線形関数である ◦ 線形関数の例: x, 2x, Ax
◦ 非線形関数の例: x^2, e^x, logx, sinx • 厳密には、以下の2つの条件を満たすものを線形関数という • 満たさないものは非線形関数という 14 https://math-fun.net/20190619/1715/#i
【コラム】線形・非線形とは?(2/2) • 実際に活性化関数が非線形関数になっているか確認 ◦ ReLU関数を例に計算してみる 15 • 加法性を満たしているか? ◦ f(2+
(-3)) = 0 ◦ f(2) + f(-3) = 2 - 0 = 2 ◦ f(2 + (-3)) ≠ f(2) + f(-3) となるため、満たしていない • そのため、ReLU関数は非線形関数である https://atmarkit.itmedia.co.jp/ait/articles/2003/11/news016.html ReLU関数の定義
ここからより専門的な話をするよ 16
複雑な数式も出てくるよ 17
重みとバイアスはどうやって決まる? 18 5 • 活性化関数は開発者が決める • では、重みとバイアスは誰が決める? ◦ →AIが決める ◦
重みとバイアスをAIが推定することを「学習する(Learning)」と言う 6 5 入 力 出 力 2 -1 重み バイアス
学習するために、結果を評価する • 学習するためには、人間が正しいとする結果とAIが出力した結果の誤差(損失) を計算する • そしてその誤差(損失)が1番小さいときの、重みおよびバイアスが最適な値で ある(この手法を勾配降下法(後述)という) • 人間が正しいとする結果とAIが出力した結果の誤差(損失)を測る関数を損失 関数(Loss
Function)という • 損失関数は主に「平均二乗誤差」または「交差エントロピー誤差」を用いる 19
平均二乗誤差(Mean Square Loss)とは? • 平均二乗誤差は次の数式で表される誤差であり、ニューラルネットワークの出した 「出力」と、人間が与える「正解データ」の差の、2乗の総和を求める • 平均二乗誤差が小さいほど、出力と正解データの誤差が少ない 20 広告メディア事業部
.“損失関数とは?ニューラルネットワークの学習理論【機械学習】 ”.RIGHT CODE.<https://rightcode.co.jp/blog/information-technology/loss-function-neural-network-learning-theory> (参照日: 2022/12/21)
交差エントロピー誤差(Cross-Entropy Loss)とは? • 平均二乗誤差よりも、一般的に広く使われている誤差 ◦ 勾配降下法(後述)と相性がいいため • 平均二乗誤差と同じく、交差エントロピー誤差が小さいほど出力と正解データの誤 差が少ない 21
広告メディア事業部 .“損失関数とは?ニューラルネットワークの学習理論【機械学習】 ”.RIGHT CODE.<https://rightcode.co.jp/blog/information-technology/loss-function-neural-network-learning-theory> (参照日: 2022/12/21)
勾配降下法とは?(1/4) • 重みWnを損失関数L(w1,w2, …, wn)に代入したとき、損失が最小(勾配が最小)と なる重みWnを求める手法 • 簡単のため、重みが2つのときの勾配降下法を考える • 重み2つと損失関数の関係をグラフで表すと図のようになる
22 右図の青い点が現在の重みと損失関数の位置。 これの損失関数の値を限りなく小さくするためには? 微分を使う https://www.alpha.co.jp/blog/202202_01
勾配降下法とは?(2/4) 23 • 微分で求めた導関数から接線の傾きがわかる • しかし、高校数学とは違いパラメータがw1, w2の2つ ◦ 偏微分を用いる •
(w1,損失関数)平面から見たグラフの傾きを求めるときはw2を定数を考えて微分 する(右図) • (w2,損失関数)平面から見たグラフの傾きも同様に求める(左図) https://www.alpha.co.jp/blog/202202_01
勾配降下法とは?(3/4) 24 • 前述したようにすれば、すべてのパラメータをどちらに動かせばよいか、その方向が わかる(図) • この方向を示したベクトルを勾配ベクトルといい、∇(ナブラ) f(w1, w2, …,
wn)と表す 2変数の場合の勾配ベクトル https://www.alpha.co.jp/blog/202202_01 https://qiita.com/koshian2/items/028 c457880c0ec576e27
勾配降下法とは?(4/4) 25 • 重みの移動方向は勾配ベクトルで分かるが、どのくらい動かせばいいのか分から ない ◦ これをいい塩梅に調整するのが学習率 • 学習率は定数のときもあれば、変数のときもある •
したがって、重みの更新を表す式は以下の通りである • これの意味は「前回のパラメータ」から「誤差をパラメータで微分して学習率を掛け たもの」を引いて次のパラメータに更新するよ、という意味 w: 重み E(w): 損失関数 α: 学習率 ∇: (偏)微分 t: 時間 https://www.alpha.co.jp/blog/202202_01
【コラム】勾配降下法の問題点と対策 • 勾配降下法は極小値が複数ある場合、極小値を最小値としてしまうため、誤学習 する可能性が高い(これを局所問題という) ◦ 微分=0はかならずしも最小値とは限らない • 局所問題を起こりにくくした手法として確率的勾配降下法がある(らしい) • 詳しくはわからないので、各自調べてみてほしい
26
更新するための誤差を得る方法 • 重みの更新には「誤差をパラメータで微分して学習率を掛けたもの」が必要 ◦ 重みの更新には誤差が必要 • しかし、誤差は出力層でしか得られない ◦ したがって、本来はニューラルネットワークすべての重みを一気に計算しなければ ならない
◦ それだと一度に行う計算が膨大 ▪ 重みが10万個あったら、一度に計算する量は10万個なのでO(10万) ◦ 「誤差をパラメータで微分したもの」を各レイヤーに伝えれば、順番に計算できる ▪ 計算量の削減! • どうやって出力の誤差を各レイヤーに伝えるの? • 誤差逆伝播法を使う 27
誤差逆伝播法とは?(1/5) • 微分の連鎖律を用いた手法 ◦ 「複数の関数が合成された 合成関数を微分する時、その導関数がそれぞれの導関数の席で表せ る」という関係式を連鎖律という • 以後、NNを構成する各要素は下図のように表記する 28
誤差逆伝播法とは?(2/5) • 実際に赤枠だけの誤差の更新を行ってみる • 赤枠の中では以下の計算を行っている 1. 繋がっているニューロンの入力に対して重みをかけ、 バイアスをプラスする 2. 1.で計算した結果を活性化関数を通してニューロンの
出力値を得る 3. 2.で計算した予測値と正解データから、誤差関数を 使って誤差を計算する • これを踏まえて、誤差w1(2)の更新を行う 29
誤差逆伝播法とは?(3/5) • 誤差w1(2)の更新式は以下の通り • このうち は と等しい • これを微分の連鎖律を用いて表すと以下の通り になる 30 •
つまり、前述の1,2,3の式を偏微分したものの 積となる
誤差逆伝播法とは?(4/5) よって求めたい誤差の更新式は より、 バイアスの更新式は1.式をバイアスで偏微分するので、 となる。 31
誤差逆伝播法とは?(5/5) • 中間層においても、同様に計算を行う • 層が増えても、連鎖律の項の数が増えるだけであるため、計算手法は変わ らない • したがって、学習における流れをまとめると以下の通りになる 32 https://www.investor-daiki.com/it/
ai/deeplearning-math-2
【コラム】損失関数はE?L? • どちらでも正解 • 本資料も様々な文献から式・画像を引用しているため、表記ゆれがある ◦ 損失関数(Loss Function)は誤差関数(Error Function)ともいう事がある(文献による) •
したがって、NNにおいてEまたはLが出てきた場合は、だいたい損失関数 • しかし、たまに期待値E(X); Xは確率変数 である場合もある • その場合は、パラメータが確率変数となっているか否かを判断すると良い 33