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
17
【備忘録】ニューラルネットワークとはなにか
hirotask
January 25, 2024
Tweet
Share
More Decks by hirotask
See All by hirotask
【地域おこし勉強会】仮想化技術入門
hirotask
0
40
【地域おこし勉強会 第3回】ソフトなソフトウェアを作る【2023_10_25】
hirotask
0
21
【地域おこし勉強会 第2回】Git勉強会【2023/10/18】
hirotask
0
30
【Tech Community LuMo】第1回 バックエンド勉強会
hirotask
0
24
【2023/04/28 東北Tech道場】東北Tech道場に入ったら いつの間にかAndroiderになっていた話
hirotask
0
70
エンジニアもパワポを使って アウトプットしたほうが良い
hirotask
0
120
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
KATA
mclloyd
29
13k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Testing 201, or: Great Expectations
jmmastey
38
7k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.8k
Agile that works and the tools we love
rasmusluckow
327
21k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.2k
Building an army of robots
kneath
302
42k
We Have a Design System, Now What?
morganepeng
50
7.2k
Docker and Python
trallard
40
3.1k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
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