Soptq

Soptq

Probably a full-stack, mainly focusing on Distributed System / Consensus / Privacy-preserving Tech etc. Decentralization is a trend, privacy must be protected.
twitter
github
bilibili

行列の微分

行列の微分(Matrix Derivative)は行列の微分(Matrix Differential)とも呼ばれ、機械学習、画像処理、最適化などの分野での公式導出に頻繁に使用されます。行列の微分は実際には多変数の微積分の問題であり、単に行列空間に適用されるもので、スカラーの微分の一般化です。その定義は、独立変数の各数値に対して従属変数の各数値を微分することです。

具体的には、Am×nA_{m \times n}Bp×qB_{p \times q} が存在すると仮定すると、AB\frac{\partial A}{\partial B}AA の各値を BB の各値に対して微分し、最終的に m×n×p×qm \times n \times p \times q 個の導関数値を得ることになります。これだけの導関数値がある場合、最終的には m×(n×p×q)m \times (n \times p \times q) の行列として配置されるのか、それとも (m×n×p)×q(m \times n \times p) \times q の行列として配置されるのかが問題です。行列の微分の鍵は、これらの多くの導関数値をどのように配置するかを規定することにあります。

分布配置の例として、以下のいくつかの行列微分の法則があります。分母配置とは何か?簡単に言えば、分母を基準として、求められる結果が分母の次元と同じであることを望むことです。分母配置の他に分子配置もあります。分子配置と分母配置の微分結果は通常、転置が異なります。

基本法則#

法則 0 :スカラー対スカラーの微分#

略。詳細は高等数学を参照してください。

法則 1 :スカラー対ベクトルの微分#

ff がスカラーで、x=[x1x2xp]Tx = \begin{bmatrix} x_1 & x_2 & \cdots & x_p \end{bmatrix}^{T}p×1p \times 1 の列ベクトルであると考えます。すると、

fx=[fx1fx2fxp]T\frac{\partial f}{\partial x}=\begin{bmatrix}\frac{\partial f}{\partial x_1} & \frac{\partial f}{\partial x_2} & \cdots & \frac{\partial f}{\partial x_p}\end{bmatrix}^{T}

求められた結果の次元は分母 xx と同じであることがわかります。もし xx が行ベクトルであれば同様です。

法則 2 :ベクトル対スカラーの微分#

f=[f1f2fm]Tf = \begin{bmatrix} f_1 & f_2 & \cdots & f_m \end{bmatrix}^{T}m×1 m \times 1 の列ベクトルで、xx がスカラーであると考えます。すると、

fx=[f1xf2xfmx]\frac{\partial f}{\partial x}=\begin{bmatrix}\frac{\partial f_1}{\partial x} & \frac{\partial f_2}{\partial x} & \cdots & \frac{\partial f_m}{\partial x}\end{bmatrix}

この場合、求められた結果の次元は分子 ff と逆になります。もし ff が行ベクトルであれば同様です。

法則 3 :ベクトル対ベクトルの微分#

f=[f1f2fm]Tf = \begin{bmatrix} f_1 & f_2 & \cdots & f_m \end{bmatrix}^{T}m×1 m \times 1 の列ベクトルで、x=[x1x2xp]Tx = \begin{bmatrix} x_1 & x_2 & \cdots & x_p \end{bmatrix}^{T}p×1p \times 1 の列ベクトルであると考えます。すると、

fx=[f1x1f2x1fmx1f1x2f2x2fmx2f1xpf2xpfmxp]\frac{\partial f}{\partial x}=\begin{bmatrix}\frac{\partial f_1}{\partial x_1} & \frac{\partial f_2}{\partial x_1} & \cdots & \frac{\partial f_m}{\partial x_1} \\ \frac{\partial f_1}{\partial x_2} & \frac{\partial f_2}{\partial x_2} & \cdots & \frac{\partial f_m}{\partial x_2} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial f_1}{\partial x_p} & \frac{\partial f_2}{\partial x_p} & \cdots & \frac{\partial f_m}{\partial x_p} \end{bmatrix}

このとき、微分結果の次元は p×mp \times m です。

法則 4 :スカラー対行列の微分#

ff がスカラーで、xp×qx_{p \times q} が行列であると考えます。すると、

fx=[fx11fx12fx1qfx21fx22fx2qfxp1fxp2fxpq]\frac{\partial f}{\partial x}=\begin{bmatrix}\frac{\partial f}{\partial x_{11}} & \frac{\partial f}{\partial x_{12}} & \cdots & \frac{\partial f}{\partial x_{1q}} \\ \frac{\partial f}{\partial x_{21}} & \frac{\partial f}{\partial x_{22}} & \cdots & \frac{\partial f}{\partial x_{2q}} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial f}{\partial x_{p1}} & \frac{\partial f}{\partial x_{p2}} & \cdots & \frac{\partial f}{\partial x_{pq}} \end{bmatrix}

同様に、求められた結果は分母 xx の次元と一致し、p×qp \times q です。

法則 5 :行列対ベクトルの微分#

fm×nf_{m \times n} が行列で、xx がスカラーであると考えます。すると、

fx=[f11xf21xfm1xf21xf22xfm2x2qfn1xfn2xfnmx]\frac{\partial f}{\partial x}=\begin{bmatrix}\frac{\partial f_{11}}{\partial x} & \frac{\partial f_{21}}{\partial x} & \cdots & \frac{\partial f_{m1}}{\partial x} \\ \frac{\partial f_{21}}{\partial x} & \frac{\partial f_{22}}{\partial x} & \cdots & \frac{\partial f_{m2}}{\partial x_{2q}} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial f_{n1}}{\partial x} & \frac{\partial f_{n2}}{\partial x} & \cdots & \frac{\partial f_{nm}}{\partial x} \end{bmatrix}

求められた結果は分子と逆になり、n×mn \times m です。

その他:ベクトルと行列の間、及び行列と行列の間の微分#

自変数と従変数がどちらもスカラーでない場合、行列の微分の本質的な議論に基づいて、多くの導関数が配置されることが難しくなることが必然的に生じます。例えば、一般的な場合、fm×nf_{m \times n}xp×qx_{p \times q} があると仮定すると、微分後に m×n×p×qm \times n \times p \times q 個の導関数結果を得ることになります。この場合、これらの導関数には通常、2 つの定義方法があります。

第一の定義#

前述の法則に従い、fx\frac{\partial f}{\partial x}ff の各スカラーに対して xx に対して微分し、それを行列 ff の元の位置に戻すと解釈します。つまり、fijx\frac{\partial f_{ij}}{\partial x}fijf_{ij} に置き換え、最終的に mp×nqmp \times nq の導関数行列を得ます。

第二の定義(主流)#

この定義は、行列対行列の微分問題をベクトル対ベクトルの微分に還元します。つまり、行列に対してまずベクトル化処理を行い、その後微分します:

fx=vec(f)vec(x) \frac{\partial f}{\partial x}=\frac{\partial vec(f)}{\partial vec(x)}

ここで、ベクトル化の実現方法は列ベクトル化と行ベクトル化に分かれます。列ベクトル化を例にとると、fm×nf_{m \times n}xp×qx_{p \times q} をそれぞれ fmn×1f_{mn \times 1}xpq×1x_{pq \times 1} にベクトル化し、法則 3 を用いて微分を行い、次元が pq×mnpq \times mn の導関数結果を得ます。

有用な公式#

以下の公式において、Am×1A_{m \times 1}xm×1x_{m \times 1} は列ベクトルであり、Bm×mB_{m \times m} は行列です。以下の 3 つの公式は文末に証明があります。

番号公式
1xTAx=ATxx=A\frac{\partial{x^{T}A}}{\partial{x}} = \frac{\partial{A^{T}x}}{\partial{x}} = A
2xTxx=x\frac{\partial{x^{T}x}}{\partial{x}} = x
3xTBxx=(B+BT)x\frac{\partial{x^{T}Bx}}{\partial{x}} = (B + B^{T})x

以下の公式は行列のトレースに関する公式です。ここで、 aa はスカラーであり、 AA, BB, CC は 3 つの行列です。

番号公式
1tr(a)=atr(a) = a
2tr(A)=tr(AT)tr(A) = tr(A^T)
3tr(AB)=tr(BA)tr(AB) = tr(BA)
4tr(ABC)=tr(CAB)=tr(BCA)tr(ABC) = tr(CAB) = tr(BCA)
5tr(AB)A=BT\frac{\partial{tr(AB)}}{\partial{A}} = B^T
6tr(ABATC)A=CAB+CTABT\frac{\partial{tr(ABA^{T}C)}}{\partial{A}} = CAB + C^{T}AB^{T}

一部公式の証明#

次のように定義します:

Am×1=[A1A2Am]TA_{m \times 1} = \begin{bmatrix} A_1 & A_2 & \cdots & A_m \end{bmatrix} ^ {T}

Bm×m=Bm×m=[B11B12B1mB21B22B2mBm1Bm2Bmm]B_{m \times m} = B_{m \times m} = \begin{bmatrix} B_{11} & B_{12} & \cdots & B_{1m} \\ B_{21} & B_{22} & \cdots & B_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ B_{m1} & B_{m2} & \cdots & B_{mm} \end{bmatrix}

xm×1=[x1x2xm]Tx_{m \times 1} = \begin{bmatrix} x_1 & x_2 & \cdots & x_m \end{bmatrix} ^ {T}

公式 1#

xTAx=ATxx=A\frac{\partial{x^{T}A}}{\partial{x}} = \frac{\partial{A^{T}x}}{\partial{x}} = A

Am×1A_{m \times 1}xm×1x_{m \times 1} が列ベクトルであるため、xTA=ATx=i=1mAixix^{T}A = A^{T}x = \sum_{i=1}^{m}{A_{i}x_{i}} はスカラーであるため、法則 1 を用いて計算できます。

xTAx=ATxx\frac{\partial{x^{T}A}}{\partial{x}} = \frac{\partial{A^{T}x}}{\partial{x}}

=[i=1mAixix1i=1mAixix2i=1mAixixm]= \begin{bmatrix} \frac{\partial{\sum_{i=1}^{m}{A_{i}x_{i}}}}{\partial{x_1}} \\ \frac{\partial{\sum_{i=1}^{m}{A_{i}x_{i}}}}{\partial{x_2}} \\ \cdots \\ \frac{\partial{\sum_{i=1}^{m}{A_{i}x_{i}}}}{\partial{x_m}} \end{bmatrix}

=[A1A2Am]= \begin{bmatrix} A_1 \\ A_2 \\ \cdots \\ A_m \end{bmatrix}

=A= A

公式 2#

同様に公式 1

公式 3#

xTBxx=(B+BT)x\frac{\partial{x^{T}Bx}}{\partial{x}} = (B + B^{T})x

問題の条件から、 xTBxx^{T}Bx はスカラーであるため、元の式はスカラー対列ベクトルの微分であり、法則 1 を用いて計算できます。

xTBxx\frac{\partial{x^{T}Bx}}{\partial{x}}

=[i=1mj=1mBijxixjx1i=1mj=1mBijxixjx2i=1mj=1mBijxixjxm] = \begin{bmatrix} \frac{\partial{\sum_{i=1}^{m}{\sum_{j=1}^{m}{B_{ij}x_{i}x_{j}}}}}{\partial{x_1}} \\ \frac{\partial{\sum_{i=1}^{m}{\sum_{j=1}^{m}{B_{ij}x_{i}x_{j}}}}}{\partial{x_2}} \\ \cdots \\ \frac{\partial{\sum_{i=1}^{m}{\sum_{j=1}^{m}{B_{ij}x_{i}x_{j}}}}}{\partial{x_m}} \end{bmatrix}

導関数の法則により:

f(x)g(x)x=f(x)xg(x)+f(x)g(x)x \frac{\partial{f(x)g(x)}}{\partial{x}} = \frac{\partial{f(x)}}{x}g(x) + f(x)\frac{\partial{g(x)}}{\partial{x}}

したがって、元の式は次のように続きます:

=[i=1mBi1xi+j=1mB1jxji=1mBi2xi+j=1mB2jxji=1mBimxi+j=1mBmjxj]= \begin{bmatrix} \sum_{i=1}^{m}{B_{i1}x_i} + \sum_{j=1}^{m}{B_{1j}x_j} \\ \sum_{i=1}^{m}{B_{i2}x_i} + \sum_{j=1}^{m}{B_{2j}x_j} \\ \cdots \\ \sum_{i=1}^{m}{B_{im}x_i} + \sum_{j=1}^{m}{B_{mj}x_j} \end{bmatrix}

=[i=1mBi1xii=1mBi2xii=1mBimxi]+[j=1mB1jxjj=1mB2jxjj=1mBmjxj]= \begin{bmatrix} \sum_{i=1}^{m}{B_{i1}x_i} \\ \sum_{i=1}^{m}{B_{i2}x_i} \\ \cdots \\ \sum_{i=1}^{m}{B_{im}x_i} \end{bmatrix} + \begin{bmatrix} \sum_{j=1}^{m}{B_{1j}x_j} \\ \sum_{j=1}^{m}{B_{2j}x_j} \\ \cdots \\ \sum_{j=1}^{m}{B_{mj}x_j} \end{bmatrix}

=[B11B21Bm1B12B22Bm2B1mB2mBmm][x1x2xm]+[B11B12B1mB21B22B2mBm1Bm2Bmm][x1x2xm]= \begin{bmatrix} B_{11} & B_{21} & \cdots & B_{m1} \\ B_{12} & B_{22} & \cdots & B_{m2} \\ \vdots & \vdots & \ddots & \vdots \\ B_{1m} & B_{2m} & \cdots & B_{mm} \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_m \end{bmatrix}+ \begin{bmatrix} B_{11} & B_{12} & \cdots & B_{1m} \\ B_{21} & B_{22} & \cdots & B_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ B_{m1} & B_{m2} & \cdots & B_{mm} \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_m \end{bmatrix}

=(AT+A)x=(A+AT)x= (A^{T} + A)x = (A + A^{T})x

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。