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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for hirotask hirotask
January 25, 2024
34

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

Avatar for hirotask

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