過去の記事:
これまで数回に渡って自動微分を取り上げてきたが、それでは、自動微分は,数学的に見るとどのような概念と対応しているのだろうか?
簡単のため,ここでは実数 \(\mathbf{R}\) についての関数の、1変数による1階微分の自動微分のみを考えるものとする.1変数関数の自動微分を表す型を \(\mathrm{AutoDiff}(\mathbf{R})\) とする.\(\mathrm{AutoDiff}(\mathbf{R})\) には,\(\mathbf{R}\) から誘導された加法や乗法などの演算が入っている.また,\(\mathbf{R}^n\to\mathbf{R}\) の微分可能な関数から,\(\mathrm{AutoDiff}(\mathbf{R}^n)\to\mathrm{AutoDiff}(\mathbf{R})\) の関数が誘導される.加法や乗法などの演算は,\(\mathbf{R}^2\to\mathbf{R}\) の微分可能な関数と見ることができるので,関数の誘導だけを考えれば良い.
つまり,自動微分を考えるということは,実数 \(\mathbf{R}\) あるいはユークリッド空間 \(\mathbf{R}^n\) について,それぞれ \(\mathrm{AutoDiff}(\mathbf{R})\), \(\mathrm{AutoDiff}(\mathbf{R}^n)\) という空間を考えるということである.そして,(微分可能な)関数 \(\mathbf{R}^n\to\mathbf{R}^m\) に対しては,誘導された関数 \(\mathrm{AutoDiff}(\mathbf{R}^n)\to\mathrm{AutoDiff}(\mathbf{R}^m)\) が存在する.
これは圏論の言葉で言う「関手」(functor)によく似ている.しかし,\(\mathrm{AutoDiff}\) を圏の関手として見る場合,対象とする空間をユークリッド空間 \(\mathbf{R}^n\) に制限しているのは気持ち悪い.1階微分が定義できるようなもっと広い空間に対して,自動微分を一般化して考えられないだろうか?
数学では,ユークリッド空間を一般化したような空間を「多様体」(manifold)と呼ぶ.特に,「滑らか」で「関数の微分が定義できる」ものを「滑らかな多様体」とか「可微分多様体」と呼ぶ.多様体についての詳細はここでは省くので、数学の授業を受けるか、専門書を参照するかして欲しい。何が言いたいかというと,自動微分のようなものを,可微分多様体の圏から可微分多様体の圏への関手として定義できるはずである.
実は,この概念はすでに多様体論ではよく知られていて,「接バンドル」(tangent bundle)と呼ばれている.\(\mathrm{AutoDiff}(\mathbf{R}^n)\) に対応する空間は \(T\mathbf{R}^n\) と書かれる.一般に,多様体 \(M\) の接バンドルは \(TM\) と表される.写像の方は,\(f\colon M\to N\) から誘導される写像は \(df\colon TM\to TN\) と書かれる.
\(\mathbf{R}\) の自動微分、\(\mathrm{AutoDiff}(\mathbf{R})\) は \(\mathbf{R}\times\mathbf{R}\) のような直積で表された。このような場合、 \(T\mathbf{R}\) は自明(trivial)であるというような言い方をする。また、\(\mathrm{AutoDiff}(\mathbf{R}^n)\cong\mathrm{AutoDiff}(\mathbf{R})^n\)(自然な同型)となるが、これは接バンドルについて \(T(M\times N)\cong TM\times TN\)(自然な同型)となることに対応する。
筆者の知識が足らないので今書けるのはここまでだが、要するにプログラミングのテクニックの一つである自動微分は、幾何学の概念と対応していそうだということである。あとそれから、幾何ガチ勢からまさかりが飛んできそうで怖い。