§E20.22自動微分と感度計算

最終更新

関数の値だけから微分係数を近似する中心差分では、刻みhhに対する打切り誤差h26g′′′(ξ)\frac{h^2}6g'''(\xi)に、関数値の誤差δ\deltaから生じるδh\frac\delta h以下の項が加わる。刻みを小さくすると前者の上界は小さくなるが、後者の上界は大きくなる。

関数が基本関数を有限個合成する手続きとして与えられているならば、事情は異なる。手続きの各段で、引数に関する局所偏導関数を値とともに計算し、連鎖律によってつなぐと、実数の演算としては刻みを用いずに微分係数を得ることができる。この手続きを計算グラフの上で定めたものが自動微分であり、方向x˙\dot xに対するDF(x)x˙DF(x)\dot xを段の順に計算する前進モードと、重みyˉ\bar yに対するDF(x)TyˉDF(x)^{\mathsf T}\bar yを段の逆順に計算する逆モードがある。たとえばF(x)=x1x2(x1+x2)F(x)=x_1x_2(x_1+x_2)の点(2,3)(2,3)での勾配(21,16)(21,16)は、前進モードでは方向(1,0)(1,0)と(0,1)(0,1)の二回の実行で一成分ずつ得られ、逆モードでは一回の実行で得られる。費用のモデルの下では、出力が一つの写像の勾配を、入力の個数によらず、計算グラフによる評価の費用の定数倍以下の費用で計算することができる。

同じ考えは、方程式の解のパラメータに関する微分にも及ぶ。方程式G(u,p)=0G(u,p)=0の解uuがパラメータppによって定まるとき、uuに関する微分DuGD_uGが正則な点の近傍では、解の微分係数はDuGD_uGを係数行列とする一次方程式の解として求まり、解とppから定まる量の勾配は、転置した係数行列をもつ一つの一次方程式から得られる。本記事では、自動微分の二つのモードと、それを方程式の解へ広げた感度計算について、基本的な性質を解説する。

1 計算グラフ

定義 1.1.n,N∈N≥1n,N\in\NNをn<Nn<Nを満たす整数とし、U⊆RnU\subseteq\R^nを開集合とする。UU上のnn入力NN節点の 計算グラフ (computational graph) とは、次のデータの組である。

  1. 各整数kk(n<k≤Nn<k\le N)に対する、空でない部分集合Pk⊆{1,…,k−1}P_k\subseteq\{1,\dots,k-1\}、開集合Wk⊆RPkW_k\subseteq\R^{P_k}、C1C^1級関数φk ⁣:Wk→R\varphi_k\colon W_k\to\R。ここでRPk\R^{P_k}はPkP_kで添字づけた実数の族(wj)j∈Pk(w_j)_{j\in P_k}の空間であり、R∣Pk∣\R^{|P_k|}と同一視する。
  2. m∈N≥1m\in\NNと、相異なる添字o1,…,om∈{1,…,N}o_1,\dots,o_m\in\{1,\dots,N\}。

添字1,…,N1,\dots,Nを 節点 (node) という。j∈Pkj\in P_kのときjjをkkの 先行節点 (predecessor)、kkをjjの 後続節点 (successor) といい、jjの後続節点の集合をSj:={k∣n<k≤N, j∈Pk}S_j:=\{k\mid n<k\le N,\ j\in P_k\}と書く。Sj⊆{max⁡(j,n)+1,…,N}S_j\subseteq\{\max(j,n)+1,\dots,N\}である。

集合Ωk⊆U\Omega_k\subseteq Uと関数vk ⁣:Ωk→Rv_k\colon\Omega_k\to\Rをkkについて帰納的に次で定める。Ωn:=U\Omega_n:=Uとし、1≤i≤n1\le i\le nについてvi(x):=xiv_i(x):=x_iとする。n<k≤Nn<k\le Nについて、vjv_j(j<kj<k)がΩk−1\Omega_{k-1}上で定まっているとき、

Ωk:={x∈Ωk−1∣(vj(x))j∈Pk∈Wk},vk(x):=φk((vj(x))j∈Pk)(x∈Ωk)\Omega_k:=\bigl\{x\in\Omega_{k-1}\bigm|(v_j(x))_{j\in P_k}\in W_k\bigr\},\qquad v_k(x):=\varphi_k\bigl((v_j(x))_{j\in P_k}\bigr)\quad(x\in\Omega_k)

とする。Ω:=ΩN\Omega:=\Omega_Nを計算グラフの定義域といい、F ⁣:Ω→RmF\colon\Omega\to\R^m、F(x):=(vo1(x),…,vom(x))F(x):=(v_{o_1}(x),\dots,v_{o_m}(x))を計算グラフが定める写像という。x∈Ωx\in\Omegaについてv1(x),…,vN(x)v_1(x),\dots,v_N(x)を添字の順に計算する手続きを、計算グラフによるF(x)F(x)の評価という。

n<k≤Nn<k\le N、x∈Ωkx\in\Omega_kとする。j∈Pkj\in P_kについて

ckj(x):=∂φk∂wj((vi(x))i∈Pk)c_{kj}(x):=\frac{\partial\varphi_k}{\partial w_j}\bigl((v_i(x))_{i\in P_k}\bigr)

を節点kkのjjに関する 局所偏導関数 (local partial derivative) という。j∈{1,…,k−1}∖Pkj\in\{1,\dots,k-1\}\setminus P_kについてはckj(x):=0c_{kj}(x):=0と置く。

補題 1.2.U⊆RnU\subseteq\R^n上の計算グラフを取り、記号を定義 1.1のとおりとする。

  1. 各k∈{n,…,N}k\in\{n,\dots,N\}についてΩk\Omega_kは開集合であり、各j≤kj\le kについてvjv_jはΩk\Omega_k上でC1C^1級である。特にΩ\Omegaは開集合であり、FFはΩ\Omega上でC1C^1級である。
  2. n<k≤Nn<k\le N、x∈Ωkx\in\Omega_kについて Dvk(x)=∑j∈Pkckj(x) Dvj(x)Dv_k(x)=\sum_{j\in P_k}c_{kj}(x)\,Dv_j(x) が成り立つ。

証明.k=nk=nのとき、Ωn=U\Omega_n=Uは開集合であり、viv_i(i≤ni\le n)は座標関数であるから線形であり、C1C^1級である。

n<k≤Nn<k\le Nとし、Ωk−1\Omega_{k-1}が開集合であり、vjv_j(j<kj<k)がΩk−1\Omega_{k-1}上でC1C^1級であると仮定する。wk ⁣:Ωk−1→RPkw_k\colon\Omega_{k-1}\to\R^{P_k}をwk(x):=(vj(x))j∈Pkw_k(x):=(v_j(x))_{j\in P_k}で定めると、wkw_kの各成分はC1C^1級であるからwkw_kはC1C^1級であり、特に連続である。Ωk=wk−1(Wk)\Omega_k=w_k^{-1}(W_k)は開集合Ωk−1\Omega_{k-1}における開集合WkW_kの連続写像による逆像であるから、Rn\R^nの開集合である。Ωk\Omega_k上でvk=φk∘wkv_k=\varphi_k\circ w_kであり、§E4.3 定理 1.1により、vkv_kは各x∈Ωkx\in\Omega_kで全微分可能であって

Dvk(x)=Dφk(wk(x)) Dwk(x)=∑j∈Pk∂φk∂wj(wk(x)) Dvj(x)=∑j∈Pkckj(x) Dvj(x)Dv_k(x)=D\varphi_k(w_k(x))\,Dw_k(x)=\sum_{j\in P_k}\frac{\partial\varphi_k}{\partial w_j}(w_k(x))\,Dv_j(x)=\sum_{j\in P_k}c_{kj}(x)\,Dv_j(x)

が成り立つ。ckj=∂φk∂wj∘wkc_{kj}=\frac{\partial\varphi_k}{\partial w_j}\circ w_kは連続関数の合成であるから連続であり、vkv_kの各偏導関数∑j∈Pkckj ∂ivj\sum_{j\in P_k}c_{kj}\,\partial_iv_jはΩk\Omega_k上で連続である。したがってvkv_kはΩk\Omega_k上でC1C^1級であり、vjv_j(j<kj<k)の開集合Ωk⊆Ωk−1\Omega_k\subseteq\Omega_{k-1}への制限もC1C^1級である。FFの各成分はvoiv_{o_i}のΩ\Omegaへの制限であるから、FFはC1C^1級である。▨

補題 1.3.U⊆RnU\subseteq\R^n上の計算グラフとx∈Ωx\in\Omegaを取り、記号を定義 1.1のとおりとする。全微分を標準基底に関する行列と同一視し、Dvj(x)∈R1×nDv_j(x)\in\R^{1\times n}、DF(x)∈Rm×nDF(x)\in\R^{m\times n}とする。n≤k≤Nn\le k\le Nについて、第jj行がDvj(x)Dv_j(x)(1≤j≤k1\le j\le k)である行列をJk(x)∈Rk×nJ_k(x)\in\R^{k\times n}とする。n<k≤Nn<k\le Nについて、上のk−1k-1行が単位行列Ik−1I_{k-1}であり第kk行が(ck1(x),…,ck,k−1(x))(c_{k1}(x),\dots,c_{k,k-1}(x))である行列をLk(x)∈Rk×(k−1)L_k(x)\in\R^{k\times(k-1)}とする。第ii行がRN\R^Nの第oio_i標準単位行ベクトルである行列をΠ∈Rm×N\Pi\in\R^{m\times N}とする。

  1. Jn(x)=InJ_n(x)=I_nであり、n<k≤Nn<k\le NについてJk(x)=Lk(x)Jk−1(x)J_k(x)=L_k(x)J_{k-1}(x)が成り立つ。
  2. DF(x)=Π LN(x)LN−1(x)⋯Ln+1(x)DF(x)=\Pi\,L_N(x)L_{N-1}(x)\cdots L_{n+1}(x)が成り立つ。

証明.i≤ni\le nについてviv_iは第ii座標関数であるからDvi(x)Dv_i(x)は第ii標準単位行ベクトルであり、Jn(x)=InJ_n(x)=I_nである。n<k≤Nn<k\le Nとする。Lk(x)Jk−1(x)L_k(x)J_{k-1}(x)の上のk−1k-1行はJk−1(x)J_{k-1}(x)の行Dv1(x),…,Dvk−1(x)Dv_1(x),\dots,Dv_{k-1}(x)であり、第kk行は∑j<kckj(x)Dvj(x)=∑j∈Pkckj(x)Dvj(x)\sum_{j<k}c_{kj}(x)Dv_j(x)=\sum_{j\in P_k}c_{kj}(x)Dv_j(x)である。補題 1.2 (2)によりこの行はDvk(x)Dv_k(x)に等しいので、Lk(x)Jk−1(x)=Jk(x)L_k(x)J_{k-1}(x)=J_k(x)である。

(1)を繰り返し用いるとJN(x)=LN(x)⋯Ln+1(x)J_N(x)=L_N(x)\cdots L_{n+1}(x)である。ΠJN(x)\Pi J_N(x)の第ii行はJN(x)J_N(x)の第oio_i行Dvoi(x)Dv_{o_i}(x)であり、FFの第ii成分はvoiv_{o_i}の開集合Ω\Omegaへの制限であるから、この行はDF(x)DF(x)の第ii行に等しい。したがってDF(x)=Π LN(x)⋯Ln+1(x)DF(x)=\Pi\,L_N(x)\cdots L_{n+1}(x)である。▨

2 前進モード

定義 2.1.U⊆RnU\subseteq\R^n上の計算グラフを取り、記号を定義 1.1のとおりとする。x∈Ωx\in\Omega、x˙∈Rn\dot x\in\R^nに対して、実数v˙1,…,v˙N\dot v_1,\dots,\dot v_Nを

v˙i:=x˙i(1≤i≤n),v˙k:=∑j∈Pkckj(x) v˙j(n<k≤N)\dot v_i:=\dot x_i\quad(1\le i\le n),\qquad\dot v_k:=\sum_{j\in P_k}c_{kj}(x)\,\dot v_j\quad(n<k\le N)

によりkkの小さい順に定める。k=n+1,…,Nk=n+1,\dots,Nの順に、各段でvk(x)v_k(x)、ckj(x)c_{kj}(x)(j∈Pkj\in P_k)、v˙k\dot v_kを計算する手続きを、方向x˙\dot xの 前進モード (forward mode) といい、y˙:=(v˙o1,…,v˙om)\dot y:=(\dot v_{o_1},\dots,\dot v_{o_m})をその出力という。

定理 2.2.U⊆RnU\subseteq\R^n上の計算グラフ、x∈Ωx\in\Omega、x˙∈Rn\dot x\in\R^nを取り、v˙1,…,v˙N\dot v_1,\dots,\dot v_Nとy˙\dot yを定義 2.1のとおりとする。任意のk∈{1,…,N}k\in\{1,\dots,N\}についてv˙k=Dvk(x)x˙\dot v_k=Dv_k(x)\dot xであり、y˙=DF(x)x˙\dot y=DF(x)\dot xが成り立つ。

証明.Jk(x)J_k(x)、Lk(x)L_k(x)、Π\Piを補題 1.3のとおりとし、n≤k≤Nn\le k\le Nについてw(k):=Jk(x)x˙∈Rkw^{(k)}:=J_k(x)\dot x\in\R^kと置く。w(k)w^{(k)}の第jj成分はDvj(x)x˙Dv_j(x)\dot xである。補題 1.3 (1)によりw(n)=x˙w^{(n)}=\dot xであり、n<k≤Nn<k\le Nについてw(k)=Lk(x)w(k−1)w^{(k)}=L_k(x)w^{(k-1)}、すなわち

wj(k)=wj(k−1)(j<k),wk(k)=∑j∈Pkckj(x) wj(k−1)w^{(k)}_j=w^{(k-1)}_j\quad(j<k),\qquad w^{(k)}_k=\sum_{j\in P_k}c_{kj}(x)\,w^{(k-1)}_j

である。wi(n)=x˙i=v˙iw^{(n)}_i=\dot x_i=\dot v_iであり、w(k)w^{(k)}と(v˙1,…,v˙k)(\dot v_1,\dots,\dot v_k)は同じ漸化式に従うから、kkについての帰納法によりw(k)=(v˙1,…,v˙k)w^{(k)}=(\dot v_1,\dots,\dot v_k)である。したがってv˙k=wk(k)=Dvk(x)x˙\dot v_k=w^{(k)}_k=Dv_k(x)\dot xである。補題 1.3 (2)によりDF(x)x˙=ΠJN(x)x˙=Πw(N)=(v˙o1,…,v˙om)=y˙DF(x)\dot x=\Pi J_N(x)\dot x=\Pi w^{(N)}=(\dot v_{o_1},\dots,\dot v_{o_m})=\dot yである。▨

例 2.3. 条件分岐を含む手続きは、分岐の各場合ごとに一つの計算グラフを実行する。手続きが計算する関数ffと、ある場合の計算グラフが定める写像FbF_bが点xxのある開近傍の上で一致するならば、全微分は開近傍の上の値だけで定まるので、ffはxxで全微分可能でありDf(x)=DFb(x)Df(x)=DF_b(x)である。分岐の条件を満たす点の集合がxxの開近傍を含まない場合には、ffがxxで微分可能であるとは限らず、微分可能であっても前進モードの出力がffの微分係数に等しいとは限らない。

  1. 実数xxに対して、x≥0x\ge0ならばy:=xy:=x、x<0x<0ならばy:=−xy:=-xを出力する手続きはf(x)=∣x∣f(x)=|x|を計算する。x≥0x\ge0の場合の計算グラフはn=1n=1、N=2N=2、P2={1}P_2=\{1\}、W2=RW_2=\R、φ2(w1)=w1\varphi_2(w_1)=w_1、o1=2o_1=2であり、F+(x)=xF_+(x)=xを定める。x=0x=0では手続きはこの場合を実行し、方向x˙=1\dot x=1の前進モードの出力はF+′(0)=1F_+'(0)=1である。h>0h>0で(f(h)−f(0))/h=1(f(h)-f(0))/h=1、h<0h<0で(f(h)−f(0))/h=−1(f(h)-f(0))/h=-1であるから、ffは00で微分可能でない。x>0x>0ではffとF+F_+は開区間(0,∞)(0,\infty)で一致し、f′(x)=1f'(x)=1である。
  2. 実数xxに対して、x=0x=0ならばy:=0y:=0、x≠0x\ne0ならばy:=xy:=xを出力する手続きはf(x)=xf(x)=xを計算し、f′(0)=1f'(0)=1である。x=0x=0の場合の計算グラフをn=1n=1、N=2N=2、P2={1}P_2=\{1\}、W2=RW_2=\R、φ2(w1)=0\varphi_2(w_1)=0、o1=2o_1=2とすると、c21=0c_{21}=0であり、方向x˙=1\dot x=1の前進モードの出力は0≠f′(0)0\ne f'(0)である。分岐の条件を満たす点の集合{0}\{0\}は00の開近傍を含まない。

3 逆モード

定義 3.1.U⊆RnU\subseteq\R^n上の計算グラフを取り、記号を定義 1.1のとおりとする。x∈Ωx\in\Omega、yˉ∈Rm\bar y\in\R^mに対して、j∈{1,…,N}j\in\{1,\dots,N\}についてj=oij=o_iならばσj:=yˉi\sigma_j:=\bar y_i、j∉{o1,…,om}j\notin\{o_1,\dots,o_m\}ならばσj:=0\sigma_j:=0と置く(o1,…,omo_1,\dots,o_mは相異なるのでσj\sigma_jは一意に定まる)。実数vˉN,vˉN−1,…,vˉ1\bar v_N,\bar v_{N-1},\dots,\bar v_1を、jjの大きい順に

vˉj:=σj+∑k∈Sjvˉk ckj(x)\bar v_j:=\sigma_j+\sum_{k\in S_j}\bar v_k\,c_{kj}(x)

により定める。ここで和はjjのすべての後続節点kkにわたり、Sj=∅S_j=\emptysetのとき和は00である。Sj⊆{j+1,…,N}S_j\subseteq\{j+1,\dots,N\}であるから、右辺のvˉk\bar v_kはvˉj\bar v_jより先に定まっている。vˉj\bar v_jを節点jjの 随伴 (adjoint) という。k=n+1,…,Nk=n+1,\dots,Nの順にvk(x)v_k(x)とckj(x)c_{kj}(x)(j∈Pkj\in P_k)を計算した後、j=N,…,1j=N,\dots,1の順にvˉj\bar v_jを計算する手続きを、重みyˉ\bar yの 逆モード (reverse mode) といい、xˉ:=(vˉ1,…,vˉn)\bar x:=(\bar v_1,\dots,\bar v_n)をその出力という。

定理 3.2.U⊆RnU\subseteq\R^n上の計算グラフ、x∈Ωx\in\Omega、yˉ∈Rm\bar y\in\R^mを取り、vˉ1,…,vˉN\bar v_1,\dots,\bar v_Nとxˉ\bar xを定義 3.1のとおりとする。このときxˉ=DF(x)Tyˉ\bar x=DF(x)^{\mathsf T}\bar yが成り立つ。特にm=1m=1、yˉ=1\bar y=1ならばxˉ=∇F(x)\bar x=\nabla F(x)である。

証明.Lk(x)L_k(x)、Π\Piを補題 1.3のとおりとする。n≤k≤Nn\le k\le Nについてa(k)∈Rka^{(k)}\in\R^kを

aj(k):=σj+∑l∈Sj, l>kvˉl clj(x)(1≤j≤k)a^{(k)}_j:=\sigma_j+\sum_{l\in S_j,\ l>k}\bar v_l\,c_{lj}(x)\qquad(1\le j\le k)

で定める。

l>Nl>Nを満たすl∈Sjl\in S_jは無いのでaj(N)=σja^{(N)}_j=\sigma_jであり、ΠTyˉ=∑i=1myˉi eoi\Pi^{\mathsf T}\bar y=\sum_{i=1}^m\bar y_i\,e_{o_i}の第jj成分もσj\sigma_jであるから、a(N)=ΠTyˉa^{(N)}=\Pi^{\mathsf T}\bar yである。

n<k≤Nn<k\le Nとする。Lk(x)Ta(k)∈Rk−1L_k(x)^{\mathsf T}a^{(k)}\in\R^{k-1}の第jj成分はaj(k)+ckj(x) ak(k)a^{(k)}_j+c_{kj}(x)\,a^{(k)}_kである。Sk⊆{k+1,…,N}S_k\subseteq\{k+1,\dots,N\}であるからak(k)=σk+∑l∈Skvˉl clk(x)=vˉka^{(k)}_k=\sigma_k+\sum_{l\in S_k}\bar v_l\,c_{lk}(x)=\bar v_kである。j<kj<kかつj∈Pkj\in P_kならばk∈Sjk\in S_jであり、

aj(k)+ckj(x) vˉk=σj+∑l∈Sj, l≥kvˉl clj(x)=aj(k−1)a^{(k)}_j+c_{kj}(x)\,\bar v_k=\sigma_j+\sum_{l\in S_j,\ l\ge k}\bar v_l\,c_{lj}(x)=a^{(k-1)}_j

である。j<kj<kかつj∉Pkj\notin P_kならばckj(x)=0c_{kj}(x)=0かつk∉Sjk\notin S_jであるから、aj(k)+ckj(x) vˉk=aj(k)=aj(k−1)a^{(k)}_j+c_{kj}(x)\,\bar v_k=a^{(k)}_j=a^{(k-1)}_jである。したがってa(k−1)=Lk(x)Ta(k)a^{(k-1)}=L_k(x)^{\mathsf T}a^{(k)}である。

j≤nj\le nについてSj⊆{n+1,…,N}S_j\subseteq\{n+1,\dots,N\}であるからaj(n)=σj+∑l∈Sjvˉl clj(x)=vˉja^{(n)}_j=\sigma_j+\sum_{l\in S_j}\bar v_l\,c_{lj}(x)=\bar v_jであり、a(n)=xˉa^{(n)}=\bar xである。以上と補題 1.3 (2)により

xˉ=Ln+1(x)T⋯LN(x)T ΠTyˉ=(Π LN(x)⋯Ln+1(x))Tyˉ=DF(x)Tyˉ\bar x=L_{n+1}(x)^{\mathsf T}\cdots L_N(x)^{\mathsf T}\,\Pi^{\mathsf T}\bar y=\bigl(\Pi\,L_N(x)\cdots L_{n+1}(x)\bigr)^{\mathsf T}\bar y=DF(x)^{\mathsf T}\bar y

が成り立つ。

m=1m=1のとき、§E4.3 定理 3.2により任意のh∈Rnh\in\R^nについてDF(x)h=⟨∇F(x),h⟩DF(x)h=\langle\nabla F(x),h\rangleであるから、行列DF(x)DF(x)は行ベクトル∇F(x)T\nabla F(x)^{\mathsf T}であり、DF(x)T⋅1=∇F(x)DF(x)^{\mathsf T}\cdot1=\nabla F(x)である。▨

例 3.3.U=R2U=\R^2上の22入力55節点の計算グラフを、P3=P4={1,2}P_3=P_4=\{1,2\}、P5={3,4}P_5=\{3,4\}、Wk=RPkW_k=\R^{P_k}、

φ3(w1,w2)=w1w2,φ4(w1,w2)=w1+w2,φ5(w3,w4)=w3w4,\varphi_3(w_1,w_2)=w_1w_2,\qquad\varphi_4(w_1,w_2)=w_1+w_2,\qquad\varphi_5(w_3,w_4)=w_3w_4,

m=1m=1、o1=5o_1=5で定める。Ω=R2\Omega=\R^2であり、F(x)=x1x2(x1+x2)F(x)=x_1x_2(x_1+x_2)である。局所偏導関数はc31=v2c_{31}=v_2、c32=v1c_{32}=v_1、c41=c42=1c_{41}=c_{42}=1、c53=v4c_{53}=v_4、c54=v3c_{54}=v_3であり、後続節点の集合はS1=S2={3,4}S_1=S_2=\{3,4\}、S3=S4={5}S_3=S_4=\{5\}、S5=∅S_5=\emptysetである。

x=(2,3)x=(2,3)とすると(v1,…,v5)=(2,3,6,5,30)(v_1,\dots,v_5)=(2,3,6,5,30)である。

  1. 方向x˙=(1,0)\dot x=(1,0)の前進モードは(v˙1,…,v˙5)=(1,0,3,1,21)(\dot v_1,\dots,\dot v_5)=(1,0,3,1,21)を与え、ここでv˙5=c53v˙3+c54v˙4=5⋅3+6⋅1\dot v_5=c_{53}\dot v_3+c_{54}\dot v_4=5\cdot3+6\cdot1である。方向x˙=(0,1)\dot x=(0,1)の前進モードは(v˙1,…,v˙5)=(0,1,2,1,16)(\dot v_1,\dots,\dot v_5)=(0,1,2,1,16)を与える。直接の計算では∂1F(x)=2x1x2+x22=21\partial_1F(x)=2x_1x_2+x_2^2=21、∂2F(x)=x12+2x1x2=16\partial_2F(x)=x_1^2+2x_1x_2=16であり、二回の前進モードの出力と一致する。
  2. 重みyˉ=1\bar y=1の逆モードは、σ5=1\sigma_5=1、σ1=⋯=σ4=0\sigma_1=\dots=\sigma_4=0から vˉ5=1,vˉ4=vˉ5c54=6,vˉ3=vˉ5c53=5,vˉ2=vˉ3c32+vˉ4c42=16,vˉ1=vˉ3c31+vˉ4c41=21\bar v_5=1,\quad\bar v_4=\bar v_5c_{54}=6,\quad\bar v_3=\bar v_5c_{53}=5,\quad\bar v_2=\bar v_3c_{32}+\bar v_4c_{42}=16,\quad\bar v_1=\bar v_3c_{31}+\bar v_4c_{41}=21 を与え、一回で∇F(x)=(21,16)\nabla F(x)=(21,16)を得る。
  3. 節点11は二つの後続節点3,43,4を持つ。vˉ1\bar v_1の定義の和から節点44の寄与vˉ4c41=6\bar v_4c_{41}=6を除くとvˉ3c31=15≠∂1F(x)\bar v_3c_{31}=15\ne\partial_1F(x)となり、定理 3.2の結論は成り立たない。

4 演算費用

命題 4.1.U⊆RnU\subseteq\R^n上の計算グラフとx∈Ωx\in\Omegaを取り、記号を定義 1.1のとおりとする。実数の加算・減算・乗算をそれぞれ費用11と数える。各kk(n<k≤Nn<k\le N)についてφk\varphi_kの値の計算の費用を表す実数tk≥∣Pk∣t_k\ge|P_k|が与えられているとし、計算グラフによるF(x)F(x)の評価の費用をT:=∑k=n+1NtkT:=\sum_{k=n+1}^Nt_kとする。定数C≥1C\ge1が存在して、各kkについて(vj(x))j∈Pk(v_j(x))_{j\in P_k}からvk(x)v_k(x)とckj(x)c_{kj}(x)(j∈Pkj\in P_k)をあわせて費用CtkCt_k以下で計算することができると仮定する。

  1. 一つの方向x˙∈Rn\dot x\in\R^nの前進モードの費用は(C+2)T(C+2)T以下である。
  2. 一つの重みyˉ∈Rm\bar y\in\R^mの逆モードの費用は(C+2)T(C+2)T以下である。特にm=1m=1のとき、∇F(x)\nabla F(x)を費用(C+2)T(C+2)T以下で計算することができる。
  3. すべてのvk(x)v_k(x)とckj(x)c_{kj}(x)を一度計算した後、方向x˙=e1,…,en\dot x=e_1,\dots,e_nの前進モードのv˙\dot vを計算するとDF(x)DF(x)のすべての列が得られ、その費用の総和は(C+2n)T(C+2n)T以下である。重みyˉ=e1,…,em\bar y=e_1,\dots,e_mの逆モードのvˉ\bar vを計算するとDF(x)DF(x)のすべての行が得られ、その費用の総和は(C+2m)T(C+2m)T以下である。

証明. すべてのvk(x)v_k(x)とckj(x)c_{kj}(x)の計算の費用は仮定により∑kCtk=CT\sum_kCt_k=CT以下である。

v˙i=x˙i\dot v_i=\dot x_i(i≤ni\le n)は演算を要さない。v˙k\dot v_k(n<k≤Nn<k\le N)の計算は∣Pk∣|P_k|回の乗算と∣Pk∣−1|P_k|-1回の加算であり、v˙n+1,…,v˙N\dot v_{n+1},\dots,\dot v_Nの費用の総和は2∑k∣Pk∣≤2T2\sum_k|P_k|\le2T以下である。これで(1)は示された。

o1,…,omo_1,\dots,o_mは相異なるのでσj\sigma_jはyˉ\bar yの成分または00であり、演算を要さない。vˉj\bar v_jの計算は∣Sj∣|S_j|回の乗算と∣Sj∣|S_j|回の加算である。∑j=1N∣Sj∣\sum_{j=1}^N|S_j|と∑k=n+1N∣Pk∣\sum_{k=n+1}^N|P_k|はともにj∈Pkj\in P_kを満たす組(j,k)(j,k)の個数であるから、vˉ1,…,vˉN\bar v_1,\dots,\bar v_Nの費用の総和は2∑k∣Pk∣≤2T2\sum_k|P_k|\le2T以下である。定理 3.2によりm=1m=1、yˉ=1\bar y=1の出力は∇F(x)\nabla F(x)である。これで(2)は示された。

定理 2.2により方向ele_lの前進モードの出力はDF(x)elDF(x)e_l、すなわちDF(x)DF(x)の第ll列である。定理 3.2により重みeie_iの逆モードの出力はDF(x)TeiDF(x)^{\mathsf T}e_i、すなわちDF(x)DF(x)の第ii行の転置である。v˙\dot vの計算をnn回、vˉ\bar vの計算をmm回行う費用はそれぞれ2nT2nT以下、2mT2mT以下であり、(3)が従う。▨

注意 4.2. 前進モードでは、ckj(x)c_{kj}(x)(j∈Pkj\in P_k)は段kkで計算され、同じ段のv˙k\dot v_kの計算でだけ使われる。逆モードでは、ckj(x)c_{kj}(x)はvˉj\bar v_jの計算で使われ、vˉN,…,vˉ1\bar v_N,\dots,\bar v_1の計算はvN(x)v_N(x)までの前向きの評価がすべて終わってから始まる。したがって定義 3.1の手続きは、vN(x)v_N(x)を計算し終えた時点で、∑k∣Pk∣\sum_k|P_k|個の実数ckj(x)c_{kj}(x)のすべて、またはそれらを再計算するための節点の値を保持する。

5 陰関数定理による感度

命題 5.1.k,q∈N≥1k,q\in\NNとし、Q⊆Rk×RqQ\subseteq\R^k\times\R^qを開集合、G ⁣:Q→RkG\colon Q\to\R^kをC1C^1級写像とする。(w,p)∈Q(w,p)\in Qについて、DuG(w,p)∈Rk×kD_uG(w,p)\in\R^{k\times k}とDpG(w,p)∈Rk×qD_pG(w,p)\in\R^{k\times q}を、任意のh∈Rkh\in\R^k、r∈Rqr\in\R^qについてDuG(w,p)h=DG(w,p)(h,0)D_uG(w,p)h=DG(w,p)(h,0)、DpG(w,p)r=DG(w,p)(0,r)D_pG(w,p)r=DG(w,p)(0,r)を満たす行列とする。(u0,p0)∈Q(u_0,p_0)\in QがG(u0,p0)=0G(u_0,p_0)=0を満たし、DuG(u0,p0)D_uG(u_0,p_0)が正則であるとする。

  1. p0p_0の開近傍V⊆RqV\subseteq\R^q、u0u_0の開近傍B⊆RkB\subseteq\R^k、C1C^1級写像u ⁣:V→Bu\colon V\to Bが存在して、u(p0)=u0u(p_0)=u_0であり、任意のp∈Vp\in VについてG(u(p),p)=0G(u(p),p)=0が成り立ち、(w,p)∈Q(w,p)\in Q、w∈Bw\in B、p∈Vp\in V、G(w,p)=0G(w,p)=0ならばw=u(p)w=u(p)である。
  2. (1)のVV、uuについて、任意のp∈Vp\in VでDuG(u(p),p)D_uG(u(p),p)は正則であり、任意のp˙∈Rq\dot p\in\R^qについてu˙:=Du(p)p˙\dot u:=Du(p)\dot pは一次方程式 DuG(u(p),p) u˙=−DpG(u(p),p) p˙D_uG(u(p),p)\,\dot u=-D_pG(u(p),p)\,\dot p のただ一つの解である。

証明. 開集合Q′:={(p,w)∣(w,p)∈Q}Q':=\{(p,w)\mid(w,p)\in Q\}上のC1C^1級写像F(p,w):=G(w,p)F(p,w):=G(w,p)の第一変数、第二変数に関する全微分は、それぞれDpG(w,p)D_pG(w,p)、DuG(w,p)D_uG(w,p)である。F(p0,u0)=0F(p_0,u_0)=0であり、DuG(u0,p0)D_uG(u_0,p_0)は正則であるから、§E4.8 定理 2.1 (2)をn=qn=q、m=km=k、(a,b)=(p0,u0)(a,b)=(p_0,u_0)として適用すると、p0p_0の開近傍VV、u0u_0の開近傍BB、C1C^1級写像u ⁣:V→Bu\colon V\to Bが存在して、(p,w)∈V×B(p,w)\in V\times BについてF(p,w)=0F(p,w)=0とw=u(p)w=u(p)は同値であり、u(p0)=u0u(p_0)=u_0であり、任意のp∈Vp\in VでDuG(u(p),p)D_uG(u(p),p)は正則であって

Du(p)=−DuG(u(p),p)−1DpG(u(p),p)Du(p)=-D_uG(u(p),p)^{-1}D_pG(u(p),p)

が成り立つ。同値性をw=u(p)w=u(p)に適用するとG(u(p),p)=0G(u(p),p)=0を得る。これで(1)は示された。Du(p)Du(p)の表示の両辺に左からDuG(u(p),p)D_uG(u(p),p)を掛けるとu˙=Du(p)p˙\dot u=Du(p)\dot pが一次方程式を満たすことが従い、係数行列が正則であるから解はただ一つである。▨

系 5.2.k,q∈N≥1k,q\in\NNとし、P⊆RqP\subseteq\R^qを開集合、A ⁣:P→Rk×kA\colon P\to\R^{k\times k}とb ⁣:P→Rkb\colon P\to\R^kを各成分がC1C^1級である写像とする。P0:={p∈P∣A(p) は正則}P_0:=\{p\in P\mid A(p)\text{ は正則}\}は開集合であり、u(p):=A(p)−1b(p)u(p):=A(p)^{-1}b(p)で定まるu ⁣:P0→Rku\colon P_0\to\R^kはC1C^1級であって、任意のp∈P0p\in P_0、p˙∈Rq\dot p\in\R^qについて

Du(p)p˙=A(p)−1(Db(p)p˙−(DA(p)p˙) u(p))Du(p)\dot p=A(p)^{-1}\bigl(Db(p)\dot p-(DA(p)\dot p)\,u(p)\bigr)

が成り立つ。ここで∂lA(p)\partial_lA(p)をAAの各成分のplp_lに関する偏導関数を並べた行列とし、DA(p)p˙:=∑l=1qp˙l ∂lA(p)DA(p)\dot p:=\sum_{l=1}^q\dot p_l\,\partial_lA(p)と置く。

証明. 演習とする(問題 8.1)。▨

命題 5.3.kk、qq、QQ、GG、(u0,p0)(u_0,p_0)を命題 5.1のとおりとし、同命題のVV、BB、uuを取る。J ⁣:Q→RJ\colon Q\to\RをC1C^1級関数とし、j ⁣:V→Rj\colon V\to\Rをj(p):=J(u(p),p)j(p):=J(u(p),p)で定める。p∈Vp\in Vについて、∇J(u(p),p)∈Rk×Rq\nabla J(u(p),p)\in\R^k\times\R^qの前半kk成分を∇uJ(u(p),p)\nabla_uJ(u(p),p)、後半qq成分を∇pJ(u(p),p)\nabla_pJ(u(p),p)と書く。このとき一次方程式

DuG(u(p),p)Tλ=∇uJ(u(p),p)D_uG(u(p),p)^{\mathsf T}\lambda=\nabla_uJ(u(p),p)

はただ一つの解λ∈Rk\lambda\in\R^kを持ち、jjはppで全微分可能であって

∇j(p)=∇pJ(u(p),p)−DpG(u(p),p)Tλ\nabla j(p)=\nabla_pJ(u(p),p)-D_pG(u(p),p)^{\mathsf T}\lambda

が成り立つ。

証明.p∈Vp\in Vを固定し、M:=DuG(u(p),p)M:=D_uG(u(p),p)、E:=DpG(u(p),p)E:=D_pG(u(p),p)と置く。命題 5.1 (2)によりMMは正則であるからMTM^{\mathsf T}も正則であり、λ\lambdaはただ一つ存在する。ι ⁣:V→Q\iota\colon V\to Qをι(p′):=(u(p′),p′)\iota(p'):=(u(p'),p')で定めると、ι\iotaはC1C^1級であり、j=J∘ιj=J\circ\iotaである。§E4.3 定理 1.1によりjjはppで全微分可能であり、p˙∈Rq\dot p\in\R^qとu˙:=Du(p)p˙\dot u:=Du(p)\dot pについて、§E4.3 定理 3.2から

Dj(p)p˙=DJ(ι(p))(u˙,p˙)=⟨∇uJ(u(p),p),u˙⟩+⟨∇pJ(u(p),p),p˙⟩Dj(p)\dot p=DJ(\iota(p))(\dot u,\dot p)=\langle\nabla_uJ(u(p),p),\dot u\rangle+\langle\nabla_pJ(u(p),p),\dot p\rangle

である。命題 5.1 (2)によりMu˙=−Ep˙M\dot u=-E\dot pであるから

⟨∇uJ(u(p),p),u˙⟩=⟨MTλ,u˙⟩=⟨λ,Mu˙⟩=−⟨λ,Ep˙⟩=−⟨ETλ,p˙⟩\langle\nabla_uJ(u(p),p),\dot u\rangle=\langle M^{\mathsf T}\lambda,\dot u\rangle=\langle\lambda,M\dot u\rangle=-\langle\lambda,E\dot p\rangle=-\langle E^{\mathsf T}\lambda,\dot p\rangle

であり、任意のp˙\dot pについてDj(p)p˙=⟨∇pJ(u(p),p)−ETλ,p˙⟩Dj(p)\dot p=\langle\nabla_pJ(u(p),p)-E^{\mathsf T}\lambda,\dot p\rangleが成り立つ。§E4.3 定理 3.2の勾配の一意性により∇j(p)=∇pJ(u(p),p)−ETλ\nabla j(p)=\nabla_pJ(u(p),p)-E^{\mathsf T}\lambdaである。▨

注意 5.4.命題 5.3の記号でM:=DuG(u(p),p)M:=D_uG(u(p),p)、E:=DpG(u(p),p)E:=D_pG(u(p),p)と置き、∇uJ\nabla_uJ、∇pJ\nabla_pJの引数(u(p),p)(u(p),p)を省くと、同命題のλ=(MT)−1∇uJ\lambda=(M^{\mathsf T})^{-1}\nabla_uJにより∇j(p)T=∇pJT−∇uJTM−1E\nabla j(p)^{\mathsf T}=\nabla_pJ^{\mathsf T}-\nabla_uJ^{\mathsf T}M^{-1}Eである。積∇uJTM−1E\nabla_uJ^{\mathsf T}M^{-1}Eを∇uJT(M−1E)\nabla_uJ^{\mathsf T}(M^{-1}E)と計算すると、p˙=e1,…,eq\dot p=e_1,\dots,e_qに対するqq個の一次方程式Mu˙=−Ep˙M\dot u=-E\dot pを解く。(∇uJTM−1)E(\nabla_uJ^{\mathsf T}M^{-1})Eと計算すると、一つの一次方程式MTλ=∇uJM^{\mathsf T}\lambda=\nabla_uJを解けばよい。二つの計算順序は、補題 1.3 (2)の積をベクトルに右から掛ける前進モードと、転置を左から掛ける逆モードの関係と同じく、行列の積の結合法則による。

6 反復の微分

命題 6.1.k,q∈N≥1k,q\in\NNとし、Q⊆Rk×RqQ\subseteq\R^k\times\R^qを開集合、φ ⁣:Q→Rk\varphi\colon Q\to\R^kをC1C^1級写像、w0∈Rkw_0\in\R^kとする。DuφD_u\varphi、DpφD_p\varphiを命題 5.1のDuGD_uG、DpGD_pGと同じく定める。開集合Aj⊆RqA_j\subseteq\R^qと写像uj ⁣:Aj→Rku_j\colon A_j\to\R^kを、A0:=RqA_0:=\R^q、u0(p):=w0u_0(p):=w_0、

Aj+1:={p∈Aj∣(uj(p),p)∈Q},uj+1(p):=φ(uj(p),p)(p∈Aj+1)A_{j+1}:=\{p\in A_j\mid(u_j(p),p)\in Q\},\qquad u_{j+1}(p):=\varphi(u_j(p),p)\quad(p\in A_{j+1})

により定める。

  1. 各AjA_jは開集合であり、uju_jはAjA_j上でC1C^1級である。Sj(p):=Duj(p)∈Rk×qS_j(p):=Du_j(p)\in\R^{k\times q}と置くと、S0(p)=0S_0(p)=0であり、p∈Aj+1p\in A_{j+1}について Sj+1(p)=Duφ(uj(p),p) Sj(p)+Dpφ(uj(p),p)S_{j+1}(p)=D_u\varphi(u_j(p),p)\,S_j(p)+D_p\varphi(u_j(p),p) が成り立つ。
  2. p∈⋂jAjp\in\bigcap_jA_jについて、uj(p)u_j(p)があるu∗u^*に収束して(u∗,p)∈Q(u^*,p)\in Qであり、Sj(p)S_j(p)があるS∈Rk×qS\in\R^{k\times q}に収束するならば、u∗=φ(u∗,p)u^*=\varphi(u^*,p)かつ(Ik−Duφ(u∗,p))S=Dpφ(u∗,p)(I_k-D_u\varphi(u^*,p))S=D_p\varphi(u^*,p)が成り立つ。
  3. (2)の仮定に加えてIk−Duφ(u∗,p)I_k-D_u\varphi(u^*,p)が正則ならば、ppの開近傍VV、u∗u^*の開近傍BB、C1C^1級写像u~ ⁣:V→B\tilde u\colon V\to Bが存在して、u~(p)=u∗\tilde u(p)=u^*、任意のp′∈Vp'\in Vについてu~(p′)=φ(u~(p′),p′)\tilde u(p')=\varphi(\tilde u(p'),p')が成り立ち、(w,p′)∈Q(w,p')\in Q、w∈Bw\in B、p′∈Vp'\in V、w=φ(w,p′)w=\varphi(w,p')ならばw=u~(p′)w=\tilde u(p')である。さらにS=Du~(p)S=D\tilde u(p)である。

証明.(1)を示す。u0u_0は定数写像であるからC1C^1級であり、S0=0S_0=0である。AjA_jが開集合でありuju_jがAjA_j上でC1C^1級であるとする。ιj(p):=(uj(p),p)\iota_j(p):=(u_j(p),p)で定まるιj ⁣:Aj→Rk×Rq\iota_j\colon A_j\to\R^k\times\R^qはC1C^1級であり、Aj+1=ιj−1(Q)A_{j+1}=\iota_j^{-1}(Q)は開集合である。uj+1=φ∘ιju_{j+1}=\varphi\circ\iota_jであるから、§E4.3 定理 1.1によりuj+1u_{j+1}はAj+1A_{j+1}上で全微分可能であり、p˙∈Rq\dot p\in\R^qについて

Duj+1(p)p˙=Dφ(ιj(p))(Sj(p)p˙,p˙)=Duφ(uj(p),p) Sj(p)p˙+Dpφ(uj(p),p) p˙Du_{j+1}(p)\dot p=D\varphi(\iota_j(p))(S_j(p)\dot p,\dot p)=D_u\varphi(u_j(p),p)\,S_j(p)\dot p+D_p\varphi(u_j(p),p)\,\dot p

である。右辺の係数はppについて連続であるからuj+1u_{j+1}はC1C^1級である。

(2)を示す。φ\varphi、DuφD_u\varphi、DpφD_p\varphiは(u∗,p)∈Q(u^*,p)\in Qで連続である。uj+1(p)=φ(uj(p),p)u_{j+1}(p)=\varphi(u_j(p),p)でj→∞j\to\inftyとするとu∗=φ(u∗,p)u^*=\varphi(u^*,p)を得る。(1)の漸化式でj→∞j\to\inftyとするとS=Duφ(u∗,p)S+Dpφ(u∗,p)S=D_u\varphi(u^*,p)S+D_p\varphi(u^*,p)を得る。

(3)を示す。G(w,p′):=w−φ(w,p′)G(w,p'):=w-\varphi(w,p')で定まるG ⁣:Q→RkG\colon Q\to\R^kはC1C^1級であり、DuG=Ik−DuφD_uG=I_k-D_u\varphi、DpG=−DpφD_pG=-D_p\varphiである。(2)によりG(u∗,p)=0G(u^*,p)=0であり、DuG(u∗,p)D_uG(u^*,p)は正則であるから、命題 5.1を(u0,p0)=(u∗,p)(u_0,p_0)=(u^*,p)として適用すると、VV、BB、u~\tilde uが得られ、

Du~(p)=(Ik−Duφ(u∗,p))−1Dpφ(u∗,p)D\tilde u(p)=\bigl(I_k-D_u\varphi(u^*,p)\bigr)^{-1}D_p\varphi(u^*,p)

である。(2)の等式の両辺に左から(Ik−Duφ(u∗,p))−1(I_k-D_u\varphi(u^*,p))^{-1}を掛けると、右辺はSSに等しい。▨

例 6.2.k=q=1k=q=1、Q=(0,∞)×RQ=(0,\infty)\times\R、φ(w,p)=12(w+pw)\varphi(w,p)=\frac12\bigl(w+\frac pw\bigr)、w0=1w_0=1とし、命題 6.1のuju_j、SjS_jを考える。uj+1(p)=φ(uj(p),p)u_{j+1}(p)=\varphi(u_j(p),p)は方程式w2=pw^2=pに対する Newton 法の反復である。Duφ(w,p)=12(1−pw2)D_u\varphi(w,p)=\frac12\bigl(1-\frac p{w^2}\bigr)、Dpφ(w,p)=12wD_p\varphi(w,p)=\frac1{2w}であるから、漸化式は

Sj+1(p)=12(1−puj(p)2)Sj(p)+12uj(p),S0(p)=0S_{j+1}(p)=\frac12\Bigl(1-\frac p{u_j(p)^2}\Bigr)S_j(p)+\frac1{2u_j(p)},\qquad S_0(p)=0

である。u0(p)=1>0u_0(p)=1>0であり、w>0w>0、p>0p>0ならばφ(w,p)>0\varphi(w,p)>0であるから、uj(4)>0u_j(4)>0が帰納的に成り立ち、4∈⋂jAj4\in\bigcap_jA_jである。p=4p=4で有理数として計算すると次のとおりである。

j123uj(4)52412032811640Sj(4)122910084349336200\begin{array}{c|ccc} j&1&2&3\\\hline u_j(4)&\dfrac52&\dfrac{41}{20}&\dfrac{3281}{1640}\\[2mm] S_j(4)&\dfrac12&\dfrac{29}{100}&\dfrac{84349}{336200} \end{array}

p>0p>0、w>0w>0についてw=φ(w,p)w=\varphi(w,p)とw2=pw^2=pは同値である。G(w,p):=w2−pG(w,p):=w^2-p((w,p)∈Q(w,p)\in Q)と置くと、G(2,4)=0G(2,4)=0、DuG(2,4)=4D_uG(2,4)=4は正則、DpG(2,4)=−1D_pG(2,4)=-1である。命題 5.1を(u0,p0)=(2,4)(u_0,p_0)=(2,4)として適用して得られる写像をu~ ⁣:V→B\tilde u\colon V\to Bとすると、p′∈Vp'\in Vについて(u~(p′),p′)∈Q(\tilde u(p'),p')\in Qかつu~(p′)2=p′\tilde u(p')^2=p'であるから、V⊆(0,∞)V\subseteq(0,\infty)でありVV上でu~(p′)=p′\tilde u(p')=\sqrt{p'}である。命題 5.1 (2)の一次方程式4 u~′(4)=14\,\tilde u'(4)=1からu~′(4)=14\tilde u'(4)=\frac14である。Sj(4)S_j(4)はjj回の反復の出力uju_jのppに関する微分係数であり、S2(4)−14=125S_2(4)-\frac14=\frac1{25}、S3(4)−14=299336200≈8.89×10−4S_3(4)-\frac14=\frac{299}{336200}\approx8.89\times10^{-4}は00でない。同じjjでu2(4)−2=120u_2(4)-2=\frac1{20}、u3(4)−2=11640≈6.10×10−4u_3(4)-2=\frac1{1640}\approx6.10\times10^{-4}であり、j=3j=3では微分係数の誤差が解の誤差を上回る。uj(4)u_j(4)が正の数u∗u^*に収束し、Sj(4)S_j(4)が収束するならば、命題 6.1 (2)によりu∗=φ(u∗,4)u^*=\varphi(u^*,4)からu∗=2u^*=2であり、Duφ(2,4)=0D_u\varphi(2,4)=0、Dpφ(2,4)=14D_p\varphi(2,4)=\frac14からSj(4)S_j(4)の極限は14=u~′(4)\frac14=\tilde u'(4)である。

例 6.3.k=q=1k=q=1、Q=R×RQ=\R\times\R、φ(w,p)=w−w3+p\varphi(w,p)=w-w^3+p、w0=12w_0=\frac12とし、命題 6.1のuju_j、SjS_jをp=0p=0で考える。Aj=RA_j=\Rであり、uj:=uj(0)u_j:=u_j(0)、Sj:=Sj(0)S_j:=S_j(0)と書くと

uj+1=uj−uj3,Sj+1=(1−3uj2)Sj+1,u0=12, S0=0u_{j+1}=u_j-u_j^3,\qquad S_{j+1}=(1-3u_j^2)S_j+1,\qquad u_0=\frac12,\ S_0=0

である。

  1. 0<uj≤120<u_j\le\frac12ならばuj+1=uj(1−uj2)∈(0,uj)u_{j+1}=u_j(1-u_j^2)\in(0,u_j)であるから、すべてのjjについて0<uj≤120<u_j\le\frac12である。s∈[0,1)s\in[0,1)について(1+2s)(1−s)2=1−3s2+2s3≤1(1+2s)(1-s)^2=1-3s^2+2s^3\le1であるから、s=uj2s=u_j^2として 1uj+12=1uj2(1−uj2)2≥1+2uj2uj2=1uj2+2\frac1{u_{j+1}^2}=\frac1{u_j^2(1-u_j^2)^2}\ge\frac{1+2u_j^2}{u_j^2}=\frac1{u_j^2}+2 を得る。したがってuj2≤12j+4u_j^2\le\frac1{2j+4}であり、uj→0u_j\to0である。00はφ(⋅,0)\varphi(\cdot,0)のただ一つの不動点である。
  2. S1=1S_1=1である。j≥1j\ge1についてSj≥j+23S_j\ge\frac{j+2}3ならば、1−3uj2≥1−32j+4≥01-3u_j^2\ge1-\frac3{2j+4}\ge0とSj≥0S_j\ge0から Sj+1≥(1−32j+4)j+23+1=j+23+12≥j+33S_{j+1}\ge\Bigl(1-\frac3{2j+4}\Bigr)\frac{j+2}3+1=\frac{j+2}3+\frac12\ge\frac{j+3}3 である。したがってj≥1j\ge1についてSj≥j+23S_j\ge\frac{j+2}3であり、SjS_jは収束しない。
  3. I1−Duφ(0,0)=3⋅02=0I_1-D_u\varphi(0,0)=3\cdot0^2=0は正則でない。各p∈Rp\in\Rについてφ(⋅,p)\varphi(\cdot,p)のただ一つの不動点はw3=pw^3=pの実数解p1/3p^{1/3}であり、p↦p1/3p\mapsto p^{1/3}はp=0p=0で微分可能でない。

反復uju_jは収束するが、その微分係数SjS_jは収束せず、命題 6.1 (2)の仮定のうちSj(p)S_j(p)の収束はuj(p)u_j(p)の収束から従わない。

7 有限差分との比較

注意 7.1.U⊆RnU\subseteq\R^n上の計算グラフでm=1m=1のものを取り、x∈Ωx\in\Omega、x˙∈Rn\dot x\in\R^nとする。Ω\Omegaは開集合であるから、あるε>0\varepsilon>0について∣t∣<ε|t|<\varepsilonならばx+tx˙∈Ωx+t\dot x\in\Omegaであり、g(t):=F(x+tx˙)g(t):=F(x+t\dot x)と置くと、§E4.3 定理 1.1と定理 2.2によりg′(0)=DF(x)x˙g'(0)=DF(x)\dot xは方向x˙\dot xの前進モードの出力に等しい。この等式は実数の演算についての恒等式であり、刻みを含まない。これに対して、0<h<ε0<h<\varepsilonとしてggが[−h,h][-h,h]でC3C^3級ならば、中心差分の打切り誤差は§E20.19 定理 1.2 (2)によりh26g′′′(ξ)\frac{h^2}6g'''(\xi)(ξ∈[−h,h]\xi\in[-h,h])であり、g(±h)g(\pm h)の代わりに誤差δ\delta以下の値を用いると、§E20.19 命題 2.1 (3)により[−h,h][-h,h]上で∣g′′′∣≤M3|g'''|\le M_3のとき誤差はM3h26+δh\frac{M_3h^2}6+\frac\delta h以下である。前進モードを浮動小数点演算で実行すると各節点の演算で丸めが生じるが、本記事はその誤差の評価を与えない。

例 7.2.ti:=it_i:=i、(y0,y1,y2):=(1,12,14)(y_0,y_1,y_2):=(1,\frac12,\frac14)とし、減衰曲線ae−bta e^{-bt}の当てはめの損失

L(a,b):=12∑i=02(ae−bti−yi)2L(a,b):=\frac12\sum_{i=0}^2\bigl(ae^{-bt_i}-y_i\bigr)^2

を考える。LLを定めるR2\R^2上の22入力1515節点の計算グラフを、入力v1=av_1=a、v2=bv_2=bと、各iiについてei=exp⁡(−tiv2)e_i=\exp(-t_iv_2)、zi=v1eiz_i=v_1e_i、ri=zi−yir_i=z_i-y_i、si=12ri2s_i=\frac12r_i^2を値とする44個の節点、およびL=s0+s1+s2L=s_0+s_1+s_2を値とする節点で構成する。局所偏導関数は∂ei/∂v2=−tiei\partial e_i/\partial v_2=-t_ie_i、∂zi/∂v1=ei\partial z_i/\partial v_1=e_i、∂zi/∂ei=v1\partial z_i/\partial e_i=v_1、∂ri/∂zi=1\partial r_i/\partial z_i=1、∂si/∂ri=ri\partial s_i/\partial r_i=r_i、∂L/∂si=1\partial L/\partial s_i=1である。

  1. 重み11の逆モードはsˉi=1\bar s_i=1、rˉi=zˉi=ri\bar r_i=\bar z_i=r_i、eˉi=riv1\bar e_i=r_iv_1を与え、節点11の後続節点z0,z1,z2z_0,z_1,z_2と節点22の後続節点e0,e1,e2e_0,e_1,e_2からの寄与の和として

    vˉ1=∑i=02riei,vˉ2=−v1∑i=02tiriei\bar v_1=\sum_{i=0}^2r_ie_i,\qquad\bar v_2=-v_1\sum_{i=0}^2t_ir_ie_i

    を与える。方向(0,1)(0,1)の前進モードはe˙i=−tiei\dot e_i=-t_ie_i、z˙i=v1e˙i\dot z_i=v_1\dot e_i、r˙i=z˙i\dot r_i=\dot z_i、s˙i=rir˙i\dot s_i=r_i\dot r_iを経てL˙=−v1∑itiriei\dot L=-v_1\sum_it_ir_ie_iを与える。これらは手計算による∂aL=∑irie−bti\partial_aL=\sum_ir_ie^{-bt_i}、∂bL=−a∑itirie−bti\partial_bL=-a\sum_it_ir_ie^{-bt_i}に一致する。

  2. (a,b)=(1,12)(a,b)=(1,\frac12)では、有効数字15桁でe1=0.606530659712633e_1=0.606530659712633、e2=0.367879441171442e_2=0.367879441171442、r0=0r_0=0、r1=0.106530659712633r_1=0.106530659712633、r2=0.117879441171442r_2=0.117879441171442であり、∂aL(1,12)=0.107979534258878\partial_aL(1,\frac12)=0.107979534258878、∂bL(1,12)=−0.151344957202630\partial_bL(1,\frac12)=-0.151344957202630である。

  3. g(s):=L(1,12+s)g(s):=L(1,\frac12+s)とし、刻みh=2−kh=2^{-k}の中心差分Dh0g(0)D^0_hg(0)で∂bL(1,12)=g′(0)\partial_bL(1,\frac12)=g'(0)を近似する。g′′′(0)=−∑iti3ei(4ei−yi)≈−4.763g'''(0)=-\sum_it_i^3e_i(4e_i-y_i)\approx-4.763である。表の「binary64」は、各演算を binary64 の最近接偶数丸めで行い、指数関数の値を真の値の最近接偶数丸めとし、和をi=0,1,2i=0,1,2の順にとってg(±h)g(\pm h)と差分商を計算した値の誤差、「厳密」は実数としての差分商Dh0g(0)D^0_hg(0)の誤差を80桁の10進演算で計算した値であり、有効数字4桁で示す。

    kk binary64 の誤差 厳密な差分商の誤差 h26g′′′(0)\frac{h^2}6g'''(0)
    4 −3.110×10−3-3.110\times10^{-3} −3.110×10−3-3.110\times10^{-3} −3.101×10−3-3.101\times10^{-3}
    8 −1.211×10−5-1.211\times10^{-5} −1.211×10−5-1.211\times10^{-5} −1.211×10−5-1.211\times10^{-5}
    12 −4.732×10−8-4.732\times10^{-8} −4.732×10−8-4.732\times10^{-8} −4.732×10−8-4.732\times10^{-8}
    16 −1.845×10−10-1.845\times10^{-10} −1.848×10−10-1.848\times10^{-10} −1.848×10−10-1.848\times10^{-10}
    20 5.026×10−135.026\times10^{-13} −7.220×10−13-7.220\times10^{-13} −7.220×10−13-7.220\times10^{-13}
    24 3.779×10−113.779\times10^{-11} −2.820×10−15-2.820\times10^{-15} −2.820×10−15-2.820\times10^{-15}
    28 −1.257×10−9-1.257\times10^{-9} −1.102×10−17-1.102\times10^{-17} −1.102×10−17-1.102\times10^{-17}
    32 −1.490×10−9-1.490\times10^{-9} −4.304×10−20-4.304\times10^{-20} −4.304×10−20-4.304\times10^{-20}
    36 2.235×10−92.235\times10^{-9} −1.681×10−22-1.681\times10^{-22} −1.681×10−22-1.681\times10^{-22}
    40 −3.157×10−6-3.157\times10^{-6} −6.567×10−25-6.567\times10^{-25} −6.567×10−25-6.567\times10^{-25}

    厳密な差分商の誤差は§E20.19 定理 1.2 (2)によりh26g′′′(ξ)\frac{h^2}6g'''(\xi)(ξ∈[−h,h]\xi\in[-h,h])であり、g′′′g'''の連続性からh26g′′′(0)\frac{h^2}6g'''(0)との比はh→0h\to0で11に近づく。5≤k≤455\le k\le45では、binary64 で計算したg(±h)g(\pm h)の値の差と2h2hによる除算は丸めを生じない(有理数として確かめた)。したがってこの範囲では、binary64 の誤差と厳密な差分商の誤差の差はg(±h)g(\pm h)の計算値の誤差の中心差分に等しく、§E20.19 命題 2.1 (1)によりg(±h)g(\pm h)の計算値の誤差の上界の1h\frac1h倍以下である。1≤k≤451\le k\le45の範囲で binary64 の誤差の絶対値が最小になるのはk=20k=20であり、その値は5.03×10−135.03\times10^{-13}である。

  4. 同じ丸めの規則で前進モードと逆モードを binary64 で実行すると、得られた∂aL\partial_aL、∂bL\partial_bLの値と真の値との差は、それぞれ5.5×10−185.5\times10^{-18}、−2.7×10−17-2.7\times10^{-17}であった。この値は観察であり、本記事はこの差の上界を証明しない。

8 演習

問題 8.1.系 5.2の証明を完成させよ。

解答.

det⁡A(p)\det A(p)はA(p)A(p)の成分の多項式であるからppについて連続であり、P0={p∈P∣det⁡A(p)≠0}P_0=\{p\in P\mid\det A(p)\ne0\}は開集合である。

p1∈P0p_1\in P_0を固定する。G ⁣:Rk×P→RkG\colon\R^k\times P\to\R^kをG(w,p):=A(p)w−b(p)G(w,p):=A(p)w-b(p)で定めると、GGの各成分はC1C^1級関数の積と和であるからGGはC1C^1級であり、h∈Rkh\in\R^k、p˙∈Rq\dot p\in\R^qについて

DuG(w,p)h=A(p)h,DpG(w,p)p˙=(DA(p)p˙) w−Db(p)p˙D_uG(w,p)h=A(p)h,\qquad D_pG(w,p)\dot p=(DA(p)\dot p)\,w-Db(p)\dot p

である。G(u(p1),p1)=0G(u(p_1),p_1)=0でありDuG(u(p1),p1)=A(p1)D_uG(u(p_1),p_1)=A(p_1)は正則であるから、命題 5.1によりp1p_1の開近傍VVとC1C^1級写像u~ ⁣:V→Rk\tilde u\colon V\to\R^kが存在して、任意のp∈Vp\in VでA(p)u~(p)=b(p)A(p)\tilde u(p)=b(p)が成り立ち、A(p)A(p)は正則である。A(p)A(p)が正則ならばA(p)w=b(p)A(p)w=b(p)の解はA(p)−1b(p)A(p)^{-1}b(p)だけであるから、V⊆P0V\subseteq P_0でありVV上でu~=u\tilde u=uである。したがってuuはp1p_1の近傍でC1C^1級である。命題 5.1 (2)により

A(p1) Du(p1)p˙=−(DA(p1)p˙) u(p1)+Db(p1)p˙A(p_1)\,Du(p_1)\dot p=-(DA(p_1)\dot p)\,u(p_1)+Db(p_1)\dot p

であり、左からA(p1)−1A(p_1)^{-1}を掛けると主張の等式を得る。p1∈P0p_1\in P_0は任意であるから、uuはP0P_0上でC1C^1級である。▨

問題 8.2.kk、qq、PP、AA、bb、P0P_0、uuを系 5.2のとおりとし、c∈Rkc\in\R^kに対してj(p):=cTu(p)j(p):=c^{\mathsf T}u(p)(p∈P0p\in P_0)と置く。p∈P0p\in P_0についてA(p)Tλ=cA(p)^{\mathsf T}\lambda=cの解をλ\lambdaとすると、任意のl∈{1,…,q}l\in\{1,\dots,q\}について

∂lj(p)=λT(∂lb(p)−∂lA(p) u(p))\partial_lj(p)=\lambda^{\mathsf T}\bigl(\partial_lb(p)-\partial_lA(p)\,u(p)\bigr)

が成り立つことを、命題 5.3を用いて示せ。

解答.

p∈P0p\in P_0を固定し、G(w,p′):=A(p′)w−b(p′)G(w,p'):=A(p')w-b(p')((w,p′)∈Rk×P(w,p')\in\R^k\times P)、J(w,p′):=cTwJ(w,p'):=c^{\mathsf T}wと置く。問題 8.1の解答(p1=pp_1=p)により、命題 5.1を(u0,p0)=(u(p),p)(u_0,p_0)=(u(p),p)として適用して得られる写像u~ ⁣:V→B\tilde u\colon V\to BはV⊆P0V\subseteq P_0上でuuに一致し、VV上でj(p′)=J(u~(p′),p′)j(p')=J(\tilde u(p'),p')である。∇uJ=c\nabla_uJ=c、∇pJ=0\nabla_pJ=0であり、DpG(u(p),p)el=∂lA(p) u(p)−∂lb(p)D_pG(u(p),p)e_l=\partial_lA(p)\,u(p)-\partial_lb(p)であるから、命題 5.3により

∂lj(p)=⟨∇j(p),el⟩=−⟨DpG(u(p),p)Tλ,el⟩=−λTDpG(u(p),p)el=λT(∂lb(p)−∂lA(p) u(p))\partial_lj(p)=\langle\nabla j(p),e_l\rangle=-\langle D_pG(u(p),p)^{\mathsf T}\lambda,e_l\rangle=-\lambda^{\mathsf T}D_pG(u(p),p)e_l=\lambda^{\mathsf T}\bigl(\partial_lb(p)-\partial_lA(p)\,u(p)\bigr)

である。▨

前提記事