数理モデルのための数式/001:背景と記号の定義(命名)規則

他数理記事一覧top

数理モデルの書き方を教える.数式の書き方が大部分を占める.

こんなものを書いている暇は無いのだが,数式が書けないという学生をどうしても見捨てられない.これを読んだだけで理解するのは難しいから直接教える必要もあるのだけど,私に会えない人が学ぶ際にも役に立つだろう.こんな業績にも金にもならない資料作るやつは教員しかいない.教員の中でも限られるから私が書く.ヒトが読まなくても,今の時代GPTがこの資料を喰らい改善した数式を吐き出すはずだ.すべての分野で何かしら数式に難があると言っていいが,私のAI分野特有のことをここでは述べる.

多層Neural Network でも定義してみようか.AI分野の初学者は次のように記載する.多くの営利目的ページにもこのように書いてある.これは良くない例である.

Neural Network を次のように定義する. activation^{l-1}[i] = RELU(x^{l-1}[i]) x^l[i] = Full\_connection(activation^{l-1}[i]) output[i] = softmax(x^{Last}[i]) データセット\(X\)に対して,入力層に\(x_{input}(t) \in X\)をセットして対応する出力\(output_i(t)\)を得る.

周期1の正弦関数は次のものを言う. sin(2*\pi *x) = \frac{1}{2*i}(exp(2 *\pi *x *i) - exp(-2* \pi *x *i))

まず覚えてほしいことは,次のことだ.

以上の規則を取り入れてまず上記を次のように書いてみよう.

\(x\)をユニット,\(z\)を活性化度とする.\(L\)を層の数とする.\(f\)を変換関数,\(g\)を活性化関数とする.このとき,層\(l\)におけるユニットの数を\(n_l\)として\(l=2, 3,...,L, i=1,2,...,n_l\)についてNeural Network を次のように定義する. z^{l-1}_i = g(x^{l-1}_i) x^l_i = f(z^{l-1}_i) \hat{z}_i = \mathrm{softmax}(x^{L}_i) データセット\(X\)に対して,入力層に\(x^1(t) \in X\)をセットして対応する出力\(\hat{z}(t)\)を得る.実験では\(g\)にReLU,\(f\)に全結合を用いた.

周期1の正弦関数を\(\psi\)としたとき,それは次で定義される. \psi(x) = \sin(2\uppi x) = \frac{1}{2\mathbb{i}}(\exp(2 \uppi x \mathbb{i}) - \exp(-2 \uppi x \mathbb{i}))

上記はまだ一般性にかける,などという問題はあるが,これでだいぶマシである.まずこれくらいには,書いてほしい.変数名を1文字にして,softmax, sin, expなど変化しない関数は立体に直している.複素単位を特殊にして変数や「sin」などの記号に含まれる「i」と区別している.虚数単位如きに面倒だなって?おい!虚数様に向かって何てことを!虚数様だぞ!人間が虚数様を面倒くさがっていいわけないだろう!使わせてもらえることを感謝して丁重に記載しないとダメなんだ!

AI分野では,プログラミング言語で記述されたことが最も重視される.数式はプログラミング言語の近似という扱いである.プログラミングで扱えないモデルは提案すらされない.きっとAI分野の読者は「モデルはプログラミングで扱えるはずだからそれで問題ないのでは?」と思うだろう.提案手法=提案モデル+アルゴリズム=擬似コードという状態だ.モデルとアルゴリズムの区別はついておらずそれはほとんど同時に定式化される.プログラムというのは,チューリングマシンで動くものを言うが,例えば人間の脳はチューリングマシンではないから,プログラムで表現できない.逆なんだ.プログラミング言語とは,数理モデルをできるだけそのまま表現できるように工夫されたもので,数式で定義できる体系の近似なのだ.まず以下を覚えよう.

プログラミング言語は数式の近似である.

徐々に更新する.

他数理記事一覧