ニューラルネット、損失関数、勾配法、前回の疑問点
長岡技術科学大学 自然言語処理研究室 学部3年 守谷 歩
ニューラルネット22019/02/21長岡技術科学大学 自然言語処理研究室学部3年 守谷 歩ニューラルネット、損失関数、勾配法、前回の疑問点
View Slide
⚫入力層、中間層(隠れ層)、出力層に分けられたネットワーク⚫重みをもつ層を数えることが多い(例:中間層が5個あったら6層ネットワーク)復習:ニューラルネットとは入力層中間層 出力層
⚫活性化関数h(x)を与える = ቊ0 1 ∗ 1 + 2 ∗ 2 + ≤ 01 1 ∗ 1 + 2 ∗ 2 + > 0(w1,w2:重み x1,x2:入力 b:バイアス) = h(b+w1∗x1+w2∗x2)復習:ニューラルネットの式h(x)x1x2w1w21yb
⚫恒等関数とは入力されたものをそのまま出力する関数⚫出力層に恒等関数を用いると入力信号をそのまま出力する恒等関数a1 yδ()
⚫分類問題などではソフトマックス関数を用いる⚫ソフトマックス関数: ∶ =exp σ=1 exp()⚫ソフトマックス関数の出力はすべての入力信号から結びつきを持たせる。各ニューロンがすべての入力信号から影響を受ける形になる。ソフトマックス関数a1 y1δ()a2 y2a3 y3
⚫ソフトマックス関数の出力は0から1の間の実数になり、また、その総和は1となる。これによって、確率として計算することができる。⚫また、指数関数を考えると、ソフトマックス関数に当てはめても、要素の大小関係は変化しない。ソフトマックス関数 特徴a1 y1δ()a2 y2a3 y3
ソフトマックス関数 実装結果コード
⚫ニューラルネットの学習とは、訓練データから、重みを更新して、最適な値にすることである。⚫重みを更新するために損失関数といった指標を使う。⚫損失関数が最小になるような重みを出すことによって、最適な重みを求めることができる。ニューラルネット 学習
⚫損失関数として、二乗和誤差といったものがある。 = 12σ− 2 (y:ニューラルネットの出力,t:教師データ)⚫教師データを正解のデータには1をそれ以外には0を出力する表記法をone-hot表現というy = [0.1,0.05,0.6,0.0,0.05,0.1,0.0,0.1,0.0,0.0]t = [0,0,1,0,0,0,0,0,0,0]One-hot表現と二乗和誤差
二乗和誤差 実装結果コード
⚫損失関数として、交差エントロピー誤差といったものがある。 = − σlog (y:ニューラルネットの出力,t:教師データ)⚫さっき考えたone-hot表現で考えるy = [0.1,0.05,0.6,0.0,0.05,0.1,0.0,0.1,0.0,0.0]t = [0,0,1,0,0,0,0,0,0,0]ニューラルネットの出力が0.6の場合、交差エントロピー誤差は-log0.6=0.51となって、出力が正しく考えられる場合小さい値になる。交差エントロピー誤差
交差エントロピー誤差 実装結果コード
⚫損失関数が最小になる値をとるパラメータを学習時に見つけるのは難しいため、勾配を用いてできるだけ小さな値を使う。⚫勾配法は、現在地から勾配の方向に進み続け、関数の値を徐々に減らしていく方法。= − ηこの時のηをニューラルネットの学習率という勾配法
⚫ 0, 1= 02 + 12の最小値を勾配法で求める勾配降下法(最小値を求める)実装コード結果
⚫ニューラルネットの勾配とは、重みパラメータに関する損失関数の勾配である。とある重みWに対する損失関数Lがあった場合、その勾配は とあらわすことができる。⚫重みのパラメータWの勾配dWが負の値であった場合、その値を重みに更新してあげ、正の値であった場合、重みからその値を引けば、損失関数を減らすことができる。ニューラルネットの勾配
コード勾配法を用いたニューラルネット実装結果
宿題:活性化関数 線形関数であった場合⚫活性化関数が線形関数であった場合ℎ = これが3層のニューラルネットだった場合ℎ ℎ ℎ = 3 = 3となるaが存在してしまう。⇒単層パーセプトロンと一緒
宿題:活性化関数 シグモイドであった場合⚫シグモイド関数を微分する⚫微分の最大値が0.25で、層を増やしていくと勾配が消失する。
宿題:活性化関数 ReLUであった場合⚫微分されても活性化関数はℎ′ = ቊ1 ( > 0)0 ( < 0)そのため、勾配消失が防げるため、ReLU関数が使われることが多い