らんだむな記憶

blogというものを体験してみようか!的なー

ニューラルネットワークの数理的構造 (2)

前回で見たことを数学的な言葉で書くと、

  • ニューラルネットワークというのは要は Affine 変換を用いた微分可能な合成写像のことであり、
  • この“表現力に富んだ”合成写像により、入力値と期待される出力値をできるだけ近づけるような良い推定値を出せるように合成写像の中のパラメータを調整しましょう

という話である。「良い推定値を出す」ということの「良い」の意味と「パラメータの調整」を書き直すと

  • 「推定値」と「期待される出力値」に対しては何らかの意味での距離函数により距離をはかる。ここで距離函数は可微分なものを選定する
  • 舞台設定により登場する写像はすべて可微分であり、前述の距離函数の最小値は数値計算により近似値を求めることができる(という期待をすることができる)

ということになる。
話をまとめつつ機械学習の言葉と関連づけていくと、

まとめ

数学的な話
  • 函数の最小値を与えるパラメータの値を求める」ということに尽きる。
数値計算とプログラミングのテクニック
  • これを実現する数値計算のことを「勾配降下法」と呼び、微分偏微分の連鎖律により“小さい微分”の掛け算によって表現できる。
  • この“小さい微分”の計算結果をニューラルネットワークの中に蓄積して後から掛けて回ることを API 呼び出しの中に隠蔽して自動化したものを「自動微分」と呼ぶ。(この抽象化を「微分可能プログラミング」と呼ぶのだろう)
  • 計算コストの効率化のための実装の詳細としての計算の方向性が「後ろから前」であることから「バックプロパゲーション」という呼び名が付いている。
機械学習の用語
  • 前回の記号でいうところの $\left|F(x_0; W, B) - t_0\right|^2$ という一番大きい函数は「損失函数」と呼ばれる。
  • そして $|\cdot|^2$ の部分の距離函数の部分は設定により「平均二乗誤差」とか「クロスエントロピー誤差」という名前が付いている。
  • $x_0$ は「入力値」、 $t_0$ は「ラベル」などと呼ばれ、 $F(\cdot; W, B)$ は「ニューラルネットワーク」と呼ばれる。

ここまで見たことから分かるように、数学的視点では理論的には(偏微分であることを忘れれば)高校2〜3年生の数学までで足りるということである。
数値計算の観点ではニュートン法とか勾配降下法のロジックを押さえれば十分である。プログラミングとしては API がほぼ隠蔽しているので、決まった書き方ができればまずは十分であろう。
機械学習の用語については数学的な用語や数値計算の用語に alias を与えるような感じで覚えれば良いだろう。