
書記が数学やるだけ#725 ニューラルネットワークの定式化
ニューラルネットを組み立てるために,まずは順伝播方向の数式を考える。
問題
要点を数式で書けるようになっておくと,自分で組み立てるときにやりやすい。

説明
ニューラルネットワークは線形関数と非線形関数の入れ子で表現できるのだった。歴史的背景はさまざまあるが,1967年に甘利俊一が隠れ層のあるニューラルネットワーク提唱したことは特筆に値する。

解答
ニューラルネットワークを数式として表すと以下のようになる。これより,各々の層と重みを行列やテンソルで表現し,それらを関数で繋ぐことでモデルを組み立てることができる。

出力と誤差を決めることで,回帰や分類といったさまざまな問題を定式化することができる。

多クラス分類の例としてMNISTがあり,一般的に活性化関数としてソフトマックス関数,誤差をクロスエントロピーとして定式化する(なぜこの組み合わせかは後日解説)。

具体例としてPyTorchチュートリアル「PyTorch入門」のモデルを定式化してみる。
入力は28×28画像を1次元に変換したベクトル,途中いくつかの中間層を経て,最終的に10次元ベクトルとして出力,正解の数字列を1としたラベルと誤差を比較しこれを最小化していく。

本記事のもくじはこちら: