Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【備忘録】ニューラルネットワークとはなにか

hirotask
January 25, 2024
17

 【備忘録】ニューラルネットワークとはなにか

hirotask

January 25, 2024
Tweet

Transcript

  1. 1

  2. ざっくり概要 • 英語表記では、Neural Network(NN) • 機械学習の手法の一つ • 1943年に提案された • 主に教師あり学習を行う

    • パーセプトロン(後述)を複数つなぎ合わせた変換器 • Covolutional Neural Network(CNN)やReccurent Neural Network(RNN)といった ニューラルネットワークを発展させたものが最近話題 • Deep Learningはニューラルネットワークの中間層が3層以上バージョン 7
  3. パーセプトロンとは? 8 5 • ニューロンとシナプスから成る数理モデル(下図) • 複数の入力に対して加算と乗算のみを行い、出力値を決定する関数 • 各ニューロンの値は、 重み(Weight)が乗算されたのち加算される

    • 出力値を調整するために加算される値を バイアス(Bias)という(下図だとバイアスは 1) 6 5 ニューロン シナプス 入 力 出 力 単純パーセプトロン 2 -1 重み バイアス
  4. ニューラルネットワークの数理モデル 10 入 力 ニューラルネットワーク 出 力 : ・・・ :

    入力層 (入力レイヤー) 出力層 (出力レイヤー) 中間層 (中間レイヤー)
  5. 活性化関数のイメージ 12 ※Nekoallergy. “【初心者】ネコでも分かる「活性化関数」ってなに? ”. Zenn. 2021,08,27. https://zenn.dev/nekoallergy/articles/4e224b57a97af9 (参照日: 2022/12/19)

    • 単純な足し算だけだと、直線(線 形)しか表せない ◦ 入力としてx1,x2があった時 の出力yはy = x1 + x2 • 活性化関数は曲線(非線形)を表 現することができる ◦ 活性化関数は非線形関数だ から
  6. 【コラム】線形・非線形とは? (1/2) • 簡単に言うと、グラフにした時に直線になるものは線形関数であり、そうでないもの は非線形関数である ◦ 線形関数の例: x, 2x, Ax

    ◦ 非線形関数の例: x^2, e^x, logx, sinx • 厳密には、以下の2つの条件を満たすものを線形関数という • 満たさないものは非線形関数という 14 https://math-fun.net/20190619/1715/#i
  7. 【コラム】線形・非線形とは?(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関数の定義
  8. 重みとバイアスはどうやって決まる? 18 5 • 活性化関数は開発者が決める • では、重みとバイアスは誰が決める? ◦ →AIが決める ◦

    重みとバイアスをAIが推定することを「学習する(Learning)」と言う 6 5 入 力 出 力 2 -1 重み バイアス
  9. 交差エントロピー誤差(Cross-Entropy Loss)とは? • 平均二乗誤差よりも、一般的に広く使われている誤差 ◦ 勾配降下法(後述)と相性がいいため • 平均二乗誤差と同じく、交差エントロピー誤差が小さいほど出力と正解データの誤 差が少ない 21

    広告メディア事業部 .“損失関数とは?ニューラルネットワークの学習理論【機械学習】 ”.RIGHT CODE.<https://rightcode.co.jp/blog/information-technology/loss-function-neural-network-learning-theory> (参照日: 2022/12/21)
  10. 勾配降下法とは?(2/4) 23 • 微分で求めた導関数から接線の傾きがわかる • しかし、高校数学とは違いパラメータがw1, w2の2つ ◦ 偏微分を用いる •

    (w1,損失関数)平面から見たグラフの傾きを求めるときはw2を定数を考えて微分 する(右図) • (w2,損失関数)平面から見たグラフの傾きも同様に求める(左図) https://www.alpha.co.jp/blog/202202_01
  11. 勾配降下法とは?(4/4) 25 • 重みの移動方向は勾配ベクトルで分かるが、どのくらい動かせばいいのか分から ない ◦ これをいい塩梅に調整するのが学習率 • 学習率は定数のときもあれば、変数のときもある •

    したがって、重みの更新を表す式は以下の通りである • これの意味は「前回のパラメータ」から「誤差をパラメータで微分して学習率を掛け たもの」を引いて次のパラメータに更新するよ、という意味 w: 重み E(w): 損失関数 α: 学習率 ∇: (偏)微分 t: 時間 https://www.alpha.co.jp/blog/202202_01
  12. 更新するための誤差を得る方法 • 重みの更新には「誤差をパラメータで微分して学習率を掛けたもの」が必要 ◦ 重みの更新には誤差が必要 • しかし、誤差は出力層でしか得られない ◦ したがって、本来はニューラルネットワークすべての重みを一気に計算しなければ ならない

    ◦ それだと一度に行う計算が膨大 ▪ 重みが10万個あったら、一度に計算する量は10万個なのでO(10万) ◦ 「誤差をパラメータで微分したもの」を各レイヤーに伝えれば、順番に計算できる ▪ 計算量の削減! • どうやって出力の誤差を各レイヤーに伝えるの? • 誤差逆伝播法を使う 27
  13. 【コラム】損失関数はE?L? • どちらでも正解 • 本資料も様々な文献から式・画像を引用しているため、表記ゆれがある ◦ 損失関数(Loss Function)は誤差関数(Error Function)ともいう事がある(文献による) •

    したがって、NNにおいてEまたはLが出てきた場合は、だいたい損失関数 • しかし、たまに期待値E(X); Xは確率変数 である場合もある • その場合は、パラメータが確率変数となっているか否かを判断すると良い 33