Programming Serendipity

気まぐれに大まかに生きるブログ

wiisメモ(ベクトル値関数の微分~ベクトル場の微分)

前回の続き

mathjax

  • コピペ用ゼロ幅空白「​」

微分積分

1変数のベクトル値関数の微分

  • 関数 $f:\mathbb{R} \supset X \to \mathbb{R}^{m}$ の各成分関数が微分可能であればよい、1つでも微分可能でなければ全体が微分不可能
  • すべての点で微分可能である集合が関数全体が微分可能な点の集合
  • 近似多項式、片側微分、合成関数の微分などは実数値と同じ議論が可能

多変数関数の微分

  • 関数 $f:\mathbb{R}^{n} \supset X \to \mathbb{R}$ で、$k$番目の要素だけ変化するとき、平均変化率を単位ベクトル$e$を使って以下のように書ける

$$ \frac{f(a+he_{k})-f(a)}{h} $$

  • 1つの変数にのみ着目した平均変化率の変化量が0に近づくときの極限を偏微分係数(partial differential coefficient)といい、以下のように書く

$$ f'_{x_{k}}(a), \frac{\partial f(a)}{\partial x_{k}}, \frac{\partial}{\partial x_{k}}f(a), \left. \frac{\partial f(x)}{\partial x_{k}} \right|_{x=a} $$

  • すべての変数それぞれの偏微分係数を要素に持つベクトルを勾配ベクトル(gradient vector)といい、 $\nabla f(a), \text{grad} f(a)$ のように書く
  • 勾配ベクトルを求める関数を勾配ベクトル場(gradient vector field)という
  • 多変数関数でも多項近似式が同じように定義でき、それは

$$ f(x_{k}, a_{-k}) \approx f(a_{k}, a_{-k}) + \frac{\partial f(a_{k}, a_{-k})}{\partial x_{k}} \cdot (x_{k} - a_{k}) $$

  • 偏微分可能な多変数関数は連続であるとは限らない
  • 合成関数の偏微分は $$\displaylines{ \begin{align} (g \circ f)'_{x_{k}}(a) &= g'(f(a)) \cdot f'(a) \\
    &= \left. \frac{dg(y)}{dy} \right|_{y=f(a)} \cdot \left. \frac{\partial f(x)}{\partial x_{k}} \right|_{x=a} \end{align} }$$

  • 合成関数の勾配ベクトルは $\nabla (g \circ f)(a) = g'(f(a)) \cdot \nabla f(a)$

  • ノルム関数の偏微分は、ゼロベクトル以外において

$$ f'_{x_{k}}(a) = \frac{a_{k}}{\|a\|} $$

  • ノルム関数の勾配ベクトルは

$$ \nabla f(x) = \left(\frac{x_{1}}{\|x\|}, \dots, \frac{x_{n}}{\|x\|}\right) $$

  • 和・差・定数倍はそのまま分割できるが、関数の積の偏微分は $(f \cdot g)_{x_{k}}(a) = f_{x_{k}}(a) \cdot g(a) + f(a) \cdot g_{x_{k}}(a)$
  • 関数の積の勾配ベクトルは $\nabla (f \cdot g)(a) = \nabla f(a) \cdot g(a) + f(a) \cdot \nabla g(a)$
  • 商の偏微分

$$ \left(\frac{f}{g}\right)_{x_{k}}(a) = \frac{f_{x_{k}}(a) \cdot g(a) - f(a) \cdot g_{x_{k}}(a)}{[g(a)]^{2}} $$

  • 商の勾配ベクトルは

$$ \nabla \left(\frac{f}{g}\right)(a) = \frac{\nabla f(a) \cdot g(a) - f(a) \cdot \nabla g(a)}{[g(a)]^{2}} $$

  • $x_{k}$で偏微分したあと、さらに$x_{l}$ で偏微分する2階偏微分の係数(second order partial differential coefficient)は $$ \lim_{h \to 0} \frac{f'_{x_{k}}(a+he_{l}) - f'_{x_{k}}(a)}{h} $$ で、以下のように書く $$ f''_{x_{k}x_{l}}(a), f^{(2)}_{x_{k}x_{l}}(a), \frac{\partial^{2}f(a)}{\partial x_{l} \partial x_{k}}, \frac{\partial^{2}}{\partial x_{l} \partial x_{k}}f(a), \left. \frac{\partial^{2}f(x)}{\partial x_{l} \partial x_{k}} \right|_{x=a},
    \left. \frac{\partial^{2}}{\partial x_{l} \partial x_{k}}f(x) \right|_{x=a} $$

  • ↑fの下付きの場合はそのままの順序だが、$\partial$を使う場合は合成関数と同じように、後に作用させるほうを先に書く

  • ある関数fが点aで変数$x_{k}x_{l}$を選んで2階偏微分可能な場合、その係数を成分とする $k$ 行 $l$ 列の正方行列をヘッセ行列(Hesse matrix)という

$$ \left( \begin{array} ff''_{x_{1}x_{1}}(a) & \dots & f''_{x_{1}x_{n}}(a) \\
\vdots & \ddots & \vdots \\
f''_{x_{n}x_{1}}(a) & \dots & f''_{x_{n}x_{n}}(a) \\
\end{array} \right) $$

  • ↑を $H_{f}(a), \nabla^{2}f(a)$ などで表記する
  • クレローの定理(Clairaut’s theorem): ある関数が$C^{2}$級の場合、ヘッセ行列は対称行列になる。つまり、任意の $k,l$ について $f''_{x_{k}x_{l}}(a) = f''_{x_{l}x_{k}}(a)$ が成り立つ
  • ↑を一般化すると、ある関数が$C^{n}$級ならば、$x_{1}, x_{2}, \dots, x_{n}$の変数の順序によらず、同じ組み合わせの変数を拾い上げている$n$階偏微分の係数はすべて一致する
  • $C^{r}$ 級の関数を何回かに分けて $r$ を超えない回数偏微分する場合、つまり $m_{1} + m_{2} + \dots + m_{n} \leq r$ に分けて $m_{i}$ 回ずつ偏微分する場合、クレローの定理から、その偏微分する順番は関係なく結果が一致するので、以下のように書ける

$$\displaylines{ D_{1}^{m_{1}} D_{2}^{m_{2}} \dots D_{n}^{m_{n}} f(a), \\
\left(\frac{\partial}{\partial x_{1}} \right)^{m_{1}} \left(\frac{\partial}{\partial x_{2}} \right)^{m_{2}} \dots \left(\frac{\partial}{\partial x_{n}} \right)^{m_{n}} f(a), \\
\frac{ \partial^{ m_{1}+m_{2}+\dots+m_{n}} f(a)}{\partial x_{1}^{m_{1}} \partial x_{2}^{m_{2}} \dots \partial x_{n}^{m_{n}}} }$$

  • ↑の各式から$f(a)$ を取り除いたものを単純偏微分作用素(simple partial differential operator)という
  • 積の偏微分は $$(f \cdot g)'_{x_{k}}(x) = f_{x_{k}}'(x) \cdot g(x) + f(x) \cdot g_{x_{k}}'(x)$$ と書かれたが、これを偏微分作用素で書くと $$D_{x_{k}}(f \cdot g) = (D_{x_{k}} f) \cdot g + f \cdot (D_{x_{k}} g)$$

  • 関数fを偏微分する操作そのものを $\nabla$ で書き、ナブラ作用素(nabla differential operator)or ナブラ演算子という

  • 方向微分(directional differential): 微分は1変数だけ軸と平行に移動する必要はなく、何らかの方向をもってその方向の変化率を考えることができるはず、との考えのもと、単位方向ベクトル $e$ を導入し、以下の方向微分を定義する

$$ \lim_{h \to 0} \frac{f(a+he)-f(a)}{h} $$

  • またその係数は以下のように書く

$$ f'_{e}(a), \frac{\partial f(a)}{\partial e}, \frac{\partial}{\partial e} f(a), \left. \frac{\partial f(x)}{\partial e} \right|_{x=a} $$

  • $C^{1}$ 級の場合、多変数関数の $x$ を $a+he$ に置き換えれば1変数関数の公式が利用できるので、方向微分の定義に立ち返る必要がなく便利
  • 2変数 $(a,b)$ の場合は

$$ \frac{\partial f(a,b)}{\partial (e_{1},e_{2})} = \left. \frac{d}{dh} f(a + he_{1}, b + he_{2}) \right|_{h=0} $$

  • 実際に方向微分するときは、方向ベクトル $v$ のノルムが1になるように正規化する必要がある

$$ e=\frac{v}{\|v\|} $$

  • $g(h) = f(a + he) \in \mathbb{R}$ とすると、$g(h) - g(0) - g'(0) \cdot h = o(h) \quad (h \to 0)$ が成り立つので、$g(h) \approx g(0) + g'(0) \cdot h$ が言えて、変形すると $f(a+he) \approx f(a) + f'_{e}(a) \cdot h$ となり、これが1次の近似多項式になる
  • 方向微分可能なら偏微分可能だが、逆は成り立たない
  • $C^{1}$ 級関数なら、勾配ベクトルと方向ベクトルの内積をとれば方向微分係数が取得できる、つまり

$$ \frac{\partial f(a)}{\partial e} = \nabla f(a) \cdot e = \sum_{i=1}^{n} e_{i} \frac{\partial f(a)}{\partial x_{i}} $$

  • 方向微分において、最大の変化率を求めるには、勾配ベクトルの方向と一致していればよく、逆に最小を求めるには勾配ベクトルと反対方向ならよい。つまり

$$ \max\{f'_{e}(a)\} = \|\nabla f(a)\| $$

  • ナブラの導出に単位ベクトルは必要ないので注意
  • 1変数関数は微分可能なら連続だが、多変数関数は偏微分可能であっても、方向微分可能であっても連続とは限らず、連続性を保証するには全微分可能である必要がある
  • 多→1変数の合成関数の方向微分は $$(g \circ f)'_{e}(x) = g'(f(x)) \cdot f'_{e}(x)$$ だが、 $$f'_{e}(a) = \nabla f(a) \cdot e$$ であることを踏まえると、 $$(g \circ f)'_{e}(x) = g'(f(x)) \times [\nabla f(x) \cdot e]$$ とすることで計算を簡略化できる
  • 座標関数を方向微分するとき、その取り出す座標と方向ベクトルがぴったり一致しているときのみ係数が1、それ以外は0になる
  • (↑は斜め方向なら半分くらい係数が取り出せたりしないか?)※
  • 微分(total differential)の定義に平均変化率は使えない、分母がベクトルになってしまうから
  • (hの変化率をすべて一致させて考えることはできる?)※
  • そのため、全微分は高位の無限小を流用して定義する。つまり $$ f(x) - f(a) - c \cdot (x-a) = o(\|x-a\|) \quad (x \to a) $$ の $c=f'(a)$ が有限な実数として定まることを全微分可能であると定義する

  • ↑において $x,a$ と全微分係数 $f'(a)$ はベクトルなので、この左辺を成分表示すると、

$$\displaylines{ \begin{align} &f(a) + f'(a) \cdot (x-a) \\
=& f(a_{1}, \dots, a_{n}) + ( f'_{1}(a_{1}, \dots, a_{n}), \dots, f'_{n}(a_{1}, \dots, a_{n}) ) \cdot (x_{1}-a_{1}, \dots, x_{n}-a_{n}) \\
=& f(a_{1}, \dots, a_{n}) + f'_{1}(a_{1}, \dots, a_{n}) \cdot (x_{1}-a_{1})+ \dots+ f'_{n}(a_{1}, \dots, a_{n}) \cdot (x_{n}-a_{n}) \\
=& f(a_{1}, \dots, a_{n}) + \sum_{i=1}^{n} [f'_{i}(a_{1}, \dots, a_{n}) \cdot (x_{i}-a_{i})] \end{align} }$$

  • 具体的には例えば2変数関数のaに限りなく近い点xでの近似多項式 $f(x) \approx f(a) + f'(a) \cdot (x-a)$ は以下のようになる

$$ f(x_{1},x_{2}) \approx f(a_{1},a_{2}) + f'_{1}(a_{1},a_{2})(x_{1}-a_{1}) + f'_{2}(a_{1},a_{2})(x_{2}-a_{2}) $$

  • 微分係数は結局1変数関数の微分のように以下のようにも表現できる $$ \frac{df(a)}{dx}, \frac{d}{dx}f(a), \left. \frac{df(a)}{dx} \right|_{x=a} $$ または $$ \lim_{h \to 0} \frac{f(a)-f(a+h) - c \cdot h}{\|h\|} = 0 $$

  • 微分可能なら偏微分可能(かつ全微分係数が勾配ベクトルと一致)するが逆は成り立たず、連続微分可能、つまり$C^{1}$級なら全微分可能だが、逆は成り立たない

  • 微分可能なら方向微分可能だが逆は成り立たない
  • fの1次の近似多項式のグラフは接超平面(tangent hyperplane)といい、以下のようになる

$$ \{(x,y) \in \mathbb{R}^{n} \times \mathbb{R} \ | \ y = f(a) + \sum_{i=1}^{n} \frac{\partial f(a)}{\partial x_{i}} (x_{i}-a_{i})\} $$

  • 微分可能な関数fの1次の近似多項式の増分のベクトルを $\Delta x$ とすると、$f(x)-f(a)=f(a+\Delta x)$ となるため、これをもとの近似式に代入すると $f(a+\Delta x)-f(a) \approx \nabla f(a) \cdot \Delta x$ となり、この右辺を増分の主要部分(main part)といい $df$ であらわす
  • ↑を各要素の増分 $dx_{i}$ で割ったものを全微分商(total differential quotient)といい、以下のようになる

$$ \frac{df}{dx_{i}} = \sum_{k=1}^{n} \frac{\partial f(a)}{\partial x_{k}} \frac{dx_{k}}{dx_{i}} $$

  • 微分可能なら連続
  • 初等関数・合成関数についての性質は偏微分と同様
  • ベクトル値関数fと多変数関数gの合成関数の微分は、多変数関数の微分のほうに勾配ベクトルが適用出来て、その結果は $(g \circ f)'(a)=\nabla g(f(a)) \cdot f'(a)$ となる
  • ↑を使って、1変数関数をベクトル値関数と多変数関数の合成関数に捏造して考えることで、元の微分係数が求められる。これを連鎖公式(chain rule)といい、以下のように書く

$$ (g \circ f)'(a)=\left. \nabla g(y) \right|_{y=f(x)} \cdot f'(a) $$

$$ \exists c \in (a,b): f(b)-f(a)=\nabla f(c) \cdot (b-a) $$

  • 点aにおけるfの1次のテイラー近似多項式は、多変数関数では $$ P_{1,a}(x) = f(a) + \nabla f(a) \cdot (x-a) $$ で、1変数関数における高次のテイラー近似多項式は $$\displaylines{ \begin{align} P_{r,a}(x) &= f(a) + \frac{f'(a)}{1!}(x-a) +\frac{f''(a)}{2!}(x-a)^{2} +\dots+\frac{f^{(r)}(a)}{r!}(x-a)^{r} \\
    &= \sum_{k=0}^{r} \left[ \frac{f^{(k)}(a)}{k!}(x-a)^{k} \right] \end{align} }$$ であり、ここで「関数fを微分した結果と定数 $(x-a)$ をかけるという操作をk回繰り返す」ことを微分作用素Dを援用して $[(x-a)D]^{k}$ と記述することにすると、↑は $$ P_{r,a}(x) = \sum_{k=0}^{r} \frac{[(x-a)D]^{k}f(a)}{k!} $$ と書けることを使って、多変数関数における高次のテイラー近似多項式は以下のようになる $$ P_{r,a}(x) = \sum_{k=0}^{r} \frac{[(x-a) \cdot \nabla]^{k}f(a)}{k!} $$ ただし、↑での $[(x-a) \cdot \nabla]^{k}$ は「関数fを偏微分した結果とベクトル $x-a$ の内積を取るという操作をk回繰り返す」という意味

多変数関数のベクトル値関数

  • 多変数であっても、基本的にこれまでの議論と同じことが言える
  • 各成分関数の各変数の偏微分の行列をヤコビ行列(Jacobian matrix)という

$$\displaylines{ \left(\cfrac{\partial f(a)}{\partial x_{1}}, \dots, \cfrac{\partial f(a)}{\partial x_{n}}\right)= \left( \begin{array} f\cfrac{\partial f_{1}(a)}{\partial x_{1}} &\dots &\cfrac{\partial f_{1}(a)}{\partial x_{n}} \\
\vdots &\ddots &\vdots \\
\cfrac{\partial f_{m}(a)}{\partial x_{1}} &\dots &\cfrac{\partial f_{m}(a)}{\partial x_{n}} \end{array} \right) \in M_{m,n}(\mathbb{R}) }$$

  • またこれを以下のように書く

$$ J_{f}(a), Df(a), \frac{\partial f(a)}{\partial x} $$

  • 線形近似も同様に過去の議論の延長ができて、 $$ f(x_{k}, a_{-k}) - f(a) - (x_{k} - a_{k})c = o(x_{k} - a_{k}) \quad (x_{k} \to a_{k}) $$ ただし $$ c = \frac{df(a)}{dx_{k}} = \frac{\partial f(a)}{\partial x_{k}} $$ なので $$ f(x_{k}, a_{-k}) \approx f(a) + (x_{k} - a_{k})c $$ つまり $$ f(x_{k}, a_{-k}) \approx f(a) + (x_{k} - a_{k}) \frac{\partial f(a)}{\partial x_{k}} $$ が成り立つ。成分表示すると以下の通り $$\displaylines{ \begin{align} \left( \begin{array} ff_{1}(x_{k}, a_{-k}) \\
    \vdots \\
    f_{m}(x_{k}, a_{-k}) \end{array} \right) &\approx \left( \begin{array} ff_{1}(a) \\
    \vdots \\
    f_{m}(a) \end{array} \right) +(x_{k} - a_{k}) \left( \begin{array} f\cfrac{\partial f_{1}(a)}{\partial x_{k}} \\
    \vdots \\
    \cfrac{\partial f_{m}(a)}{\partial x_{k}} \end{array} \right) \\
    &= \left(\begin{array} ff_{1}(a) + (x_{k}-a_{k}) \cfrac{\partial f_{1}(a)}{\partial x_{k}} \\
    \vdots \\
    f_{m}(a) + (x_{k}-a_{k}) \cfrac{\partial f_{m}(a)}{\partial x_{k}} \\ \end{array}\right) \end{align} }$$

  • 関数f(vec to vec) と関数g(vec to scalar)の合成関数を考えるとき、fが偏微分可能でgが全微分可能なら、その合成関数も偏微分可能でありその偏微分係数は以下のようになる

$$\displaylines{ \begin{align} \frac{\partial (g \circ f)(a)}{\partial x_{k}} &= \nabla g(f(a)) \cdot \frac{\partial f(a)}{\partial x_{k}} \\
&= \left. \nabla g(x) \right|_{x=f(a)} \cdot \left. \frac{\partial}{\partial x_{k}} f(x) \right|_{x=a} \end{align} }$$

  • 内積はvec to scalarの働きであることに注意
  • 合成関数の勾配ベクトルは

$$ \nabla (g \circ f)(a) = \left( \begin{array} .\nabla g(f(a)) \cdot \frac{\partial f(a)}{\partial x_{1}} \\
\vdots \\
\nabla g(f(a)) \cdot \frac{\partial f(a)}{\partial x_{n}} \end{array} \right)= \left( \begin{array} .\nabla \left. g(x) \right|_{x=f(a)} \cdot \left. \frac{\partial f(x)}{\partial x_{1}} \right|_{x=a} \\
\vdots \\
\nabla \left. g(x) \right|_{x=f(a)} \cdot \left. \frac{\partial f(x)}{\partial x_{n}} \right|_{x=a} \end{array} \right) $$

  • 多変数のベクトル値関数同士の合成関数、つまり関数f(vec to vec)と関数g(vec to vec)の合成関数で、fが偏微分可能で、gが全微分可能、つまり以下のようなヤコビ行列が存在することが保証されるなら、

$$ J_{g}(f(a)) = \left( \begin{array} .\nabla g_{1}(f(a)) \\
\vdots \\
\nabla g_{m}(f(a)) \end{array} \right)= \left( \begin{array} .\nabla \left. g_{1}(x) \right|_{x=f(a)} \\
\vdots \\
\nabla \left. g_{m}(x) \right|_{x=f(a)} \end{array} \right) $$

その合成関数は偏微分可能で、その係数は以下のようになる

$$\displaylines{ \begin{align} \frac{\partial (g \circ f)(a)}{\partial x_{l}} &= J_{g}(f(a))\frac{\partial f(a)}{\partial x_{l}} \\
&= \left( \begin{array} .\cfrac{\partial g_{1}(f_{1}(a), \dots, f_{k}(a))}{\partial x_{1}},& \dots,& \cfrac{\partial g_{1}(f_{1}(a), \dots, f_{k}(a))}{\partial x_{k}} \\
&\vdots& \\
\cfrac{\partial g_{m}(f_{1}(a), \dots, f_{k}(a))}{\partial x_{1}},& \dots,& \cfrac{\partial g_{m}(f_{1}(a), \dots, f_{k}(a))}{\partial x_{k}} \end{array} \right) \left( \begin{array} .\cfrac{\partial f_{1}(a)}{\partial x_{l}} \\
\vdots \\
\cfrac{\partial f_{k}(a)}{\partial x_{l}} \end{array} \right) \\
&= \left( \displaystyle \begin{array} .\displaystyle \sum_{i=1}^{k} \left(\cfrac{\partial g_{1}(f_{1}(a), \dots, f_{k}(a))}{\partial x_{i}} \cdot \cfrac{\partial f_{i}(a))}{\partial x_{l}} \right) \\
\vdots \\
\displaystyle \sum_{i=1}^{k} \left(\cfrac{\partial g_{m}(f_{1}(a), \dots, f_{k}(a))}{\partial x_{i}} \cdot \cfrac{\partial f_{i}(a))}{\partial x_{l}} \right) \end{array} \right) \end{align} }$$

  • また、ヤコビ行列関数は以下のようになり、これがヤコビ行列の連鎖公式になる

$$ J_{g \circ f}(x) = J_{g}f(x) J_{f}(x) $$

  • 和・差・定数倍はそのまま分割できるので、以下も成り立つ

$$ J_{c_{1}f-c_{2}g} = c_{1}J_{f} - c_{2}J_{g} $$

  • 2階の偏導関数は以下のようになる(3階以上も同様)

$$ f'_{x_{k}x_{l}}(x) = \lim_{h \to 0} \frac{f'_{x_{k}}(x+he_{l}) - f'_{x_{k}}(x)}{h} \in \mathbb{R}^{m} $$

  • vec to vecが方向微分可能であることと、各成分関数が方向微分可能であることは必要十分(全微分についても同様)