行列の成分計算

「行列の成分計算」の編集履歴(バックアップ)一覧はこちら

行列の成分計算 - (2009/07/21 (火) 18:40:49) の1つ前との変更点

追加された行は緑色になります。

削除された行は赤色になります。

=== 基本演算 === '''行列の積''' <math>\left( AB \right)_{ij} = \sum_k a_{ik} b_{kj}</math> '''行成分を揃えて和をとる。''' <math>\sum_k a_{ki} b_{kj} = \left( A^\mathrm{T}B \right)_{ij}</math> '''列成分を揃えて和をとる。''' <math>\sum_k a_{ik} b_{jk} = \left( AB^\mathrm{T} \right)_{ij}</math> '''全ての成分の和をとる。(行列A,Bの'''Frobenius内積''')''' <math>\sum_{p,q} a_{pq} b_{pq} = \mathrm{Tr} A^\mathrm{T} B =: \langle A,B \rangle</math> '''各成分の二乗和''' <math>\sum_{p,q} a_{pq}^2 = \mathrm{Tr} A^\mathrm{T} A</math> === 二次形式 === (Frobenius内積の特殊形。特に,Aを固定すると数ベクトルの内積の拡張ともみなせる。) <math>\sum_{i,j} a_{ij} x_i x_j = \mathbf{x}^\mathrm{T} A \mathbf{x}</math> === クロネッカーのデルタ === <math>\left( \mathbb{I}^{ij} \right)_{kl} := \delta_{ik} \delta_{jl} = \left( \frac{\partial X}{\partial x_{ij}} \right)_{kl}</math> 右から作用させて,第i列ベクトルを第j列に持ってくる。 <math> [\mathbf{x}_1 \, \cdots \, \mathbf{x}_N] \mathbb{I}^{ij} = [\mathbf{0} \, \cdots \, \mathbf{0} \, \mathbf{x}_i \, \mathbf{0} \, \cdots \, \mathbf{0}]</math> Trと使うと効果絶大。 <math>\mathrm{Tr} X \mathbb{I}^{ij} = \sum_t \sum_k x_{tk}\delta_{ki}\delta_{tj}</math> <math>= \sum_t x_{ti}\delta_{tj} = x_{ji}</math> ''もう少しエレガントな証明'' <math>\mathrm{Tr} X^\mathrm{T} X = \sum_{k,l} x_{kl}^2</math> <math>\therefore \frac{\partial}{\partial x_{ij}}\mathrm{Tr} X^\mathrm{T} X = \frac{\partial \sum_{k,l} x_{kl}^2}{\partial x_{ij}} = 2 x_{ij}</math> 一方, <math>\frac{\partial}{\partial x_{ij}}\mathrm{Tr} X^\mathrm{T} X = \mathrm{Tr} \frac{\partial}{\partial x_{ij}} X^\mathrm{T} X = \mathrm{Tr} \left \{ \frac{\partial X^\mathrm{T}}{\partial x_{ij}} X + X^\mathrm{T} \frac{\partial}{\partial x_{ij}} X \right \}</math> <math>= \mathrm{Tr} \left \{ \mathbb{I}^{ji} X + X^\mathrm{T} \mathbb{I}^{ij} \right \}</math> <math>= \mathrm{Tr} \left \{ 2 X^\mathrm{T} \mathbb{I}^{ij} \right \}</math> <math>\therefore \mathrm{Tr} X^\mathrm{T} \mathbb{I}^{ij} = x_{ij}</math> ---- === Frobenius 内積 の公式 === '''定義(Frobenius内積)''' ←どのクラスの行列に対して定義されるのか考えること。 : <math>\langle A,B \rangle := \mathrm{Tr} \{ A^\mathrm{T} B\}</math> '''定義(Frobeniusノルム)''' : <math>\| A \| := \langle A,A \rangle = \mathrm{Tr} \{ A^\mathrm{T} A\} = \sum_{i,j} \, a_{ij}^2</math> '''性質(内積の公理)''' : 1. 線形性 : <math>\langle kA+lB,C \rangle = k \langle A,C \rangle + l \langle B,C \rangle</math> : 2. 対称性 : <math>\langle A,B \rangle = \langle B,A \rangle^\star </math> : 3. 正値性 : <math>\langle A,A \rangle \geq 0; \quad \langle A,A \rangle = 0 \Leftrightarrow A=0 </math> '''性質(Trの性質)''' : 1. 積の交換律 : <math>\langle A,B\rangle = \langle A^\mathrm{T}, B^\mathrm{T}\rangle</math> : 2. 積の結合律 : <math>\langle AB,C\rangle = \langle A, CB^\mathrm{T}\rangle = \langle B, A^\mathrm{T}C\rangle</math> : <math>\langle A,BC\rangle = \langle AC^\mathrm{T},B\rangle = \langle B^\mathrm{T}A,C\rangle</math> : 特に, : <math>\langle A,B\rangle = \langle A^\mathrm{T}B\rangle</math> '''二次形式''' : <math>x^\mathrm{T} Ax = \langle Ax,x \rangle</math> '''平方完成 その1(多変量正規分布の指数)''' : <math>\langle \Sigma^{-1}x,x \rangle - 2 \langle \Sigma^{-1}x,\mu \rangle + C</math> :: <math>= \langle \Sigma^{-1}x,x \rangle - 2 \langle \Sigma^{-1}x,\mu \rangle + \langle \Sigma^{-1}\mu,\mu \rangle + C - \langle \Sigma^{-1}\mu,\mu \rangle</math> :: <math>= \langle \Sigma^{-1}(x-\mu),x-\mu \rangle + \widetilde{C} \quad \left( \widetilde{C} := C - \langle \mu,\Sigma^{-1}\mu \rangle \right)</math> '''平方完成 その2(二次曲面の定義式)''' : <math>\langle Ax,x \rangle + 2 \langle \mathbf{b},x \rangle + C</math> '''内積の微分''' : <math>\frac{\partial \langle A,B \rangle}{\partial x} = \langle\frac{\partial A}{\partial x},B \rangle + \langle A,\frac{\partial B}{\partial x} \rangle</math> : <math>\frac{\partial \langle A,A \rangle}{\partial x} = 2\langle\frac{\partial A}{\partial x},A \rangle</math> '''I<sup>ij</sup>との相性''' : <math>\langle X,\mathbb{I}^{ij} \rangle = x_{ij}</math> : <math>\langle \mathbb{I}^{ij}, \mathbb{I}^{kl} \rangle = \delta_{ik}\delta_{jl}</math> : ← '''I<sup>ij</sup>はFrobenius内積における正規直交基底である!''' : '''I<sup>ij</sup>'''は次の関係式が有用である。 : <math>\mathbb{I}^{ij} = \frac{\partial X}{\partial x_{ij}}</math> == 二次形式 == :<math>\mathbf{x}^\mathrm{T}\mathbf{Ax}=\sum_{i,j}a_{ij}x_ix_j</math> Aを固定したものは内積にもなる。これは数ベクトルの内積の拡張であり,Frobenius内積の特殊形でもある。 :<math>\langle \mathbf{x},\mathbf{y}\rangle_A := \mathbf{x}^\mathrm{T} A \mathbf{y}</math> ---- === 固有値で計算できるもの === トレース,行列式は固有値を用いて計算できる。 === jordan 標準形 === === 対角化 === Aが対角化可能であるとは, ある対角行列Dと相似関係になることをいう。 : <math>A \sim D \Leftrightarrow A=PDP^{-1} \textrm{ for } \ ^\exists P \textrm{ : regular matrix}</math> これは次の条件と同値である。 各固有値の(代数的)重複度が,それぞれ対応する固有空間の次元(幾何学的重複度)に等しい。 === LU分解 === === 特異値分解 === Aの特異値とは,A<sup>T</sup>Aの固有値の平方根のこと。 ---- == 行列の微分 == ベクトルで微分をするには、元の型を保ったまま展開するのが基本。 ''これは慣習であって、必ずしもそうとは限らない。''列ベクトルを列ベクトルで微分して行方向に展開してしまうこともある。 :<math>\mathbf{x},\mathbf{y}:\textrm{row vector}</math> :<math>\left( \frac{\partial \, \mathbf{y}}{\partial \, \mathbf{x}^\mathrm{T}} \right)_{ij}:=\left( \frac{\partial y_i}{\partial x_j}\right)</math> *ヤコビ行列との関係 :<math>\frac{\partial (y_1,y_2,\cdots,y_m)}{\partial (x_1,x_2,\cdots,x_n)}=\left( \frac{\partial \, \mathbf{y}}{\partial \, \mathbf{x}^\mathrm{T}} \right)</math> === 行列関数を微分 === 行列関数Fの行列Aによる微分は、Fを行列'''R'''<sup>N×M</sup>の各成分a<sub>ij</sub>を引数とする多変数関数とみなして微分することができる。 :<math>F:\mathbf{R}^{M \times N}\rightarrow\mathbf{R};A \rightarrow F(A) \; \textrm{function}</math> :<math>\left( \frac{\partial \, F}{\partial \, A} \right)_{ij}:=\left(\frac{\partial\,F}{\partial\,a_{ij}}\right)</math> これを利用して、合成行列関数の微分におけるヤコビ行列の積のようなものが得られると嬉しいが、残念ながら下記の様に成分毎の結果しか得られていない。 :<math>F:\mathbf{R}^{M \times N}\rightarrow\mathbf{R}^{P \times Q}\rightarrow\mathbf{R}</math> :<math>\qquad ;A \rightarrow \Delta(A) \rightarrow F(\Delta(A)) \; \textrm{function}</math> :<math>\left( \frac{\partial \, F}{\partial \, A} \right)_{ij}= \mathrm{Tr}\left(\frac{\partial\,F}{\partial\,\Delta}\right)^\mathrm{T}\left(\frac{\partial\,\Delta}{\partial\,a_{ij}}\right) = \left \langle \frac{\partial\,F}{\partial\,\Delta}, \frac{\partial\,\Delta}{\partial\,a_{ij}} \right \rangle </math> Traceをとる方法ではなく、M×N×P×Q個の成分を2つの行列の積として上手く並べる方法は見当たらない(vecを使う方法はある)。 [http://www2.imm.dtu.dk/pubdb/views/edoc_download.php/3274/pdf/imm3274.pdf The Matrix Cookbook 式122,126] でもこの形式を用いている。 '''逆行列による微分'''では、もう少し計算が進む。 '''補題''' : <math>\widetilde{x}</math>はXの逆行列X<sup>-1</sup>のij成分であるとして、 : <math>\frac{\partial X}{\partial \widetilde{x}_{ij}} = - X \mathbb{I}^{ij} X</math> : ('''証明''') : <math>\frac{\partial X^{-1}}{\partial x_{ij}} = - X^{-1} \frac{\partial X}{\partial x_{ij}} X^{-1} = - X^{-1} \mathbb{I}^{ij} X^{-1}</math> : ここで Y:=X<sup>-1</sup>と置くと、x<sub>ij</sub>はY<sup>-1</sup>のij成分であることに注意して、 : <math>\frac{\partial Y}{\partial x_{ij}} = - Y \mathbb{I}^{ij} Y</math> : このYをX、x<sub>ij</sub>を<math>\widetilde{x}</math>と読み替えればよい。 '''逆行列による微分''' :<math>F:\mathbf{R}^{M \times N}\rightarrow\mathbf{R};X \rightarrow F(X) \; \textrm{function}</math> : <math>\frac{\partial F(X)}{\partial X^{-1}} = - X^\mathrm{T} \frac{\partial F(X)}{\partial X} X^\mathrm{T}</math> : ('''証明''') : 合成関数の微分公式によって、 : <math>\frac{\partial F(X)}{\partial \widetilde{x}_{ij}} = \left \langle \frac{\partial F(X)}{\partial X}, \frac{\partial X}{\partial \widetilde{x}_{ij}} \right \rangle</math> :: <math> = \left \langle \frac{\partial F(X)}{\partial X}, -X \mathbb{I}^{ij} X \right \rangle</math> :: <math> = \left \langle -X^\mathrm{T} \frac{\partial F(X)}{\partial X} X^\mathrm{T}, \mathbb{I}^{ij} \right \rangle</math> :: <math> = \left( -X^\mathrm{T} \frac{\partial F(X)}{\partial X} X^\mathrm{T} \right)_{ij} \qed</math> この関係式から「'''系.Fは逆行列で最適化しても変わらない。'''」が導かれる。 : <math>^\exists X_0 \quad \frac{\partial F(X_0)}{\partial X}=0 \, \Rightarrow \, \frac{\partial F(X_0)}{\partial X^{-1}}=0</math> === Trの微分 === 次の交換が基本 :<math>\partial \, \mathrm{Tr} X = \mathrm{Tr} \, \partial X</math> === detの微分 === 余因子展開と余因子行列の性質を用いると,次が分かる。 :<math>|A|=\sum_j a_{ij} \Delta_{ij}</math> :<math>\therefore \frac{\partial |A|}{\partial a_{kl}}=\Delta_{kl}</math> :<math>\therefore \frac{\partial |A|}{\partial A}=\mathrm{adj}A=|A|(A^{-1})^\mathrm{T}</math> === 二次形式の微分 === 二次形式はスカラーであるから,'''トレースや転置をとっても変わらない'''ことを利用する。 二次形式において、行列を対称成分と反対称成分に分けたとき、反対称成分は相殺してしまうので、表現行列として'''対称行列のみを考えて一般性を失わない。''' === 方向微分による方法 === 定義に戻って,FのAにおけるH方向微分(Gateaux微分)を以下で計算する方法も有効である。 この計算で得られるのは,Jacobi行列の拡張に相当する作用素である。 : <math>F_A(H) := \frac{d F(A+tH)}{d t} \rvert _{t=0}</math> 計算結果において,Hは一般に外せない位置にくる。 ---- === HC定理 === === exp(A) === === A^n === ---- == 行列式 == '''定義''' :<math> A := [\mathbf{a}_1 \; \cdots \; \mathbf{a}_n] \in \mathbb{R}^{N \times N}</math> :<math>| \dot | : \mathbb{R}^{N \times N} \to \mathbb{R}</math> |A|がAの行列式であるとは,次が成り立つことをいう。 # <math>|\cdots \; \mathbf{a}_i \; \cdots \; \mathbf{a}_j \; \cdots| = -|\cdots \; \mathbf{a}_j \; \cdots \; \mathbf{a}_i \; \cdots|</math> # <math>|\cdots \; \lambda \mathbf{a}_i + \mu \mathbf{b}_i \; \cdots| = \lambda |\cdots \; \mathbf{a}_i \; \cdots| + \mu |\cdots \; \mathbf{b}_i \; \cdots|</math> # <math>|\mathbb{I}|=1</math> '''定理''' 上の条件を満たす関数は唯一定まり,以下で与えられる。 : <math>|A| = \sum_{\sigma \in \mathcal{S}_N} \mathrm{sgn}(\sigma) a_{1 \sigma(1)} \cdots a_{N \sigma(N)}</math> ここで,S<sub>N</sub>はN次対称群。 すなわち,N次置換群の全体。 あるいは,有限集合Nの全単射の全体。 '''定理''' 行列式の公理のうち,(1)と(2)を満たす関数f(A)に対して,以下が成り立つ。 : <math>f(A) = |A| f(\mathbb{I})</math> '''定理''' 行列式は転置をとっても同じ : <math>|A^\mathrm{T}|=|A|</math> 積の行列式は,行列式の積にできる。 : <math>|AB|=|A||B|</math> '''定義(cofactors; 余因子)''' 行列Aのi行とj列を潰して得られる行列を<math>\widetilde{a}_{ij}</math>とする。 Aの余因子Δ<sub>ij</sub>とは,次で定義される行列式である。 : <math>\Delta_{ij} := (-1)^{i+j} \widetilde{a}_{ij}</math> 各成分を余因子にもつ行列を,余因子行列(adjoint)といい,adj A と書く。 : <math>\left( \mathrm{adj} A \right)_{ij} := \Delta_{ij}</math> '''定理(余因子展開)''' 行列Aの余因子(cofactors)Δ<sub>ij</sub>を用いて,行列式|A|は以下のように展開できる。 ''展開は行ごと,或いは列ごとに行われることに注意する。''(つまり和は1つだけとる。) :<math>|A| = \sum_j a_{ij} \Delta_{ij} = \sum_i a_{ij} \Delta_{ij}</math> '''定理(余因子行列と逆行列の関係)''' :<math>\frac{ \left( \mathrm{adj} A \right)^\mathrm{T} }{ |A| } = A^{-1}</math>
=== 基本演算 === '''行列の積''' <math>\left( AB \right)_{ij} = \sum_k a_{ik} b_{kj}</math> '''行成分を揃えて和をとる。''' <math>\sum_k a_{ki} b_{kj} = \left( A^\mathrm{T}B \right)_{ij}</math> '''列成分を揃えて和をとる。''' <math>\sum_k a_{ik} b_{jk} = \left( AB^\mathrm{T} \right)_{ij}</math> '''全ての成分の和をとる。(行列A,Bの'''Frobenius内積''')''' <math>\sum_{p,q} a_{pq} b_{pq} = \mathrm{Tr} A^\mathrm{T} B =: \langle A,B \rangle</math> '''各成分の二乗和''' <math>\sum_{p,q} a_{pq}^2 = \mathrm{Tr} A^\mathrm{T} A</math> === 二次形式 === (Frobenius内積の特殊形。特に,Aを固定すると数ベクトルの内積の拡張ともみなせる。) <math>\sum_{i,j} a_{ij} x_i x_j = \mathbf{x}^\mathrm{T} A \mathbf{x}</math> === クロネッカーのデルタ === <math>\left( \mathbb{I}^{ij} \right)_{kl} := \delta_{ik} \delta_{jl} = \left( \frac{\partial X}{\partial x_{ij}} \right)_{kl}</math> 右から作用させて,第i列ベクトルを第j列に持ってくる。 <math> [\mathbf{x}_1 \, \cdots \, \mathbf{x}_N] \mathbb{I}^{ij} = [\mathbf{0} \, \cdots \, \mathbf{0} \, \mathbf{x}_i \, \mathbf{0} \, \cdots \, \mathbf{0}]</math> Trと使うと効果絶大。 <math>\mathrm{Tr} X \mathbb{I}^{ij} = \sum_t \sum_k x_{tk}\delta_{ki}\delta_{tj}</math> <math>= \sum_t x_{ti}\delta_{tj} = x_{ji}</math> ''もう少しエレガントな証明'' <math>\mathrm{Tr} X^\mathrm{T} X = \sum_{k,l} x_{kl}^2</math> <math>\therefore \frac{\partial}{\partial x_{ij}}\mathrm{Tr} X^\mathrm{T} X = \frac{\partial \sum_{k,l} x_{kl}^2}{\partial x_{ij}} = 2 x_{ij}</math> 一方, <math>\frac{\partial}{\partial x_{ij}}\mathrm{Tr} X^\mathrm{T} X = \mathrm{Tr} \frac{\partial}{\partial x_{ij}} X^\mathrm{T} X = \mathrm{Tr} \left \{ \frac{\partial X^\mathrm{T}}{\partial x_{ij}} X + X^\mathrm{T} \frac{\partial}{\partial x_{ij}} X \right \}</math> <math>= \mathrm{Tr} \left \{ \mathbb{I}^{ji} X + X^\mathrm{T} \mathbb{I}^{ij} \right \}</math> <math>= \mathrm{Tr} \left \{ 2 X^\mathrm{T} \mathbb{I}^{ij} \right \}</math> <math>\therefore \mathrm{Tr} X^\mathrm{T} \mathbb{I}^{ij} = x_{ij}</math>

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。