理系大学生のブログ

学んだことを書いていく

多変数合成関数の微分(連鎖律)の正しい理解

ある2変数関数f:(s,t)\mapsto f(s,t)の変数として、別の関数g:(x,y)\mapsto g(x,y)=(g_1(x,y),g_2(x,y))の値g(x,y)をとった 合成関数の微分\frac{\partial f\circ g}{\partial x}を展開した式は、よく以下のように略記される。

\displaystyle{\begin{eqnarray}
\left(\frac{\partial f\circ g}{\partial x}=\right)
\frac{\partial f}{\partial x}=\frac{\partial f}{\partial g_1}\frac{\partial g_1}{\partial x}+\frac{\partial f}{\partial g_2}\frac{\partial g_2}{\partial x}
\end{eqnarray}}

しかしあくまでこれは略記法であって、記号法として正確さを欠いた部分がいくつかある。

1つ目に、合成関数の微分\frac{\partial f\circ g}{\partial x}を合成する前の関数の微分\frac{\partial f}{\partial x}として表記している。

2つ目に、微分の記号(ライプニッツ記法)の分母の\partialの横に来るものは、分子の\partialの横に来る関数(微分される関数) の独立変数であるべきであり*1\frac{\partial f}{\partial g_1}はこのルールに反している。

略記法の形で連鎖律を覚えていると、いざ具体的な計算をする段になってこのあいまいさで混乱することがある。 例えば、\frac{\partial f}{\partial g_1}の部分を求めるには具体的に何を計算すべきなのか、などで迷うことがある。 この記事では、多変数合成関数の微分(連鎖律)のできるだけ正確な表現に立ち返ることにより連鎖律の正確な理解を得ることを目指す。

連鎖律の正確な表現

冒頭の例を一般化する。関数ff:(y_1,...,y_n)\mapsto f(y_1,...,y_n)とし、 関数gg:(x_1,...,x_m)\mapsto g(x_1,...,x_m)=(g_1(x_1,...,x_m),...,g_n(x_1,...,x_m))としたとき、合成関数f\circ gの変数x_iについての 微分

\displaystyle{\begin{eqnarray}
\frac{\partial f\circ g}{\partial x_i}=\sum_{j=1}^{n}\left(\frac{\partial f}{\partial y_j}\circ g\right)\cdot\frac{\partial g_j}{\partial x_i}
\end{eqnarray}}

この等式は合成関数の全微分の間に行列積の関係があることから導出することができる*2。 この等式は値としての一致ではなく、関数としての一致を表している。黒い点は関数の点ごとの積を表す*3\frac{\partial f}{\partial y_j}\circ ggから合成した合成関数の形になっているのは必然である。もし単にfy_j微分だったら、 左辺はm変数関数の微分なので入力の型はm変数だが、右辺にn個の変数を入力としてとる部分ができてしまう。

略記法の解釈

冒頭で挙げた略記法の不正確さの1つ目について、今扱っている関数が独立な変数のみからなる関数なのか、それともある別の関数を引数に とった合成関数なのかを文脈から判断することで解決可能と思われる。ある関数の独立変数を表す文字を決めておき、微分の分母にその文字がきたら 普通の微分、そうでなければ分母に現れた文字を独立変数にとる関数を合成した合成関数の微分であると解釈する。ただ例えば、ff:(x,y)\mapsto f(x,y)g(s,t)\mapsto g(s,t)=(h(s,t),t)などという形になっているとき、f\circ gの変数tについての微分は略記法では

\displaystyle{\begin{eqnarray}
\frac{\partial f}{\partial t}&=&\frac{\partial f}{\partial h}\frac{\partial h}{\partial t}+\frac{\partial f}{\partial t}\frac{\partial t}{\partial t}\\
&=&\frac{\partial f}{\partial h}\frac{\partial h}{\partial t}+\frac{\partial f}{\partial t}
\end{eqnarray}}

となり、同じ記号\frac{\partial f}{\partial t}で表されるものが両辺をみると食い違っているように見える。このような混乱を避けるには 略記法をあきらめて正確な表現に努めるしかないだろう。(合成関数のほうにはチルダを付けるなど。)

不正確さの2つ目について、これは\frac{\partial f}{\partial g_1}\frac{\partial f}{\partial y_j}\circ gとして解釈することで救える。

まとめ

連鎖律について、略記法で\frac{\partial f}{\partial x}とあらわされているものが正確な表現では合成関数の微分\frac{\partial f\circ g}{\partial x} に対応し、また略記法で\frac{\partial f}{\partial g_1}とあらわされているものは正確な表現では\frac{\partial f}{\partial s}\circ gに対応する。

その他合成関数の微分に関して注意したいこと

以下のサイトの内容が参考になる。そもそも合成関数を微分していると気づきにくい場合について説明している。 www.mynote-jp.com

*1:そうでなければどの変数で偏微分するのか明らかでなくなる。

*2:この記事では導出しない。

*3:「点ごとの積」の意味については Wikipediaの記事などを参照