>100 Views
March 16, 23
スライド概要
学内セミナーで使用したニューラルネットワークに関する資料。
機械学習に関する前提知識、ニューラルネットワークの構造、学習方法などをまとめた。
*slideshare(https://www.slideshare.net/ssuser4c06f8/ss-256527379)からの移植
2023/3/15 DDoS2023春 ニューラルネットワーク 武蔵野⼤学 脱初⼼者データサイエンスオンラインセミナー 2023春 ⼩宮和真 misya11p 武蔵野⼤学 データサイエンス学部 2年 @ds33miya
2023/3/15 DDoS2023春 ⽬次 1. ニューラルネットワークとは 2. ニューラルネットワークの構成 3. ニューラルネットワークの学習 4. ニューラルネットワークの実装 1
2023/3/15 DDoS2023春 1. ニューラルネットワークとは 2
2023/3/15 1. ニューラルネットワークとは DDoS2023春 ニューラルネットワーク ⼈間の脳の神経回路を模した数理モデル 数理モデル ある現象を数式で記述したもの.ここでは関数と捉えておくと良い. なんらかの数字 数理モデル なんらかの数字 3
2023/3/15 1. ニューラルネットワークとは DDoS2023春 機械学習モデル ⼊⼒に対して適切な出⼒が⾏えるように学習できる数理モデル なんらかの数字 機械学習 モデル いい感じの数字 4
2023/3/15 1. ニューラルネットワークとは DDoS2023春 機械学習モデル 上⼿く学習させると⾊々なタスクがこなせる様になる タスク 入力例 出力例 画像分類 猫の画像 猫(テキスト) 将棋 盤面 次の手 会話 質問 回答 5
2023/3/15 1. ニューラルネットワークとは DDoS2023春 機械学習モデル モデルへの⼊出⼒は数値である必要がある →あるタスクに機械学習モデルを適応させたい場合,数値として表せる⼊出⼒ を考えることが必須 数値化の例:画像 画像は画素(単⾊の正⽅形)の集まりで,⾊はカラーコードなどから数値化で きる 0 2 0 1 0 2 3 3 2 1 0 1 2 6 9 1 0 8 2 2 6 0 2 1 1 6
2023/3/15 DDoS2023春 1. ニューラルネットワークとは 機械学習 機械学習モデルを学習させること → ⼊⼒に対して適切な出⼒を⾏える様にすること 機械学習モデルは関数であるため,機械学習の⽬的はいい関数を得ることと⾔ える 7
2023/3/15 1. ニューラルネットワークとは DDoS2023春 機械学習 関数の内部の式は事前に決まっている(⼈間が決める) 例えば以下の式 𝑓 𝑥 = 𝑎𝑥 + 𝑏 しかし,この式の中の具体的な値(𝑎, b)は決まっていない この値(𝑎, b)をパラメータと呼び,適切なパラメータをデータから⾃動で求め ることを機械学習と呼ぶ 8
2023/3/15 DDoS2023春 1. ニューラルネットワークとは ニューラルネットワーク NN(ニューラルネットワーク)は機械学習モデルの⼀種で,以下の様な特徴を 持つ • ⼈間の脳の神経回路を模して作られる • 表現⼒が⾼い • 拡張性・汎⽤性が⾼い この様な特徴があってか,多様な使い⽅が考案されており,近年話題のAIには 全てNNが使われていると⾔っても過⾔ではない 9
2023/3/15 DDoS2023春 2. ニューラルネットワークの構造 10
2023/3/15 2. ニューラルネットワークの構造 DDoS2023春 ニューラルネットワークの構造 具体的な構造を⾒ていく.イメージは以下. 入 力 出 力 「ネットワーク」って感じがするね 11
2023/3/15 2. ニューラルネットワークの構造 DDoS2023春 ⼈⼯ニューロン NNを構成する要素.さっきの図の●が⼈⼯ニューロン. この⼈⼯ニューロンも⼀つの機械学習モデルと⾒ることができ,⼊⼒に対して パラメータに基づいた出⼒を⾏う ⼈⼯ニューロンは複数の数値を受け取り,⼀つの数値を返す 入力1 入力2 : 人工ニューロン 出力 入力𝑛 12
2023/3/15 2. ニューラルネットワークの構造 DDoS2023春 ⼈⼯ニューロン 各⼊⼒に重みをかけたものの和にバイアスを⾜した数を活性化関数と呼ばれる 関数にかけて出⼒する 重みとバイアスは⼈⼯ニューロンにおけるパラメータである ⼈⼯ニューロンは以下の式で表せる 𝑦 = ℎ(𝑥 * 𝑤 + 𝑏) ⼊⼒:𝑥 = 𝑥! , 𝑥" , ⋯ , 𝑥# 重み:w = 𝑤! , 𝑤" , ⋯ , 𝑤# バイアス:𝑏 活性化関数:ℎ 𝑥 $ 𝑤は内積で 𝑥!𝑤! + 𝑥"𝑤" + ⋯ + 𝑥# 𝑤# と同じ 13
2023/3/15 2. ニューラルネットワークの構造 DDoS2023春 ⼈⼯ニューロン グラフにすると以下 ⼊⼒𝑥$ に対応する重みw$ をこんな感じで書くことが多い気がする 𝑥! 𝑥" : x# w! w" 𝑦 = ℎ(𝑥 ⋅ 𝑤 + 𝑏) 𝑦 w# 14
2023/3/15 DDoS2023春 2. ニューラルネットワークの構造 パーセプトロン ⼈⼯ニューロンの活性化関数にステップ関数を使⽤したもの ステップ関数 グラフが階段状になる関数の総称.ただここでは以下の関数に限定する. 1 (𝑥 ≥ 0) 𝑦=0 (𝑥 < 0) この関数はヘヴィサイドの階段関数とか単位ステップ関数とか呼ばれる 15
2023/3/15 DDoS2023春 2. ニューラルネットワークの構造 ⼈⼯ニューロンとパーセプトロン この資料では,活性化関数にステップ関数を使⽤した⼈⼯ニューロンをパーセ プトロンと定義した.ただ⾊んな記事を⾒ていると,⼈⼯ニューロンをパーセ プトロンと呼んでいる⼈もいる.またこの後説明するニューラルネットワーク は,この資料でいう⼈⼯ニューロンを組み合わせたモデルであるが,多層パー セプトロンとも呼ばれる. つまりこの⼆つの⾔葉の違いは定義できない.辞書の中で定義はあるかもしれ ないが,現状⼈によって微妙に解釈が異なってしまっている以上,そこに敏感 にならない⽅が良い気がする. 16
2023/3/15 2. ニューラルネットワークの構造 DDoS2023春 ニューラルネットワーク 複数の⼈⼯ニューロンを組み合わせたモデル.先ほどの図を再掲. 入 力 ⼀つ⼀つの●が⼈⼯ニューロン ニューロンのネットワークなのでニューラルネットワーク 出 力 17
2023/3/15 2. ニューラルネットワークの構造 DDoS2023春 ニューラルネットワーク 演算の流れは簡単で,各⼈⼯ニューロンの出⼒が次の⼈⼯ニューロンに渡って いくだけ.最終的に流れてきた値がそのNNの出⼒. 𝑦* 𝑦+ 𝑥 入 力 𝑦* 𝑦+ 𝑥 出 力 𝑦* 18
2023/3/15 2. ニューラルネットワークの構造 DDoS2023春 ニューラルネットワーク NNでは層を⼀つの単位として考える.層は図の縦⼀列を指す. 最初の層は⼊⼒層,最後の層は出⼒層,それ以外の層は中間層または隠れ層と 呼ぶ. 入 力 出 力 19
2023/3/15 DDoS2023春 2. ニューラルネットワークの構造 ニューラルネットワーク 中間層が2層以上あるものはディープニューラルネットワーク(DNN)と呼ぶ. DNNの学習をディープラーニングといい,これを和訳したものが深層学習であ る. Deep! 入 力 出 力 20
2023/3/15 2. ニューラルネットワークの構造 DDoS2023春 全結合層 ⼈⼯ニューロンを⼀列に並べたものを層と述べたが,厳密には全結合層と呼ぶ. これはNNを構成する最も基本的な層である. 全結合層も⼀つのモデルとしてみることができる 入 力 全結合層 出 力 21
2023/3/15 2. ニューラルネットワークの構造 DDoS2023春 全結合層 ⼊出⼒にはベクトルを想定する ある全結合層の⼈⼯ニューロンの数を𝑚,⼀つ前の層の⼈⼯ニューロンの数を𝑛 とすると,⼊⼒は𝑛次元ベクトル,出⼒は𝑚次元ベクトルとなる. 𝑥! 𝑦! 𝑥" 𝑦" : 𝑥# 全結合層 : 𝑦$ 22
2023/3/15 2. ニューラルネットワークの構造 DDoS2023春 全結合層 全結合層全体で⾒ると,𝑛×𝑚個の重みと𝑚個のバイアスを持つ.これらが全結 合層のパラメータとなる. 全結合層は以下の式で表せる 𝑦 =𝑥*𝑊+𝑏 𝑥: ⼊⼒ベクトル(𝑚次元) 𝑦: 出⼒ベクトル(𝑛次元) 𝑊: 各⼈⼯ニューロンの重みを並べた𝑛×𝑚⾏列 𝑏: 各⼈⼯ニューロンの重みを並べた𝑚次元ベクトル 23
2023/3/15 2. ニューラルネットワークの構造 DDoS2023春 活性化関数 活性化関数は⼈⼯ニューロンに対して定めるものだったが,NNでは活性化関数 も⼀つの層として捉える 入 力 入 力 層 全 結 合 層 活 性 化 関 数 全 結 合 層 活 性 化 関 数 出 力 24
2023/3/15 DDoS2023春 2. ニューラルネットワークの構造 活性化関数 活性化関数には⾮線形な関数を⽤いる ⾮線形 𝑦 = 𝑎𝑥 + 𝑏の様な⼀次式で表せないもの.逆に表せるものは線形という. 線形な関数を⽤いた場合,どれだけ層を増やしてもNN表現⼒はただ⼀つの全結 合層と変わらない 25
2023/3/15 DDoS2023春 2. ニューラルネットワークの構造 活性化関数 ReLU (Rectified Linear Unit) 最もよく使われる活性化関数 𝑥 (𝑥 ≥ 0) 𝑦=0 (𝑥 < 0) 26
2023/3/15 DDoS2023春 2. ニューラルネットワークの構造 活性化関数 sigmoid ステップ関数を滑らかにしたもの 値の範囲を制限したい時とかに使う 1 𝑦= 1 + 𝑒 -. 27
2023/3/15 DDoS2023春 2. ニューラルネットワークの構造 活性化関数 tanh (Hyperbolic Tangent) sigmoidを-1~1に拡張したもの こっちを使う⽅が上⼿くいく場⾯がある 𝑒 . − 𝑒 -. 𝑦= . 𝑒 + 𝑒 -. 28
2023/3/15 2. ニューラルネットワークの構造 DDoS2023春 活性化関数 Softmax 要素の総和が1になる様に調整するもの.分類を⾏う際の出⼒層に設定し,各要 素の値を対応するクラスに属する確率とする. exp(𝑥/ ) 𝑦/ = ∑0 exp(𝑥0 ) 29
2023/3/15 DDoS2023春 3. ニューラルネットワークの学習 30
2023/3/15 3. ニューラルネットワークの学習 DDoS2023春 ニューラルネットワークの学習 機械学習における学習とは,パラメータを最適化することである NNでは各⼈⼯ニューロンが別々のパラメータ(重み,バイアス)を持っている. NNの学習ではこれらを全て最適化する. 入 力 ! w!! " w!! " w!" ! w!" ! w!# " w"! ! w"! ! w"" ! w"# " w"" 出 力 " w#! " w#" 31
2023/3/15 DDoS2023春 3. ニューラルネットワークの学習 最適化問題 ある関数を最⼤または最⼩にする変数を求める問題.この関数は⽬的関数と呼 ぶ. NNの学習を最適化問題に落とし込むとイイ感じになる.以下の様に考える. • ⽬的関数:NNの精度 • 変数:NNのパラメータ こうすると,NNの学習を「NNの精度を最⼤にするパラメータを求める」とい う最適化問題として捉えられる 32
2023/3/15 3. ニューラルネットワークの学習 DDoS2023春 損失 NNの精度を表す指標の⼀つ.誤差ともいう.以下の流れに従って算出する. 1. NNに⼊⼒するデータ(値)の例を⽤意する 2. それを⼊⼒した時に出てきてほしい値を正解値として定める 3. NNに⼊⼒例を⼊⼒し,出⼒値を求める 4. 出⼒値と正解値との差を求める 入 力 1 NN 出 力 損 失 正 解 3 4 2 33
2023/3/15 3. ニューラルネットワークの学習 DDoS2023春 損失関数 損失を求める関数 ⼆つのベクトルの差を表す⽅法は⾊々ある NN 出力 損失関数 損失 正解 34
2023/3/15 3. ニューラルネットワークの学習 DDoS2023春 損失関数 平均⼆乗誤差 (MSE - Mean Square Error) 差の2乗の平均 2 1 𝐸 = ; 𝑦0 − 𝑡0 𝑛 + 01* 𝑦: 出⼒ 𝑡: 正解 35
2023/3/15 3. ニューラルネットワークの学習 DDoS2023春 損失関数 ⼆乗和誤差 (SSE - Sum of Squared Error) 差の⼆乗の和.2で割って微分が綺麗になる様にしたものが多いかも. 2 1 𝐸 = ; 𝑦0 − 𝑡0 2 + 01* 𝜕𝐸 = 𝑦$ − 𝑡$ 𝜕𝑦$ 36
2023/3/15 3. ニューラルネットワークの学習 DDoS2023春 損失関数 交差エントロピー (Cross Entropy) ⼆つの確率分布の距離を表す 𝐸 = − ; 𝑡0 log 𝑦0 0 分類のタスクを⾏うときに使う.その場合𝑡は 基本one-hotベクトルなので,正解のクラスをi とすると以下と同じ意味になる. 𝐸 = − log 𝑦0 37
2023/3/15 DDoS2023春 3. ニューラルネットワークの学習 勾配法 最適化問題を解くアルゴリズムの⼀つ 関数の最⼤値を求める場合は勾配上昇法,最⼩値を求める場合は勾配降下法と なる.NNの学習では先ほどの損失を最⼩にする問題を考えるので後者. ⽬的関数を変数で微分すれば傾きが分かる→傾きが分かるなら⼤きくする・⼩ さくする⽅向が分かるよねという発想 この「傾き」のことをここでは勾配と呼ぶ 38
2023/3/15 DDoS2023春 3. ニューラルネットワークの学習 勾配法 以下の⼿順に従って最適化する 1. 2. 3. 4. 変数を初期化する(乱数などで初期値を決める) その地点の勾配を求める 勾配に合わせて変数を少し変化させる 2, 3を適当に繰り返す 39
2023/3/15 3. ニューラルネットワークの学習 DDoS2023春 勾配法 例:以下の関数𝑓(𝑥)を最⼩にする変数𝑥を求める 𝑓(𝑥) = 𝑥 + 40
2023/3/15 DDoS2023春 勾配法 3. ニューラルネットワークの学習 𝑓(𝑥) = 𝑥 + 1. 初期値を決める → 適当に,-5としよう 2. 勾配を求める → 𝑓′(𝑥) = 2𝑥より,f & −5 = −10 3. 勾配に合わせて値を更新する → 勾配が負なので,正の⽅向に動かせばよさそう(⼩さくなりそう) 41
2023/3/15 3. ニューラルネットワークの学習 DDoS2023春 勾配法 値の更新を式で定義する 𝑥 ≔ 𝑥 − 𝜂 f3 x 𝜂は学習率といい,更新する度合いを調整するもの.基本0~1. 42
2023/3/15 3. ニューラルネットワークの学習 DDoS2023春 勾配法 勾配降下法でNNを学習させる際は,パラメータの勾配を求める.この勾配は損 失をパラメータ(𝑤)で微分したもので,これに基づいてパラメータを更新する. 入 力 ! w!! " w!! " w!" ! w!" ! w!# " w"! ! w"! " w"" ! w"" ! w"# 出 力 損 失 正 解 " w#! " w#" 43
2023/3/15 DDoS2023春 3. ニューラルネットワークの学習 確率的勾配降下法 勾配降下法にランダムな要素を持たせ,局所的最適解にハマる可能性を減らし た⼿法.SGD (Stochastic Gradient Descent) とも. 局所的最適解 最適解っぽいが実はそうでない場所.極⼩値.真の最適解は⼤域的最適解とよ ぶ. 局所的最適解 大域的最適解 44
2023/3/15 DDoS2023春 3. ニューラルネットワークの学習 確率的勾配降下法 NNでは以下を繰り返すことでランダム性を取り⼊れる. 1. ⼊⼒と正解の組をランダムにいくつか選ぶ 2. 選んだデータでの勾配を求める 3. 求めた勾配でパラメータを更新する 試⾏ごとに関数が変わるイメージ 45
2023/3/15 DDoS2023春 3. ニューラルネットワークの学習 誤差逆伝播法 NNのパラメータの勾配を求める⼿法 さっきの例では𝑓 𝑥 = 𝑥 "という簡単な関数を使ったが,NNはもうちょい複雑な 形をしているので,ちょっと⼯夫が必要 層や活性化関数はモデルによって異なるので,𝑓 & 𝑥 = 2𝑥の様に導関数を⼀つ定 めることができないのだ 46
2023/3/15 3. ニューラルネットワークの学習 DDoS2023春 誤差逆伝播法 ここで考えるのが,合成関数の微分 例として以下の関数を微分してみよう 𝑓 𝑥 = 𝑥+1 + これは普通に展開しても解けるけど,合成関数の微分を使っても解ける 47
2023/3/15 3. ニューラルネットワークの学習 DDoS2023春 誤差逆伝播法 関数の関数を微分する時は,⼀つ⼀つの関数の微分を掛け合わせればいい g 𝑥 =𝑥+1 𝑓 𝑥 =𝑔 𝑥 45 4. 45 4. 45 46 = 46 4. とすると 𝑓 𝑥 = 𝑥+1 + " となり = 2𝑔 𝑥 ⋅ 𝑔3 𝑥 = 2 𝑥 + 1 ⋅ 1 = 2(𝑥 + 1) となる 48
2023/3/15 DDoS2023春 3. ニューラルネットワークの学習 誤差逆伝播法 これをNNで考えたのが誤差逆伝播法 損失を出す時に通った層や活性化関数を微分してそれらを掛け合わせればいい よねという話 49
2023/3/15 3. ニューラルネットワークの学習 DDoS2023春 誤差逆伝播法 例を⾒てみよう 出⼒層のある⼀つの重みに着⽬し,勾配を求めてみる ! w!! " w!! " w!" ! w!" ! w!# " w"! ! w"! " w"" ! w"" ! w"# 出 力 損 失 正 解 " w#! " w#" 50
2023/3/15 3. ニューラルネットワークの学習 DDoS2023春 誤差逆伝播法 この重みから損失を算出するまでの流れをグラフで⾒てみる この様に演算の流れをグラフで記述したものを計算グラフと呼ぶ 全結合層 着目した重み 𝑤 × 𝑢 + 𝑦 損失関数 𝑡 正解 𝑥 𝑏 損失 前の層の出力 バイアス 𝐸 51
2023/3/15 3. ニューラルネットワークの学習 DDoS2023春 誤差逆伝播法 すると,求めたい勾配が以下の様に表せる !" !# !$ !% !# 全結合層 着目した重み 𝑤 = !" !$ !% × 𝑢 + 𝑦 損失関数 𝑡 正解 𝑥 𝑏 損失 前の層の出力 バイアス 𝐸 52
2023/3/15 3. ニューラルネットワークの学習 DDoS2023春 誤差逆伝播法 この様に微分を逆⽅向に伝えることを逆伝播と呼ぶ 𝜕𝑦 𝜕𝑢 𝜕𝑢 𝜕𝑤 𝑤 𝑥 × 𝑢 𝑏 𝜕𝐸 𝜕𝑦 + 𝑦 損失関数 𝑡 𝐸 53
2023/3/15 DDoS2023春 4. ニューラルネットワークの実装 54
2023/3/15 DDoS2023春 4. ニューラルネットワークの実装 ノートブック参照 https://github.com/misya11p/deep-learning/blob/main/neural_network.ipynb 55