JDLA_E資格の線形代数のまとめ

#0. はじめに

E資格の出題範囲である線形代数の小項目は特異値分解となっている。特異値分解は行列（画像データ）を元の形とは異なる形式へ分解する手法の一つで、元データ（画像）の特徴を保ったまま画像の解像度を下げて、データサイズを下げることにに利用出来る。
これは、低ランク近似と言われる。

順を追っていくと以下のようになる。

1. 行列の特徴を解釈する為に分解してみたい。
1. 正方行列なら、固有値と固有ベクトルにより、行列を分解できる。
1. 上記の分解手法を固有値分解という。
1. しかし正方行列はあまりない。実際には非対称の行列が多い。
1. 非対称の行列を分解する手法が、特異値分解である。
1. 特異ベクトルと特異値により、行列を展開する手法が特異値分解である。

#1. 準備「行列計算の基礎」
###1.1 準備「行列を使った連立方程式の解法」

まず行列計算の復習である。
次のような連立方程式がある。

~~~math
x_{1} + 4x_{2} = 7 \\
2x_{1} + 6x_{2} = 10 \\
~~~

これを数式で解くかわりに、行列を使ってシンプルな形にして解くことが出来る。この連立方程式を行列で表すと以下である。

~~~math
\begin{pmatrix}
1 & 4 \\
2 & 6
\end{pmatrix}

\begin{pmatrix}
x_1 \\
x_2
\end{pmatrix}

=

\begin{pmatrix}
7 \\
10
\end{pmatrix}
~~~

この行列を変形させてやると、$x_1$と、$x_2$が求まる。
行基本変形のやり方は以下の3点である。

1. i行目をc倍する ( 2行目を　$ \frac{1}{2} $　倍)
1. s行目にt行目のc倍を加える　（1行目に2行目の-1倍。2行目に2行目の-3倍）
1. p行目とq行目を入れ替える。　（1行目と2行目）

~~~math
\begin{pmatrix}
1 & 4 \\
1 & 3
\end{pmatrix}

\begin{pmatrix}
x_1 \\
x_2
\end{pmatrix}

=

\begin{pmatrix}
7 \\
5
\end{pmatrix}
~~~

~~~math
↓
~~~

~~~math
\begin{pmatrix}
0 & 1 \\
1 & 3
\end{pmatrix}

\begin{pmatrix}
x_1 \\
x_2
\end{pmatrix}

=

\begin{pmatrix}
2 \\
5
\end{pmatrix}
~~~

~~~math
↓
~~~

~~~math
\begin{pmatrix}
0 & 1 \\
1 & 0
\end{pmatrix}

\begin{pmatrix}
x_1 \\
x_2
\end{pmatrix}

=

\begin{pmatrix}
2 \\
-1
\end{pmatrix}
~~~

~~~math
↓
~~~

~~~math
\begin{pmatrix}
1 & 0　\\
0 & 1
\end{pmatrix}

\begin{pmatrix}
x_1 \\
x_2
\end{pmatrix}

=

\begin{pmatrix}
-1 \\
2 
\end{pmatrix}
~~~

~~~math 
x_1 = -1  \\
x_2 = 2
~~~

###1.2 準備「逆行列を使った連立方程式の解法」

上で行った行列による連立方程式の解き方は、最終的には左辺が単位行列になっている。これはつまり、行列に対して以下のような計算をしたのと同じである。

~~~math
ax = b \\
\frac{1}{a} \times ax = \frac{1}{a} \times b \\
x =  \frac{1}{a} \times b
~~~

ここで、$\frac{1}{a}$ は逆行列と言われる。

ここで、元の行列の式の右辺には単位行列があると考えられるので。

~~~math
\begin{pmatrix}
1 & 4 \\
2 & 6
\end{pmatrix}

\begin{pmatrix}
x_1 \\
x_2
\end{pmatrix}

=
\begin{pmatrix}
1 & 0 \\
0 & 1
\end{pmatrix}

\begin{pmatrix}
7 \\
5
\end{pmatrix}
\\
A=
\begin{pmatrix}
1 & 4 \\
2 & 6 
\end{pmatrix}
, I=
\begin{pmatrix}
1 & 0 \\
0 & 1
\end{pmatrix}
とすると
\\

A^{-1} A 
\begin{pmatrix}
x_1 \\
x_2
\end{pmatrix}
= 
A^{-1}I
\begin{pmatrix}
7 \\
5
\end{pmatrix}
\\
\begin{pmatrix}
x_1 \\
x_2
\end{pmatrix}
= 
A^{-1}I
\begin{pmatrix}
7 \\
5
\end{pmatrix}
\\


~~~

###1.3 準備「逆行列の求め方」

逆行列 $ A^{-1} $の求め方は、左に$A$　右に単位行列を記載した行列を準備し、左側が単位行列になるように行列変形をしてやることで求まる。

~~~math
\left(
\begin{array}{cc|cc}
1 & 4 & 1 & 0\\
2 & 6 & 0 & 1\\
\end{array}
\right)
\\
         ↓行変形の流れは1.2と同じ\\
\left(
\begin{array}{cc|cc}
1 & 4 & 1 & 0\\
1 & 3 & 0 & \frac{1}{2}\\
\end{array}
\right)
\\
         ↓\\
\left(
\begin{array}{cc|cc}
0 & 1 & 1 & -\frac{1}{2}\\
1 & 3 & 0 & \frac{1}{2}\\
\end{array}
\right)
\\
         ↓\\
\left(
\begin{array}{cc|cc}
0 & 1 & 1 & -\frac{1}{2}\\
1 & 0 & -3 & 2\\
\end{array}
\right)
\\
         ↓\\
\left(
\begin{array}{cc|cc}
1 & 0 & -3 & 2\\
0 & 1 & 1 & -\frac{1}{2}\\
\end{array}
\right)
\\
         ↓\\
A^{-1}=
\begin{pmatrix}
-3 & 2\\
1 & -\frac{1}{2}\\
\end{pmatrix}
~~~

###1.4 準備「逆行列があるかどうか（行列式）」
行列の逆数があるとは限らない。例えば０の逆数が無いのと同じである。

~~~math
\begin{pmatrix}
a & b\\
c & d\\
\end{pmatrix}
=
\begin{pmatrix}
\overrightarrow{v_1}\\
\overrightarrow{v_2}\\
\end{pmatrix}
\\
ad-bc=0　の時、行列式はない。\\


\\
\\
~~~
上記は、$\overrightarrow{v_1}$　と、$\overrightarrow{v_2}$　の平行四辺形の面積を求めて、面積が０の場合には逆行列がないという意味になる。

2次元の場合の行列式

~~~math
\left|
\begin{matrix}
a & b\\
c & d\\
\end{matrix}
\right|
= ad - bc \\
~~~

3次元の場合の行列式

~~~math
\left|
\begin{matrix}
a & b & c\\
d & e & f\\
g & h & i \\
\end{matrix}
\right|
= 
a 
\left|
\begin{matrix}
e & f\\
h & i\\
\end{matrix}
\right|
-d
\left|
\begin{matrix}
b & c\\
h & i\\
\end{matrix}
\right|
+g
\left|
\begin{matrix}
b & c\\
e & f\\
\end{matrix}
\right|
~~~

#2.固有値と固有値分解
####2.1. 固有値と固有値ベクトルによる行列Aの成分分解（＝固有値分解）
行列$A$に対して以下の条件が成り立つとき、$\vec{v}$と、$\lambda$を、それぞれ固有ベクトルと、固有値と呼ぶ。

~~~math
A \vec{v} = \lambda \vec{v} \\
\vec{v} : 固有ベクトル,
\lambda : 固有値
~~~

ここで、話を一般化して考える。
行列$A$がn×nの正方行列とした場合、固有ベクトル、固有値をそれぞれ行列として並べたものを考えると、以下のようになる。

~~~math
AV = \Lambda V \\

V= 
\left( 
\begin{matrix}
\vec{v_1}  & \vec{v_2} & \cdots 
\end{matrix}
\right) 
\\
\Lambda = 
\begin{pmatrix}
\lambda_{11} & \cdots  & \cdots & 0\\
\vdots &  \lambda_{22} & \cdots & 0\\
0 & \cdots & \lambda_{22} \\
\end{pmatrix}

~~~

ここで、$V$の逆行列があれば、行列$A$は次のように展開ができる。

~~~math
A = V \Lambda  V^{-1}
~~~

行列を、固有ベクトルと、固有値と、固有ベクトルの逆行列で表現できた。これが固有値分解である。行列Aをその特徴を抽出した行列によって表現出来ている。

####2.2. 固有値分解の解法

ある行列$A$を固有値分解した形で表現するには、その固有値と、固有値ベクトルを求める必要がある。

~~~math
|A -  \lambda I | \vec{x} =  0 \\
~~~

この式が成り立つとして、$\vec{x} = 0$は当然成り立つので、

1. $|A -  \lambda I | =  0 $ が成り立つときの$固有値\lambda$ 求める
1. 固有値$\lambda$に対応する固有ベクトル $\vec{x}$を求める。
1. 固有ベクトル$\vec{x}$の逆行列を求める。
1. 固有値分解完了。


~~~math
A = V \Lambda  V^{-1}
~~~



#3. 特異値分解

前節で固有値分解をまとめたが、実際にディープラーニングで扱う行列（画像データ）が正方行列とは限らない。正方行列でない場合は、似て非なる特異値分解を行う。

~~~math
M=
\begin{pmatrix}
1 & 2 & 3 \\
3 & 2 & 3 
\end{pmatrix}
~~~

上記の行列に対して、特異値分解を行うと、以下のような表現となる。

~~~~math
M = U S V^{T}
~~~


###3.1 非正方行列の特異値分解の条件

~~~math
M=
\begin{pmatrix}
1 & 2 & 3 \\
3 & 2 & 3 
\end{pmatrix}
~~~

上記のような行列$M$に対して、下記が成り立つ場合、特異値分解が出来る。

~~~math
M \vec{v} = \sigma \vec{u}  \\
M^{T} \vec{u} = \sigma \vec{v}  \\

※\vec{u} は大きさ１の単位ベクトル（左特異ベクトル）\\
※\vec{v}は大きさ１の単位ベクトル（右特異ベクトル）\\
※\sigma　（特異値）\\
※M^{T}：行列Mの転置\\
~~~

###3.2 特異値分解の考え方

~~~math
M \vec{v} = \sigma \vec{u}   \\
M^{T} \vec{u} = \sigma \vec{v}  \\
~~~

上の式に、$M^{T}$ と、$M$を左から掛けると

~~~math
M^{T} M \vec{v} = \sigma M^{T} \vec{u}   \\
M M^{T} \vec{u} = \sigma M \vec{v}  \\
~~~

これは代入すると、以下のように変形されて、$ A \vec{v} = \lambda \vec{v}$ と同じ形である。

~~~math
M^{T} M \vec{v} = \sigma^{2} \vec{v}  \\
M M^{T} \vec{u} = \sigma^{2} \vec{u}  \\
~~~

よって$\vec{v}$、$\vec{u}$は、$M^{T} M$ 、$MM^{T} $の固有ベクトルであり、$\sigma^{2}$が固有値である。


**左特異ベクトルと、特異値を求める。**

$MM^{T}$ を求めてみる。

~~~math

MM^{T} = ( U S V^{T} ) ( U S V^{T} )^{T} \\
MM^{T} = ( U S V^{T} ) ( (V^{T})^{T} S^{T}  U^{T} ) \\
MM^{T} = ( U S V^{T} ) ( V S^{T}  U^{T} ) \\
MM^{T} =  U S S^{T}  U^{T}  \\
~~~

~~~math
※ M =  U S V^{T} \\
※ (AB)^{T} = B^{T} A^{T}\\
~~~

つまり、$MM^{T}$ を固有値分解すると、行列$M$の左特異ベクトル$U$と、特異値$S$が求まる。


**右特異ベクトルと、特異値を求める。**

$M^{T}M$ を求めると、以下の形になるため、右特異ベクトル$V$が求まる。

~~~math
M^{T}M =  V　S S^{T}  V^{T}  \\
~~~

**特異値分解完成**
上記で求めた結果を下記の公式に入れてやると、行列$M$の特異値分解が完成する。

~~~math
M = U S V^{T}
~~~