Slide 1

Slide 1 text

1

Slide 2

Slide 2 text

アジェンダ 1. 自己紹介 2. ニューラルネットワーク概要 3. ニューラルネットワーク詳細 4. ニューラルネットワークの現状 2

Slide 3

Slide 3 text

まずお前誰やねん 3

Slide 4

Slide 4 text

自己紹介 名前: hirotask Twitter: @erudosan4649(配信・ゲーム用) @hirotask_(プログラミング・リアル用) 4

Slide 5

Slide 5 text

ニューラルネットワークとは? 5

Slide 6

Slide 6 text

まずは概要から 6

Slide 7

Slide 7 text

ざっくり概要 ● 英語表記では、Neural Network(NN) ● 機械学習の手法の一つ ● 1943年に提案された ● 主に教師あり学習を行う ● パーセプトロン(後述)を複数つなぎ合わせた変換器 ● Covolutional Neural Network(CNN)やReccurent Neural Network(RNN)といった ニューラルネットワークを発展させたものが最近話題 ● Deep Learningはニューラルネットワークの中間層が3層以上バージョン 7

Slide 8

Slide 8 text

パーセプトロンとは? 8 5 ● ニューロンとシナプスから成る数理モデル(下図) ● 複数の入力に対して加算と乗算のみを行い、出力値を決定する関数 ● 各ニューロンの値は、 重み(Weight)が乗算されたのち加算される ● 出力値を調整するために加算される値を バイアス(Bias)という(下図だとバイアスは 1) 6 5 ニューロン シナプス 入 力 出 力 単純パーセプトロン 2 -1 重み バイアス

Slide 9

Slide 9 text

ネットワークとは? ● パーセプトロンを複数つなぎ合わせたものをネットワークという ● ニューラルネットワークは、出力値をsoftmax関数またはsigmoid関数といった活性 化関数(後述)を用いて確率値(0~1)にしたネットワーク ● 特に、出力値の活性化関数にstep関数を用いたネットワークは多層パーセプトロン という ○ 多層パーセプトロンの出力値は実数値 9

Slide 10

Slide 10 text

ニューラルネットワークの数理モデル 10 入 力 ニューラルネットワーク 出 力 : ・・・ : 入力層 (入力レイヤー) 出力層 (出力レイヤー) 中間層 (中間レイヤー)

Slide 11

Slide 11 text

活性化関数(Activation Function)とは? ● 単純なニューロンの値の加算では、表現しきれない問題(計算が複雑等)がある ○ 逆に言うと、活性化関数を使わなければ複雑な問題は解けない ● 活性化関数は、加算された値を更に変換して次のニューロンに渡す役割を持つ ● 特に、出力層に用いられる活性化関数は、実数値を確率値に変換する役割を持つ 場合がある ● 活性化関数は開発者が決める(AIは決めない) ● 代表的な活性化関数として、ReLU関数、tanh関数、sigmoid関数などがある 11

Slide 12

Slide 12 text

活性化関数のイメージ 12 ※Nekoallergy. “【初心者】ネコでも分かる「活性化関数」ってなに? ”. Zenn. 2021,08,27. https://zenn.dev/nekoallergy/articles/4e224b57a97af9 (参照日: 2022/12/19) ● 単純な足し算だけだと、直線(線 形)しか表せない ○ 入力としてx1,x2があった時 の出力yはy = x1 + x2 ● 活性化関数は曲線(非線形)を表 現することができる ○ 活性化関数は非線形関数だ から

Slide 13

Slide 13 text

代表的な活性化関数 13 三谷 大暁.“ニューラルネットワークで使われる活性化関数まとめ ”.AI研. (参 照日: 2022/12/21)

Slide 14

Slide 14 text

【コラム】線形・非線形とは? (1/2) ● 簡単に言うと、グラフにした時に直線になるものは線形関数であり、そうでないもの は非線形関数である ○ 線形関数の例: x, 2x, Ax ○ 非線形関数の例: x^2, e^x, logx, sinx ● 厳密には、以下の2つの条件を満たすものを線形関数という ● 満たさないものは非線形関数という 14 https://math-fun.net/20190619/1715/#i

Slide 15

Slide 15 text

【コラム】線形・非線形とは?(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関数の定義

Slide 16

Slide 16 text

ここからより専門的な話をするよ 16

Slide 17

Slide 17 text

複雑な数式も出てくるよ 17

Slide 18

Slide 18 text

重みとバイアスはどうやって決まる? 18 5 ● 活性化関数は開発者が決める ● では、重みとバイアスは誰が決める? ○ →AIが決める ○ 重みとバイアスをAIが推定することを「学習する(Learning)」と言う 6 5 入 力 出 力 2 -1 重み バイアス

Slide 19

Slide 19 text

学習するために、結果を評価する ● 学習するためには、人間が正しいとする結果とAIが出力した結果の誤差(損失) を計算する ● そしてその誤差(損失)が1番小さいときの、重みおよびバイアスが最適な値で ある(この手法を勾配降下法(後述)という) ● 人間が正しいとする結果とAIが出力した結果の誤差(損失)を測る関数を損失 関数(Loss Function)という ● 損失関数は主に「平均二乗誤差」または「交差エントロピー誤差」を用いる 19

Slide 20

Slide 20 text

平均二乗誤差(Mean Square Loss)とは? ● 平均二乗誤差は次の数式で表される誤差であり、ニューラルネットワークの出した 「出力」と、人間が与える「正解データ」の差の、2乗の総和を求める ● 平均二乗誤差が小さいほど、出力と正解データの誤差が少ない 20 広告メディア事業部 .“損失関数とは?ニューラルネットワークの学習理論【機械学習】 ”.RIGHT CODE. (参照日: 2022/12/21)

Slide 21

Slide 21 text

交差エントロピー誤差(Cross-Entropy Loss)とは? ● 平均二乗誤差よりも、一般的に広く使われている誤差 ○ 勾配降下法(後述)と相性がいいため ● 平均二乗誤差と同じく、交差エントロピー誤差が小さいほど出力と正解データの誤 差が少ない 21 広告メディア事業部 .“損失関数とは?ニューラルネットワークの学習理論【機械学習】 ”.RIGHT CODE. (参照日: 2022/12/21)

Slide 22

Slide 22 text

勾配降下法とは?(1/4) ● 重みWnを損失関数L(w1,w2, …, wn)に代入したとき、損失が最小(勾配が最小)と なる重みWnを求める手法 ● 簡単のため、重みが2つのときの勾配降下法を考える ● 重み2つと損失関数の関係をグラフで表すと図のようになる 22 右図の青い点が現在の重みと損失関数の位置。 これの損失関数の値を限りなく小さくするためには? 微分を使う https://www.alpha.co.jp/blog/202202_01

Slide 23

Slide 23 text

勾配降下法とは?(2/4) 23 ● 微分で求めた導関数から接線の傾きがわかる ● しかし、高校数学とは違いパラメータがw1, w2の2つ ○ 偏微分を用いる ● (w1,損失関数)平面から見たグラフの傾きを求めるときはw2を定数を考えて微分 する(右図) ● (w2,損失関数)平面から見たグラフの傾きも同様に求める(左図) https://www.alpha.co.jp/blog/202202_01

Slide 24

Slide 24 text

勾配降下法とは?(3/4) 24 ● 前述したようにすれば、すべてのパラメータをどちらに動かせばよいか、その方向が わかる(図) ● この方向を示したベクトルを勾配ベクトルといい、∇(ナブラ) f(w1, w2, …, wn)と表す 2変数の場合の勾配ベクトル https://www.alpha.co.jp/blog/202202_01 https://qiita.com/koshian2/items/028 c457880c0ec576e27

Slide 25

Slide 25 text

勾配降下法とは?(4/4) 25 ● 重みの移動方向は勾配ベクトルで分かるが、どのくらい動かせばいいのか分から ない ○ これをいい塩梅に調整するのが学習率 ● 学習率は定数のときもあれば、変数のときもある ● したがって、重みの更新を表す式は以下の通りである ● これの意味は「前回のパラメータ」から「誤差をパラメータで微分して学習率を掛け たもの」を引いて次のパラメータに更新するよ、という意味 w: 重み E(w): 損失関数 α: 学習率 ∇: (偏)微分 t: 時間 https://www.alpha.co.jp/blog/202202_01

Slide 26

Slide 26 text

【コラム】勾配降下法の問題点と対策 ● 勾配降下法は極小値が複数ある場合、極小値を最小値としてしまうため、誤学習 する可能性が高い(これを局所問題という) ○ 微分=0はかならずしも最小値とは限らない ● 局所問題を起こりにくくした手法として確率的勾配降下法がある(らしい) ● 詳しくはわからないので、各自調べてみてほしい 26

Slide 27

Slide 27 text

更新するための誤差を得る方法 ● 重みの更新には「誤差をパラメータで微分して学習率を掛けたもの」が必要 ○ 重みの更新には誤差が必要 ● しかし、誤差は出力層でしか得られない ○ したがって、本来はニューラルネットワークすべての重みを一気に計算しなければ ならない ○ それだと一度に行う計算が膨大 ■ 重みが10万個あったら、一度に計算する量は10万個なのでO(10万) ○ 「誤差をパラメータで微分したもの」を各レイヤーに伝えれば、順番に計算できる ■ 計算量の削減! ● どうやって出力の誤差を各レイヤーに伝えるの? ● 誤差逆伝播法を使う 27

Slide 28

Slide 28 text

誤差逆伝播法とは?(1/5) ● 微分の連鎖律を用いた手法 ○ 「複数の関数が合成された 合成関数を微分する時、その導関数がそれぞれの導関数の席で表せ る」という関係式を連鎖律という ● 以後、NNを構成する各要素は下図のように表記する 28

Slide 29

Slide 29 text

誤差逆伝播法とは?(2/5) ● 実際に赤枠だけの誤差の更新を行ってみる ● 赤枠の中では以下の計算を行っている 1. 繋がっているニューロンの入力に対して重みをかけ、 バイアスをプラスする 2. 1.で計算した結果を活性化関数を通してニューロンの 出力値を得る 3. 2.で計算した予測値と正解データから、誤差関数を 使って誤差を計算する ● これを踏まえて、誤差w1(2)の更新を行う 29

Slide 30

Slide 30 text

誤差逆伝播法とは?(3/5) ● 誤差w1(2)の更新式は以下の通り ● このうち     は   と等しい ● これを微分の連鎖律を用いて表すと以下の通り になる 30 ● つまり、前述の1,2,3の式を偏微分したものの 積となる

Slide 31

Slide 31 text

誤差逆伝播法とは?(4/5) よって求めたい誤差の更新式は より、 バイアスの更新式は1.式をバイアスで偏微分するので、 となる。 31

Slide 32

Slide 32 text

誤差逆伝播法とは?(5/5) ● 中間層においても、同様に計算を行う ● 層が増えても、連鎖律の項の数が増えるだけであるため、計算手法は変わ らない ● したがって、学習における流れをまとめると以下の通りになる 32 https://www.investor-daiki.com/it/ ai/deeplearning-math-2

Slide 33

Slide 33 text

【コラム】損失関数はE?L? ● どちらでも正解 ● 本資料も様々な文献から式・画像を引用しているため、表記ゆれがある ○ 損失関数(Loss Function)は誤差関数(Error Function)ともいう事がある(文献による) ● したがって、NNにおいてEまたはLが出てきた場合は、だいたい損失関数 ● しかし、たまに期待値E(X); Xは確率変数 である場合もある ● その場合は、パラメータが確率変数となっているか否かを判断すると良い 33