# 自動微分 ## 定義 自動微分(automatic differentiation)とは、関数を中間変数の列(計算グラフ)として表現し、各基本演算(加減乗除、$\sin$、$\cos$、$\exp$、$\log$ などの初等関数)の微分則と連鎖律を機械的に適用することで、記号微分(symbolic differentiation)でも有限差分による数値近似でもなく、機械精度まで正確な勾配を数値的に得る一群の技法である。連鎖律の積 $\mathrm dy/\mathrm dx=(\mathrm dy/\mathrm db)(\mathrm db/\mathrm da)(\mathrm da/\mathrm dx)$ をどちらの順序で結合するかにより forward mode と reverse mode に分かれる。reverse mode は出力側から入力側へ勾配を逆伝播させる方式で、深層ニューラルネットワークの誤差逆伝播法(backpropagation)はこの reverse mode の特殊例である。入力次元が出力次元よりはるかに大きい(パラメータ数 ≫ 損失のスカラー1個)場合、reverse mode は forward mode より計算量的に有利である。(Source: [[@2020__Cambridge__Mathematics for Machine Learning - Chapter 5 Vector Calculus]] §5.6.2) ## 横断的知見 - **本書(MML)は自動微分を「計算グラフ上の連鎖律の機械的適用」という一般手続きとして与え、[[誤差逆伝播法]] は同じ計算を「ニューラルネットワークの誤差関数を局所的な積の連鎖として2パスで解く具体アルゴリズム」として与える**: MML §5.6 は forward mode / reverse mode という2つの計算順序の対称性(連鎖律の積の結合則)から出発し、誤差逆伝播法はその reverse mode の特殊例だと位置づける。一方、[[誤差逆伝播法]] ページが依拠する The Elements of Statistical Learning は、順伝播で予測値を計算し逆伝播方程式 $s_{mi}=\sigma'(\alpha_m^Tx_i)\sum_k\beta_{km}\delta_{ki}$ で誤差を局所的に伝播させる統計学習の手続きとして導入し、非凸最適化としての収束問題(局所解・学習率スケジュール)に力点を置く。同じ計算を「一般化された数値計算の理論」として見るか「統計モデルの学習アルゴリズム」として見るかという抽象度の非対称性そのものが、両ソースを並べて初めて見える点である。(Source: [[@2020__Cambridge__Mathematics for Machine Learning - Chapter 5 Vector Calculus]] §5.6, [[誤差逆伝播法]] の出典 The Elements of Statistical Learning §11.4) - **MML の計算グラフ表現(中間変数 $a,b,c,d,e$ への分解、Figure 5.11)は、なぜ誤差逆伝播法が「勾配の計算量が関数値の計算量とほぼ同程度」になるのかを説明する数学的基盤を与える**: MML Example 5.14 は、素朴に微分の式を展開すると $\partial f/\partial x$ の数式が元の $f(x)$ よりはるかに複雑になる(式(5.110))にもかかわらず、計算グラフに沿って逆向きに連鎖律を適用すると各ステップの計算量は元の関数の計算と同程度で済むことを具体例で示す。これは 誤差逆伝播法 ページが「各隠れユニットは接続を共有するユニットとだけ情報をやり取りするため並列計算機での実装に適する」と述べる実装上の利点の、より根本的な理由(計算グラフの局所性)に当たる。(Source: [[@2020__Cambridge__Mathematics for Machine Learning - Chapter 5 Vector Calculus]] §5.6.2 Example 5.14) - **[[@2022__Gihyo__ディープラーニングを支える技術 - Appendix A [厳選基礎]機械学習&ディープラーニングのための数学]] は「自動微分」という語を使わずに、本概念の核心である連鎖律だけを誤差逆伝播法の基礎として提示する**: 同 Appendix A §A.2 は forward mode / reverse mode という計算順序の区別や計算グラフという表現には一切触れず、「複数の関数が合成されて作られた関数の導関数は、それぞれの関数の導関数の積で表される」という連鎖律の式(合成関数 $f(g(x))$ の微分)だけを示し、「この合成関数の微分の公式は、ニューラルネットワークの誤差逆伝播法で重要となります」と結論づける。これはMML §5.6 が与える「連鎖律の機械的な適用=自動微分」という一般的な計算手続きの定義から、深層学習の実装者が最低限知っておくべき数学的核(連鎖律そのもの)だけを抜き出した記述であり、[[線形写像と変換行列]]・[[固有値分解]]・[[特異値分解]]の各ページで確認した「MMLは一般論から証明を積み上げる、DL実装者向け書籍は結果や核となる公式だけを渡す」という非対称性が、微分の分野でも同じ形で現れることを示す。(Source: [[@2020__Cambridge__Mathematics for Machine Learning - Chapter 5 Vector Calculus]] §5.6, [[@2022__Gihyo__ディープラーニングを支える技術 - Appendix A [厳選基礎]機械学習&ディープラーニングのための数学]] §A.2) - **[Appendix A の未解決の問いへの回答] 本編第3章は、forward/reverse mode という自動微分の用語こそ使わないが、Ω(m) 対 Ω(m²) という計算量の非対称性と、逆向きDPによる部分式再利用という計算グラフ的な効率化の核心を、Appendix Aより踏み込んで独立に展開している**: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 3 ディープラーニングの技術基礎]] §3.5は、素朴な偏微分の逐次計算がパラメータ数mに対しΩ(m²)時間かかるのに対し、誤差逆伝播法はΩ(m)時間(前向き計算の約3倍)で済むことを、歯車の類推(隣接する歯車間の回転比の積で遠い歯車間の回転比が求まる)と動的計画法(計算経路が合流する箇所で共通の微分∂y/∂hを一度だけ計算し再利用する)の2段階で導出する。さらに巻末コラムで「誤差逆伝播法は、数値解析の分野では『後ろ向き自動微分』と呼ばれ、『前向き自動微分』とともに1960年代にいくつか提案されている」「ニューラルネットワークの場合は多入力・少出力であり、後ろ向きに動的計画法を適用することで効率的に処理できる。これに対し、制御分野などでは多出力を持つ合成関数の微分を計算する。この場合は前向きに微分を計算したほうが効率的」と明記し、MML §5.6 が示す「パラメータ数≫出力次元1のとき reverse mode が有利」という一般原理と同じ非対称性を、独立に(Appendix A を参照させずに)本編で再導出している。したがって Appendix A の問い(本編がどこまで踏み込むか)への答えは「本編は forward/reverse mode という語彙こそ使わないが、計算量の非対称性という核心はAppendix Aより厚く、MMLと独立に導出している」となる。(Source: [[@2020__Cambridge__Mathematics for Machine Learning - Chapter 5 Vector Calculus]] §5.6, [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 3 ディープラーニングの技術基礎]] §3.5・§3.7コラム, [[@2022__Gihyo__ディープラーニングを支える技術 - Appendix A [厳選基礎]機械学習&ディープラーニングのための数学]] §A.2) ## 未解決の問い - forward mode が reverse mode より有利になる具体的な条件(出力次元が入力次元よりはるかに大きい場合、例えばヤコビ行列全体が必要な場合)は、機械学習のどのような応用で実際に登場するか。 - MML の一般的な計算グラフの定式化(§5.6.2, 式(5.143)-(5.145))と、誤差逆伝播法ページが扱う非凸最適化の収束問題(局所解・学習率スケジュール)は独立の問題設定である。両者を接続する理論(例えば計算グラフの構造が損失関数の非凸性にどう影響するか)は本書の範囲外だが、次にどの文献で扱われるか。 - for ループや if 文を含む一般的な計算機プログラムを自動微分する場合(本書が言及するが詳細には踏み込まない制御構造の扱い)、現代の深層学習フレームワーク(PyTorch など)は具体的にどう対処しているか。 - 『ディープラーニングを支える技術』第3章コラムが挙げる「1960年代の複数分野での独立発見」(制御分野の前向き自動微分/感度分析、統計数理分野の後ろ向き自動微分、1967年の甘利俊一による隠れ層ニューラルネットワークの学習例)は、それぞれ具体的にどの一次文献に遡れるか。自動微分の学説史として一次資料で裏づけられるか。 ## 関連 - 概念: [[誤差逆伝播法]](自動微分の reverse mode の特殊例として深層学習の文脈で扱う概念ページ) - ソース: [[@2020__Cambridge__Mathematics for Machine Learning - Chapter 5 Vector Calculus]] / [[@2022__Gihyo__ディープラーニングを支える技術 - Appendix A [厳選基礎]機械学習&ディープラーニングのための数学]] / [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 3 ディープラーニングの技術基礎]] - 実体: [[wiki/entities/ディープラーニングを支える技術|ディープラーニングを支える技術]] ## 出典 - Deisenroth, M. P., Faisal, A. A., Ong, C. S., *Mathematics for Machine Learning*, Cambridge University Press, 2020, §5.6.2. - 岡野原大輔, 『ディープラーニングを支える技術』, 技術評論社, 2022, Appendix A §A.2。 - 岡野原大輔, 『ディープラーニングを支える技術』, 技術評論社, 2022, 第3章 §3.5・§3.7。