行列・ベクトルの微分公式の導出 vol.1

# 2022/06/24 追記

この記事は就活がうまくいかなくて病んでる時期に書いたものです。
今見ると「うわあ...」な要素てんこ盛りですが、消すのももったいないな、と思い、残しました。

以下は教科書に載っている公式をただ暗記するのももったいないというか寂しいと思い、理学的な観点から経緯付けを試みたものです。

よって感覚的な表現が多く、正確性については確証できません。
(要するに、自分なりの理由付けをしているだけだから大目に見てねってことです。)

# 注
多分公式を全部覚えてからコトに臨むより、主成分分析など必要な場面で確認していく方が手っ取り早いです。(頭に入りやすいです。)

# Introduction

微分とは何かを何かで微分する、というのが一連の流れです。

となると単純計算で

$\begin{pmatrix}スカラー \\\ ベクトル \\\ 行列\end{pmatrix}\times\begin{pmatrix}スカラー & ベクトル & 行列\end{pmatrix}$

で9通りあります。(前が「何を」で後ろが「何で」に相当します。3×1と1×3で3×3、9個の項ができます。)

スカラーをスカラ―で微分するのはすでに習っています。
ベクトルや行列をスカラーで微分するのは要素に微分写像を掛ければよいのです。

残りは6つです。
(追記：記事をつれづれに描いたので６つ、と書いてさも全部やるかのように感じられますが、全部はやりません。)

# スカラー量をベクトルで微分
ここからベクトルを矢印ではなく、太字で表すことにします。
座標微分(偏微分)を採用して話を進めます。
(可微分)関数$f$は関「数」なわけでスカラーですから、(ex. $f: { \boldsymbol R^2} ({\boldsymbol C^2}) \to {\boldsymbol R}({\boldsymbol C})$ )(RやCはそれぞれ実数の集合、複素数の集合のことです。)
愚直に言って微分公式に代入すると以下の通り？
$$\frac{\partial}{\partial {\boldsymbol x}}f \Leftrightarrow \lim_{\Delta \boldsymbol x \to 0}\frac{f({\boldsymbol x+ \Delta \boldsymbol x})-f({\boldsymbol x}) }{\Delta \boldsymbol x} *$　

実際はベクトルに掛け算のルールは定義できません。転置をとらないと演算できないから。(ex.１×ｎと１×ｎはそのままでは計算できない)
$f$を多変数関数とみる。(ベクトルを因数とすることは各成分を因数とすること、つまり多変数関数。)さらに可微分関数がマクローリン展開すると線形近似できることに着目して、
　
$$f(\boldsymbol x)= f^{1} x_1+ f^{2} x_2+ \cdots + f^{n} x_n + (2次以上の項) \hspace{1em}\{※}$$
$$\begin{pmatrix}  f_1 &  f_2 & \cdots & f_n \end{pmatrix} \begin{pmatrix}  x_1 \\\  x_2 \\\ \vdots\end{pmatrix} + \epsilon$$
$\epsilon$はいずれの変数にも依存しない数値か2乗以上の項。

$f(\boldsymbol x + \Delta \boldsymbol x) - f(\boldsymbol x)$に代入すると

$$\begin{pmatrix}  f_1 &  f_2 & \cdots & f_n \end{pmatrix} \begin{pmatrix}  x_1 + \Delta x_1 \\\  x_2 + \Delta x_2\\\ \vdots\end{pmatrix} + \epsilon' -(\begin{pmatrix}  f_1 &  f_2 & \cdots & f_n \end{pmatrix} \begin{pmatrix}  x_1 \\\  x_2 \\\ \vdots\end{pmatrix} + \epsilon)$$
$\epsilon'$は$\epsilon$と別物である。$\epsilon$を$x$の式で表示したときそこに$\boldsymbol x+\boldsymbol \Delta x$が代入されている

つまり
以下の様に設定すると、ベクトル量が導出する。縦ベクトルか横ベクトルかはコンテクストによる。ここでは縦ベクトルとしよう。



$$\Delta \boldsymbol x = \begin{pmatrix} \Delta x_1 \\\ \Delta x_2 \\\ \vdots\end{pmatrix}$$としておく。
(スカラー関数のマクローリン展開、つまり上記(※)を考えると）
$f^i$は偏微分を用いたマクローリン展開したときの$x_i$の一次の項の係数だから$\frac{\partial }{\partial x_i}$である。

2022/06/24 ここで必須の事項を記述忘れ 「試しに$f(\boldsymbol x + \Delta \boldsymbol x) - f(\boldsymbol x)$の計算後の各項を１個分次数下げをしたうえで」

それぞれの微小量を独立に0に近づける(※)と、結局は下の形に帰着する。
(追記：なぜなら展開したうえで、もともと$\Delta x$が２次以上だった項は計算すると$\Delta x$が少なくとも1次分は残るから0に極限操作で向かうことになる。)
$$\begin{pmatrix}\frac{\partial f}{\partial x_1}\\\ \frac{\partial f}{\partial x_2}\\\ \vdots \end{pmatrix}$$


(物理では$ \nabla= (\frac{\partial }{\partial x_1}, \frac{\partial }{\partial x_2}, \cdots)$と表すことも多い。追記：サボって横ベクトルで書きました。わかりにくかったですね。。。)

再び$f$を外に出す。
$$\Leftrightarrow \begin{pmatrix} \frac{\partial }{\partial x_1}\\\ \frac{\partial }{\partial x_2} \\\ \vdots\end{pmatrix}f$$
$f$はスカラー。(※$f$は向きと大きさの2つを持つわけではないから。追記：公式から。)

これでスカラー量をベクトルで微分したときの式が導出できました。

（注）微小量を0に近づけるときに$\Delta x_1: \Delta x_2 : \dots = (定比、例えば1:1:\cdots)$としてはごく一部の領域で成立する定理、ということになり、十分ではないので, 独立に0に近づける。

~~$\epsilon$に含まれる"2乗の項"は成分に2乗の項の入ったベクトル
である。これはマクローリン展開したときの２乗の項の係数ベクトルそのもの。~~
$\epsilon$に含まれる"2乗の項とその前の係数を取り出して並べたベクトル
$$\begin{pmatrix}  {x_1}^2\\\ {x_2}^2 \\\ \vdots\end{pmatrix}$$
をマクローリン展開したときの２乗の項のベクトルであるはず、見比べてみましょう。

ここで微分の定義を高校数学上のものでなく、マクローリン展開したときの1次の項の係数と拡張して、定義すれば、（↑の係数ベクトルに1次の変数が入っていれば別だが　追記コメント：我ながらわかりにくすぎる、定数で構成されるベクトルだよってこと、というか元々係数とはそういうもの。）結局2乗の項は無視される

（追記：つまり高校チックな定義式からいっても、分母の項で２乗以上は打ち消されようがまだ極限操作で０に向かう要素があるのだから全部０になるよ、という意味で「結局」、です。我ながらわかりにくい。。。）
他の高次も同様。


# 続き
あるベクトル空間のベクトル量(つまり成分の数、次元の数が同じ。)定数ベクトル$\boldsymbol a$, 変数ベクトル$\boldsymbol x$に対し、

$$^t \boldsymbol a \boldsymbol x$$はスカラーと同一視できます。
∵1×nとn×1の積だから　1×1のベクトル量でスカラーです。
$\frac{\partial}{\partial {\boldsymbol x}}$で微分しておきましょう。

$\boldsymbol x = \begin{pmatrix}  x_1 \\\  x_2 \\\ \vdots\end{pmatrix}$,
$\boldsymbol a = \begin{pmatrix}  a_1 \\\  a_2 \\\ \vdots\end{pmatrix}$
$$^t \boldsymbol a \boldsymbol x = a_1x_1+ a_2x_2+ \cdots$$なわけで
上で導出した公式に$f(\boldsymbol x) = ^t\boldsymbol a \boldsymbol x$を代入します。
$\frac{\partial}{\partial {\boldsymbol x}}^t \boldsymbol a \boldsymbol x $の第一成分は$a_1$で残りも計算すると結果はベクトルになって
$$\boldsymbol a$$となります。

つまり横定数ベクトル$\boldsymbol b$と縦変数ベクトル$\boldsymbol x$の積$\boldsymbol b\boldsymbol x$を微分すると導出結果は
$\boldsymbol b$の転置$^t \boldsymbol b$となります。

$$^t\boldsymbol x \boldsymbol a$$を微分すると$\boldsymbol a$

$$^t \boldsymbol x \boldsymbol x$$の微分は素直に成分計算すると

$$\frac{\partial}{\partial \boldsymbol x} (^t\boldsymbol x)  \boldsymbol x + ^t \boldsymbol x \frac{\partial}{\partial \boldsymbol x} (\boldsymbol x) = 2\boldsymbol x$$

他公式
$$\frac{\partial }{\partial \boldsymbol x}  ^t\boldsymbol  x A \boldsymbol x= {(^t \boldsymbol x )}'Ax + ^t \boldsymbol x A( {\boldsymbol x})'= A \boldsymbol x + ^t(^t \boldsymbol x A)=  (A+ ^tA) \boldsymbol x$$

ここで転置に関する公式$^t(XY)= ^tY^tX$を用いた。

$$\frac{\partial }{\partial \boldsymbol x}  ^t (A\boldsymbol x  +\boldsymbol b)(A\boldsymbol x  +\boldsymbol b)= \frac{\partial }{\partial \boldsymbol x}(^t \boldsymbol x ^tA + ^t \boldsymbol b)(A\boldsymbol x+ \boldsymbol b)=\frac{\partial }{\partial \boldsymbol x}(^t \boldsymbol x ^tA A \boldsymbol x+^t \boldsymbol x ^t A\boldsymbol b +^t \boldsymbol b A\boldsymbol x +^t \boldsymbol b \boldsymbol b) =  (^tAA+ A^tA) \boldsymbol x + \frac{\partial }{\partial \boldsymbol x} 2^t \boldsymbol x ^t A\boldsymbol b = (^tAA+ A^tA) \boldsymbol x +  2^tA\boldsymbol b$$
※転置をとる写像は線形性があり、結合法則を満たす。
※数はスカラー量であり、1成分からなるベクトル量なので、転置をとっても同一。$^tA \boldsymbol b = ^t \boldsymbol b A$
#ベクトルをベクトルで微分

微分する変数ベクトルで被微分ベクトルが線形結合であれば$\boldsymbol y = k \boldsymbol x$のように表されるので、$\frac{\partial \boldsymbol y}{\partial \boldsymbol x} = k$である。予告するとスカラー倍はスカラー倍行列と同型である。

線形結合でないなら被微分ベクトルが微分するベクトルで適当な変換、スカラー倍、回転、対称移動、平行移動などで変換できるとしたうえで、ここでn×nの行列$A$を考える。

$\boldsymbol y= A \boldsymbol x + \boldsymbol b$として
$$\frac{\partial \boldsymbol y}{\partial \boldsymbol x} = \frac{\partial A\boldsymbol x}{\partial \boldsymbol x} + \frac{\partial \boldsymbol b}{\partial \boldsymbol x} = \frac{\partial A\boldsymbol x}{\partial \boldsymbol x}$$

そもそも行列計算というのはベクトル空間からベクトル空間への線形変換でやってる数値計算を表面化したものであった。(この箇所は意外と難しいので無視しても大丈夫です。)



とどのつまり左から縦ベクトルに行列を掛けるというのは
$$A= \begin{pmatrix}  ^t\boldsymbol p_1 \\\ ^t\boldsymbol p_2 \\\ \vdots \end{pmatrix}$$
(追記コメント：本当にわかりにくいのですが複数の横ベクトルが縦に並んでいる行列をイメージしています。冒頭で縦ベクトルを基準にすると宣言したのでそういうことになりました。)
とすれば
$$A\boldsymbol  x=\begin{pmatrix}  ^t\boldsymbol p_1 \\\ ^t\boldsymbol p_2 \\\ \vdots ​\end{pmatrix}\boldsymbol x$$

↑成分で計算すれば確かめられる。

左から2番目の項に着目すると
$$\begin{pmatrix}  ^t\boldsymbol p_1 \\\ ^t\boldsymbol p_2 \\\ \vdots ​\end{pmatrix}$$を成分が定数の定数ベクトルであると「見立て」て、
(行列演算はブロック分けしても同様に計算できる。きちんとブロック分けすれば、だが。)



$\frac{\partial }{\partial \boldsymbol x} ^t\boldsymbol a \boldsymbol x= \boldsymbol a$より
$\frac{\partial }{\partial \boldsymbol x} A\boldsymbol x$は、


$$ \begin{pmatrix} \frac{\partial }{\partial x_1}\\\ \frac{\partial }{\partial x_2} \\\ \vdots\end{pmatrix} A \boldsymbol x$$のことであり、
$$trans \begin{pmatrix}  ^t\boldsymbol p_1 \\\ ^t\boldsymbol p_2 \\\ \vdots ​\end{pmatrix} = \begin{pmatrix}  \boldsymbol p_1 & \boldsymbol p_2 & \cdots ​\end{pmatrix}$$
である。(transは転置をとる写像のことである。)

文字にするとうっとうしいが結局元の行列$A$に転置をとったものである。
※縦ベクトルを基準としているので上記はややこしいことになっています。

つまり$^t A$である。

vol.2へ続く。
https://qiita.com/yudaiyamashita/items/6f50d861db598944d84c