ラビットチャレンジ - 応用数学 第1章 線形代数

# 0．概要
本記事は日本ディープラーニング協会認定の講座プログラムである「ラビット・チャレンジ」が提供している科目の1つである応用数学のレポートである。
記事タイトルに記載のとおり、第1章の線形代数について以下にまとめる。

計算については練習がてら適当な数字でできるだけ実際に解いてみる。
もし間違っている認識の箇所があればご指摘ください。
数式をもっと綺麗に書けるように練習が必要ですね。。。

# 1．ベクトル
いわゆる大きさしか持てないスカラと違い、向きも持てる。
以下のような形で表される。

```math
\left(
\begin{array}{c}
1 \\
2 \\
\end{array}
\right)
```

# 2．行列
スカラ値を表のように表したもの。
横方向を「行」、縦方向を「列」と呼び、下記例の場合、2×3行列となる。

```math
\left(
\begin{array}{ccc}
1 & 2 & 3 \\
4 & 5 & 6 \\
\end{array}
\right)
```

## 2.1．ベクトルの変換
スカラをベクトルに掛けることもできるが同じ直線上に存在するままなのは変わらない。
ベクトルそのものの変換にはならない。

```math
2
\left(
\begin{array}{c}
2 \\
2 \\
\end{array}
\right)
=
\left(
\begin{array}{c}
4 \\
4 \\
\end{array}
\right)
```

ベクトルに行列を掛けることで全く別のベクトルに変換できる。
積はベクトルと同じ形になる。

```math
\left(
\begin{array}{cc}
a_{11} & a_{12} \\
a_{21} & a_{22} \\
\end{array}
\right)
\left(
\begin{array}{c}
b_{1} \\
b_{2} \\
\end{array}
\right)
=
\left(
\begin{array}{c}
a_{11}b_{1}+a_{12}b_{2} \\
a_{21}b_{1}+a_{22}b_{2} \\
\end{array}
\right)
```

例

```math
\left(
\begin{array}{cc}
1 & 2 \\
3 & 4 \\
\end{array}
\right)
\left(
\begin{array}{c}
2 \\
2 \\
\end{array}
\right)
=
\left(
\begin{array}{c}
6 \\
14 \\
\end{array}
\right)
```

## 2.2．行列同士の積
行列同士を掛けることもできる。

```math
\left(
\begin{array}{cc}
a_{11} & a_{12} \\
a_{21} & a_{22} \\
\end{array}
\right)
\left(
\begin{array}{cc}
b_{11} & b_{12} \\
b_{21} & b_{22} \\
\end{array}
\right)
=
\left(
\begin{array}{cc}
a_{11}b_{11}+a_{12}b_{21} & a_{11}b_{12}+a_{12}b_{22} \\
a_{21}b_{11}+a_{22}b_{21} & a_{21}b_{12}+a_{22}b_{22} \\
\end{array}
\right)
```

例

```math
\left(
\begin{array}{cc}
1 & 2 \\
3 & 4 \\
\end{array}
\right)
\left(
\begin{array}{cc}
1 & 2 \\
3 & 4 \\
\end{array}
\right)
=
\left(
\begin{array}{cc}
7 & 10 \\
15 & 22 \\
\end{array}
\right)
```

## 2.3．行基本変形
$i$行目を$c$倍する

```math
Q_{i,c}=\left(
\begin{array}{ccccccc}
1 \\
 & \ddots & \\
 & & 1 \\
 & & & c \\
 & & & & 1 \\
 & & & & & \ddots \\
 & & & & & & 1 \\
\end{array}
\right)
```

2行目を$\frac{1}{2}$倍する

```math
\left(
\begin{array}{ccc}
1 & 0 & 0 \\
0 & \frac{1}{2} & 0 \\
0 & 0 & 1 \\
\end{array}
\right)
\left(
\begin{array}{ccc}
1 & 2 & 3 \\
4 & 2 & 6 \\
7 & 8 & 9 \\
\end{array}
\right)
=
\left(
\begin{array}{ccc}
1 & 2 & 3 \\
2 & 1 & 3 \\
7 & 8 & 9 \\
\end{array}
\right)
```

$s$行目に$t$行目の$c$倍を加える

```math
R_{s,t,c}=\left(
\begin{array}{ccccccc}
1 \\
 & \ddots & \\
 & & 1 & & c \\
 & & & \ddots \\
 & & & & 1 \\
 & & & & & \ddots \\
 & & & & & & 1 \\
\end{array}
\right)
```

3行目に1行目の-2倍を加える。

```math
\left(
\begin{array}{ccc}
1 & 0 & 0 \\
0 & 1 & 0 \\
-2 & 0 & 1 \\
\end{array}
\right)
\left(
\begin{array}{ccc}
1 & 2 & 3 \\
2 & 1 & 3 \\
7 & 8 & 9 \\
\end{array}
\right)
=
\left(
\begin{array}{ccc}
1 & 2 & 3 \\
2 & 1 & 3 \\
5 & 4 & 3 \\
\end{array}
\right)
```

$p$行目と$q$行目を入れ替える。

```math
P_{p,q}=\left(
\begin{array}{ccccccc}
1 \\
 & \ddots & \\
 & & 0 & & 1 \\
 & & & \ddots \\
 & & 1 & & 0 \\
 & & & & & \ddots \\
 & & & & & & 1 \\
\end{array}
\right)
```

1行目と2行目を入れ替える。

```math
\left(
\begin{array}{ccc}
0 & 1 & 0 \\
1 & 0 & 0 \\
0 & 0 & 1 \\
\end{array}
\right)
\left(
\begin{array}{ccc}
1 & 2 & 3 \\
2 & 1 & 3 \\
5 & 4 & 3 \\
\end{array}
\right)
=
\left(
\begin{array}{ccc}
2 & 1 & 3 \\
1 & 2 & 3 \\
5 & 4 & 3 \\
\end{array}
\right)
```

## 2.4．列基本変形
行基本変形とは逆に右から掛けると求めることができる。
左から掛けるか右から掛けるかの違いのみなので計算割愛。

## 2.5．単位行列
左上から右下に向かって対角線上の成分のみ1、それ以外は0となる行列。
かけてもかけられても相手の行列が変化しない。

```math
\left(
\begin{array}{ccc}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1 \\
\end{array}
\right)
```

例

```math
\left(
\begin{array}{ccc}
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9 \\
\end{array}
\right)
\left(
\begin{array}{ccc}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1 \\
\end{array}
\right)
=
\left(
\begin{array}{ccc}
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9 \\
\end{array}
\right)
```

## 2.6．逆行列
行列における逆数のようにはたらく。
もとの行列に掛けることで単位行列が求まる。
逆行列が存在する行列を正則行列と呼ぶ。
正則行列や逆行列は正方行列(2x2, 3x3のように行数と列数が同じ行列)の場合のみ考える。

以下の式を書くにあたってそれぞれの意味を示す。
$A$：行列
$A^{-1}$：行列の逆行列
$I$：単位行列

```math
AA^{-1}=A^{-1}A=I
```

$A^{-1}$は$A$の-1乗という意味ではなく、逆行列を指しておりインバースと呼ぶ。
普通の数の場合、-1乗を掛けると1になることからきている。

### 2.6.1．掃き出し法
掃き出し法は逆行列を求める方法の1つ。行基本変形の考え方を使用する。

以下のような行列から掃き出し法を用いて逆行列を計算してみる。

```math
\left(
\begin{array}{cc}
1 & 2 \\
3 & 4 \\
\end{array}
\right)
```

単位行列を右側に付け加えて拡大行列にする。

```math
\left(
\begin{array}{cc|cc}
1 & 2 & 1 & 0 \\
3 & 4 & 0 & 1 \\
\end{array}
\right)
```

2行目に1行目の-3倍を加える。

```math
\left(
\begin{array}{cc|cc}
1 & 2 & 1 & 0 \\
0 & -2 & -3 & 1 \\
\end{array}
\right)
```

1行目に2行目を加える。

```math
\left(
\begin{array}{cc|cc}
1 & 0 & -2 & 1 \\
0 & -2 & -3 & 1 \\
\end{array}
\right)
```

2行目を$-\frac{1}{2}$倍する。

```math
\left(
\begin{array}{cc|cc}
1 & 0 & -2 & 1 \\
0 & 1 & \frac{3}{2} & -\frac{1}{2} \\
\end{array}
\right)
```

右側の部分が逆行列となる。

```math
\left(
\begin{array}{cc}
-2 & 1 \\
\frac{3}{2} & -\frac{1}{2} \\
\end{array}
\right)
```

計算してみると単位行列が求まることが分かる。

```math
\left(
\begin{array}{cc}
1 & 2 \\
3 & 4 \\
\end{array}
\right)
\left(
\begin{array}{cc}
-2 & 1 \\
\frac{3}{2} & -\frac{1}{2} \\
\end{array}
\right)
=
\left(
\begin{array}{cc}
1 & 0 \\
0 & 1 \\
\end{array}
\right)
```

### 2.6.2．逆行列が存在しない行列
以下のような行列があった場合

```math
\left(
\begin{array}{cc}
a & b \\
c & d \\
\end{array}
\right)
```

$a:b{\neq}c:d$の時、逆行列がする。
$a:b=c:d$の時、逆行列が存在しない(比が同じ)。
逆行列が存在しない条件は$ad-bc=0$に書き換えられる。

2.6.2で計算してみた行列に対して適用してみると$1\times4-2\times3=-2$となり、既に逆行列を求めることができているが、この式で逆行列があるということを判断することもできている。

## 2.7．行列式
逆行列の有無を判別するための式を指す。
上記で言うところの$ad-bc$のこと。

```math
\begin{vmatrix}
a & b \\
c & d
\end{vmatrix}
=
\begin{vmatrix}
\vec{v}_{1} \\
\vec{v}_{2}
\end{vmatrix}
```

### 2.7.1．行を入れ替えると符号が反転

```math
\begin{vmatrix}
\vec{v}_{1} \\
\vdots \\
\vec{v}_{s} \\
\vdots \\
\vec{v}_{t} \\
\vdots \\
\vec{v}_{n} \\
\end{vmatrix}
=
-
\begin{vmatrix}
\vec{v}_{1} \\
\vdots \\
\vec{v}_{t} \\
\vdots \\
\vec{v}_{s} \\
\vdots \\
\vec{v}_{n} \\
\end{vmatrix}
```

計算で実際にそうなるか確かめる。後述の展開を使用する。

```math
\begin{vmatrix}
2 & -2 & 1 \\
0 & 3 & 2 \\
-1 & 1 & 4
\end{vmatrix}
=
2
\begin{vmatrix}
3 & 2 \\
1 & 4
\end{vmatrix}
-1
\begin{vmatrix}
-2 & 1 \\
3 & 2
\end{vmatrix}
=20+7=27 
```

```math
\begin{vmatrix}
2 & -2 & 1 \\
-1 & 1 & 4 \\
0 & 3 & 2 
\end{vmatrix}
=
2
\begin{vmatrix}
1 & 4 \\
3 & 2
\end{vmatrix}
+1
\begin{vmatrix}
-2 & 1 \\
3 & 2
\end{vmatrix}
=-20-7=-27
```

### 2.7.2．同じベクトルが含まれていると0

```math
\begin{vmatrix}
\vec{v}_{1} \\
\vdots \\
\vec{w} \\
\vdots \\
\vec{w} \\
\vdots \\
\vec{v}_{n} \\
\end{vmatrix}
=0
```

計算で実際にそうなるか確かめる。後述の展開を使用する。

```math
\begin{vmatrix}
2 & -2 & 1 \\
2 & -2 & 1 \\
0 & 3 & 2 
\end{vmatrix}
=
2
\begin{vmatrix}
-2 & 1 \\
3 & 2
\end{vmatrix}
-2
\begin{vmatrix}
-2 & 1 \\
3 & 2
\end{vmatrix}
=-14+14=0
```

### 2.7.3．1つのベクトルがλ倍されると行列式もλ倍

```math
\begin{vmatrix}
\vec{v}_{1} \\
\vdots \\
\lambda\vec{v}_{i} \\
\vdots \\
\vec{v}_{n} \\
\end{vmatrix}
=
\lambda
\begin{vmatrix}
\vec{v}_{1} \\
\vdots \\
\vec{v}_{i} \\
\vdots \\
\vec{v}_{n} \\
\end{vmatrix}
```

計算で実際にそうなるか確かめる。後述の展開を使用する。

```math
\begin{vmatrix}
2 & -2 & 1 \\
0 & 3 & 2 \\
-1 & 1 & 4
\end{vmatrix}
=
2
\begin{vmatrix}
3 & 2 \\
1 & 4
\end{vmatrix}
-1
\begin{vmatrix}
-2 & 1 \\
3 & 2
\end{vmatrix}
=20+7=27 
```

1行目を2倍してみる。

```math
\begin{vmatrix}
4 & -4 & 2 \\
0 & 3 & 2 \\
-1 & 1 & 4
\end{vmatrix}
=
4
\begin{vmatrix}
3 & 2 \\
1 & 4
\end{vmatrix}
-1
\begin{vmatrix}
-4 & 2 \\
3 & 2
\end{vmatrix}
=40+14=54
```

### 2.7.4．1つのベクトルだけ違った場合、行列式は足し合わされる。

```math
\begin{vmatrix}
\vec{v}_{1} \\
\vdots \\
\vec{v}_{i} \\
\vdots \\
\vec{v}_{n} \\
\end{vmatrix}
+
\begin{vmatrix}
\vec{v}_{1} \\
\vdots \\
\vec{w} \\
\vdots \\
\vec{v}_{n} \\
\end{vmatrix}
=
\begin{vmatrix}
\vec{v}_{1} \\
\vdots \\
\vec{v}_{i}+\vec{w} \\
\vdots \\
\vec{v}_{n} \\
\end{vmatrix}
```

計算で実際にそうなるか確かめる。後述の展開を使用する。

```math
\begin{vmatrix}
2 & -2 & 1 \\
0 & 3 & 2 \\
-1 & 1 & 4
\end{vmatrix}
=
2
\begin{vmatrix}
3 & 2 \\
1 & 4
\end{vmatrix}
-1
\begin{vmatrix}
-2 & 1 \\
3 & 2
\end{vmatrix}
=20+7=27 
```

```math
\begin{vmatrix}
2 & -2 & 1 \\
0 & -2 & -2 \\
-1 & 1 & 4
\end{vmatrix}
=
2
\begin{vmatrix}
-2 & -2 \\
1 & 4
\end{vmatrix}
-1
\begin{vmatrix}
-2 & 1 \\
-2 & -2
\end{vmatrix}
=-12-6=-18
```

```math
27-18=9
```

異なるベクトルを先に足して計算してみる。

```math
\begin{vmatrix}
2 & -2 & 1 \\
0 & 1 & 1 \\
-1 & 1 & 4
\end{vmatrix}
=
2
\begin{vmatrix}
1 & 1 \\
1 & 4
\end{vmatrix}
-1
\begin{vmatrix}
-2 & 1 \\
1 & 1
\end{vmatrix}
=6+3=9
```

### 2.7.5．3つ以上のベクトルで構成される行列式の展開
どの列を0と置いてみてもいいので3列目で書いてみる。

```math
\begin{vmatrix}
\vec{v}_{1} \\
\vec{v}_{2} \\
\vec{v}_{3}
\end{vmatrix}
=
\begin{vmatrix}
a & b & c \\
d & e & f \\
g & h & i
\end{vmatrix}
=
\begin{vmatrix}
a & b & c \\
d & e & 0 \\
g & h & 0
\end{vmatrix}
+
\begin{vmatrix}
a & b & 0 \\
d & e & f \\
g & h & 0
\end{vmatrix}
+
\begin{vmatrix}
a & b & 0 \\
d & e & 0 \\
g & h & i
\end{vmatrix}
=
c
\begin{vmatrix}
d & e\\
g & h
\end{vmatrix}
-f
\begin{vmatrix}
a & b\\
g & h
\end{vmatrix}
+i
\begin{vmatrix}
a & b\\
d & e
\end{vmatrix}
```

# 3．固有値
行列とベクトルを掛けることでベクトルの変換ができるが、向きや大きさが全く違うベクトルに変換されるのではなく、向きはそのままに大きさだけ変化することがある。
行列$A$とベクトル$\vec{x}$の積がスカラ$\lambda$とベクトル$\vec{x}$の積と同じになる時、向きはそのままに大きさだけ変化することとなり、この時のベクトル$\vec{x}$を固有ベクトル、スカラ$\lambda$を固有値と呼ぶ。
また、ベクトル$\vec{x}$が0または、逆行列が存在してはならない。

```math
A\vec{x}=\lambda\vec{x}
```

逆行列が存在してはならないので以下のような行列式となる。
$\lambda$はスカラ値なのでそのままでは行列$A$と計算できないため、単位行列を掛けて同じ行列の形にする。

```math
|A-{\lambda}I|=0
```

固有ベクトルはある特定の値になるというよりある特定の比率になっていると言える。
つまり、固有値は固有ベクトルに対して一意に定まるが固有ベクトルは一意に定まらず、比率が維持されていれば値は何でも良い。

固有ベクトルは以下のことが言える。

```math
\vec{x}=
\left(
\begin{array}{c}
x_{1} \\
x_{2} \\
\end{array}
\right)
の定数倍
```

計算の流れとしてはまず固有値が求まり、その後、固有値を元に固有ベクトルを求めることになる。

例）
以下の行列の固有値と固有ベクトルを求めてみる。

```math
A=
\left(
\begin{array}{cc}
2 & 3 \\
5 & 4 \\
\end{array}
\right)
```

スカラ$\lambda$に単位行列を掛けたものを引く。

```math
\left(
\begin{array}{cc}
2 & 3 \\
5 & 4 \\
\end{array}
\right)
-
\left(
\begin{array}{cc}
\lambda & 0 \\
0 & \lambda \\
\end{array}
\right)
=
\left(
\begin{array}{cc}
2-\lambda & 3 \\
5 & 4-\lambda \\
\end{array}
\right)
```

行列式を解く。

```math
(2-\lambda)(4-\lambda)-3\times5=0 
```

```math
\lambda^2-6\lambda+8-15=0
```

```math
(\lambda-7)(\lambda+1)=0
```

```math
\lambda=7 or \lambda=-1
```

固有値は7と-1だと分かる。
まず$\lambda=7$の固有ベクトルを求めてみる。

```math
\left(
\begin{array}{cc}
2 & 3 \\
5 & 4 \\
\end{array}
\right)
-
\left(
\begin{array}{cc}
7 & 0 \\
0 & 7 \\
\end{array}
\right)
=
\left(
\begin{array}{cc}
-5 & 3 \\
5 & -3 \\
\end{array}
\right)
```

```math
\left(
\begin{array}{cc}
-5 & 3 \\
5 & -3 \\
\end{array}
\right)
\left(
\begin{array}{cc}
x_{1} \\
x_{2} \\
\end{array}
\right)
```

```math
5x_{1}-3x_{2}=0
```

```math
5x_{1}=3x_{2}
```

```math
\vec{x}=
\left(
\begin{array}{cc}
\frac{3}{5} \\
1 \\
\end{array}
\right)
```

次に$\lambda=-1$の固有ベクトルを求めてみる。

```math
\left(
\begin{array}{cc}
2 & 3 \\
5 & 4 \\
\end{array}
\right)
-
\left(
\begin{array}{cc}
-1 & 0 \\
0 & -1 \\
\end{array}
\right)
=
\left(
\begin{array}{cc}
3 & 3 \\
5 & 5 \\
\end{array}
\right)
```

```math
\left(
\begin{array}{cc}
3 & 3 \\
5 & 5 \\
\end{array}
\right)
\left(
\begin{array}{cc}
x_{1} \\
x_{2} \\
\end{array}
\right)
```

```math
x_{1}+x_{2}=0 
```

```math
x_{1}=-x_{2}
```

```math
\vec{x}=
\left(
\begin{array}{cc}
1 \\
-1 \\
\end{array}
\right)
```

## 3.1．固有値分解
正方行列$A$を固有値を対角線上に並べた行列$\Lambda$、固有ベクトルを並べた行列$V$、固有ベクトルを並べた行列の逆行列$V^{-1}$に分解すること。
固有値分解すると、同じ行列を何度も掛ける場合に計算が楽になったり、複数の行列から類似点が分かったりする。

```math
\Lambda=
\left(
\begin{array}{ccc}
\lambda_{1} & & \\
 & \lambda_{2} & \\
 & & \ddots \\
\end{array}
\right)
```

```math
V=
\left(
\begin{array}{ccc}
\vec{v}_{1} & \vec{v}_{2} & \cdots \\
\end{array}
\right)
```

$AV=V\Lambda$の関係となるため、式変形すると$A=V{\Lambda}V^{-1}$となり、行列を分解することができる。

固有値、固有ベクトルの計算に使った行列を使って固有値分解してみる。
※逆行列の計算は省略する。

```math
\left(
\begin{array}{cc}
2 & 3 \\
5 & 4 \\
\end{array}
\right)
=
\left(
\begin{array}{cc}
\frac{3}{5} & 1 \\
1 & -1 \\
\end{array}
\right)
\left(
\begin{array}{cc}
7 & 0 \\
0 & -1 \\
\end{array}
\right)
\left(
\begin{array}{cc}
-\frac{4}{7} & \frac{3}{7} \\
\frac{5}{7} & -\frac{2}{7} \\
\end{array}
\right)
```

# 4．特異値分解
正方行列に対してのみ可能な固有値分解に対して、この特異値分解は長方形の形をした長方行列に対して行える分解方法。

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

このような単位ベクトル$\vec{v}$, $\vec{u}$があるなら特異値分解でき、以下のように表す。

```math
M=USV^{T} \\
M^{T}=VS^{T}U^{T}
```

$U$, $V$は直交行列($A^{T}=A^{-1}$)

上記の式の積は以下となる。

```math
MM^{T}=USV^{T}VS^{T}U^{T}=USS^{T}U^{T}
```

長方行列$MM^{T}$の積は正方行列となるため、固有値分解しているとの同じ。
$SS^{T}=I$で$\Lambda$、直交行列である$U^{T}$は$U^{T}=U^{-1}$となる。

これについては↓みたいな適当な値で計算してみようとしたものの$M^{T}M$の固有ベクトルがなんかとても細かい数字になったのでここでは割愛し、演習問題で復習するものとします。

```math
\left(
\begin{array}{ccc}
1 & 2 & 2 \\
2 & 2 & 1 \\
\end{array}
\right)
```

## 4.1．特異値分解の利用例
例えば画像の場合、特異値の小さい値から取り除いていくことで画像の圧縮をしたり、特異値から画像が類似しているか判断したりすることができる。

# X．ラビットチャレンジとは
ラビットチャレンジとは、日本ディープラーニング協会認定の講座プログラムの1つ。
E資格を受験するためにはこのラビットチャレンジ等、いずれかの講座プログラムを修了しなければならない。

ラビットチャレンジの特徴は「現場で潰しが効くディープラーニング講座」の通学講座録画ビデオを編集した教材を使用した自習スタイルであるという点。
サポートは他の講座より少なく、受け身ではなく自主的に学んでいく姿勢でなければ進められないが、その分、他の講座に比べると安価であり、手が出しやすい。
ある程度知識がある人、自力で頑張るぞというガッツのある人向けではないかと感じる。

![bnr_jdla.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389699/bce66671-a2f5-a7f9-de6f-3f87e15c253b.png)