はじめに
日本ディープラーニング協会の Deep Learning 資格試験(E 資格)の受験に向けて、調べた内容をまとめていきます。
代数のなりたち
線形代数とは、線形という言葉から幾何的な要素と代数的な要素から成り立つ。
幾何的とは、まっすぐなものを扱う。
代数的とは、連立方程式をの解や性質を扱う。
演算規則
和
同じ次元のベクトルに対して足し算を行う。
\begin{aligned}
\left(
\begin{array}{c}
x_1 \\
x_2 \\
\vdots \\
x_n
\end{array}
\right)
+
\left(
\begin{array}{c}
y_1 \\
y_2 \\
\vdots \\
y_n
\end{array}
\right)
=
\left(
\begin{array}{c}
x_1 + y_1 \\
x_2 + y_2 \\
\vdots \\
x_n + y_n
\end{array}
\right) \\
\end{aligned}
スカラー倍
任意の定数cに対して、ベクトルをかける。
\begin{aligned}
c
\left(
\begin{array}{c}
x_1 \\
x_2 \\
\vdots \\
x_n
\end{array}
\right)
=
\left(
\begin{array}{c}
cx_1 \\
cx_2 \\
\vdots \\
cx_n
\end{array}
\right) \\
\end{aligned}
行列式
Aの行列式は,\det A や ∣A∣ などとかく。
2次元正方行列の行列式
\begin{aligned}
\left|
\begin{array}{c}
a_{11} & a_{12} \\
a_{21} & a_{22} \\
\end{array}
\right|
= a_{11}a_{22}-a_{12}a_{21}
\end{aligned}
単位行列
n \times n 次元の単位行列は以下のような行列である。
行列式が 0 ではないとき、逆行列が存在する。
I =
\begin{pmatrix}
1 & 0 & \dots & 0 \\
0 & 1 & \dots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \dots & 1 \\
\end{pmatrix}
例えば 2×2 次元の単位行列を用いると、以下のような計算ができる。
I
\begin{pmatrix}
2 \\
3
\end{pmatrix}
=
\begin{pmatrix}
1 & 0 \\
0 & 1 \\
\end{pmatrix}
\begin{pmatrix}
2 \\
3
\end{pmatrix}
=
\begin{pmatrix}
2 \\
3 \\
\end{pmatrix}
逆行列
\begin{aligned}
A = \left(
\begin{array}{cc}
a & b \\[6px]
c & d \\[6px]
\end{array}
\right)
\end{aligned}
に対して、ad-bc \neq 0のとき、(※このとき、Aは「正則行列」)
\begin{aligned}
A^{-1} = \frac{1}{ad-bc}
\begin{array}{cc}
d & -b \\
-c & a
\end{array}
\end{aligned}
を 行列 A の逆行列 と呼び、
を満たす。
ここで、Iは単位行列である。また、この例ではAは 2 \times 2 だが、任意の n \times n 次元の正方行列(n \geqq 2)に対して逆行列が存在しうる。
ノムル
L_1ノムル
ベクトル\bar{x}=(x_1, \dots,x_n)~TのL_1ノムルは、
\begin{aligned}
||x||_1 = \sum_{i=1}^n |x_i|
\end{aligned}
で定義される。
L_1ノムルは、絶対誤差や特徴量にスパース性を誘導して特徴選択したい場合の正規化などに用いられる。
L_2ノムル
ベクトル\bar{x}=(x_1, \dots,x_n)~TのL_2ノムルは、
\begin{aligned}
||x||_2 = \sqrt{\sum_{i=1}^n x_i^2}
\end{aligned}
で定義される。
L_2ノムルの二乗二乗誤差や、単にモデルが複雑になり、過剰適合(過学習)を引き起こすことを避けるための正規化項として用いられる。
L_{\infty}ノムル
\begin{aligned}
||x||_{\infty} = max_{i} |x_i|
\end{aligned}
連立方程式
参考:
https://youtu.be/Da73Ra7gWKU
連立方程式は行列を用いて表すこともできる。
\begin{aligned}
\begin{cases}
2 x_1 - 2 x_2 &= 4 \\[6px]
3 x_1 + 4 x_2 &= -8 \\[6px]
\end{cases}
\end{aligned}
もっとシンプルにA\vec{x}=\vec{b}という形式で記載したい。
吐き出し法で計算する。
\begin{aligned}
\left(
\begin{array}{cc}
2 & -2 \\
3 & 4 \\
\end{array}
\right)
\left(
\begin{array}{c}
x_1 \\
x_2 \\
\end{array}
\right)
=
\left(
\begin{array}{c}
4 \\
-8 \\
\end{array}
\right) \\
\end{aligned}
1行目の1列目を1にする。(1行目のxの係数を1にする。)
1行目に \frac{1}{2} 倍にする : \left( \begin{array}{cc} \frac{1}{2} & 0 \\ 0 & 1 \\ \end{array}\right) を左からかける。
\begin{aligned}
\left(
\begin{array}{cc}
\frac{1}{2} & 0 \\
0 & 1 \\
\end{array}
\right)
\left(
\begin{array}{cc}
2 & -2 \\
3 & 4 \\
\end{array}
\right)
\left(
\begin{array}{c}
x_1 \\
x_2 \\
\end{array}
\right)
&=
\left(
\begin{array}{cc}
\frac{1}{2} & 0 \\
0 & 1 \\
\end{array}
\right)
\left(
\begin{array}{c}
4 \\
-8 \\
\end{array}
\right) \\[12px]
\left(
\begin{array}{cc}
1 & -1 \\
3 & 4\\
\end{array}
\right)
\left(
\begin{array}{c}
x_1 \\
x_2 \\
\end{array}
\right)
&=
\left(
\begin{array}{c}
2 \\
-8\\
\end{array}
\right) \\
\end{aligned}
2行目の1列目を0にする。(2行目のxの係数を0にする。)
2行目に1行目の -3 倍を加える : \left(\begin{array}{cc}1 & 0 \\-3 & 1 \\\end{array}\right) を左からかける。
\begin{aligned}
\left(
\begin{array}{cc}
1 & 0 \\
-3 & 1 \\
\end{array}
\right)
\left(
\begin{array}{cc}
1 & -1 \\
3 & 4 \\
\end{array}
\right)
\left(
\begin{array}{c}
x_1 \\
x_2 \\
\end{array}
\right)
&=
\left(
\begin{array}{cc}
1 & 0 \\
-3 & 1 \\
\end{array}
\right)
\left(
\begin{array}{c}
2 \\
-8 \\
\end{array}
\right) \\[12px]
\left(
\begin{array}{cc}
1 & -1 \\
0 & 7 \\
\end{array}
\right)
\left(
\begin{array}{c}
x_1 \\
x_2 \\
\end{array}
\right)
&=
\left(
\begin{array}{c}
2 \\
-14 \\
\end{array}
\right) \\
\end{aligned}
2行目の2列目を1にする。(2行目のyの係数を1にする。)
2行目に \frac{1}{7} 倍にする : \left( \begin{array}{cc} 1 & 0 \\ 0 & \frac{1}{7} \\ \end{array}\right) を左からかける。
\begin{aligned}
\left(
\begin{array}{cc}
1 & 0 \\
0 & \frac{1}{7} \\
\end{array}
\right)
\left(
\begin{array}{cc}
1 & -1 \\
0 & 7 \\
\end{array}
\right)
\left(
\begin{array}{c}
x_1 \\
x_2 \\
\end{array}
\right)
&=
\left(
\begin{array}{cc}
1 & 0 \\
0 & \frac{1}{7} \\
\end{array}
\right)
\left(
\begin{array}{c}
2 \\
-14 \\
\end{array}
\right) \\[12px]
\left(
\begin{array}{cc}
1 & -1 \\
0 & 1 \\
\end{array}
\right)
\left(
\begin{array}{c}
x_1 \\
x_2 \\
\end{array}
\right)
&=
\left(
\begin{array}{c}
2 \\
-2 \\
\end{array}
\right) \\
\end{aligned}
1行目の2列目を0にする。(1行目のyの係数を0にする。)
1行目に2行目の 1 倍を加える : \left(\begin{array}{cc}1 & 1 \\0 & 1 \\\end{array}\right) を左からかける。
\begin{aligned}
\left(
\begin{array}{cc}
1 & 1 \\
0 & 1 \\
\end{array}
\right)
\left(
\begin{array}{cc}
1 & -1 \\
0 & 1 \\
\end{array}
\right)
\left(
\begin{array}{c}
x_1 \\
x_2 \\
\end{array}
\right)
&=
\left(
\begin{array}{cc}
1 & 1 \\
0 & 1 \\
\end{array}
\right)
\left(
\begin{array}{c}
2 \\
-2 \\
\end{array}
\right) \\[12px]
\left(
\begin{array}{cc}
1 & 0 \\
0 & 1 \\
\end{array}
\right)
\left(
\begin{array}{c}
x_1 \\
x_2 \\
\end{array}
\right)
&=
\left(
\begin{array}{c}
0 \\
-2 \\
\end{array}
\right) \\
\end{aligned}
行基本変形
i行目を c 倍する
Q_{i,c} = \left(
\begin{array}{ccccccc}
1 & & & & & & \\
& \ddots & & & & & \\
& & 1 & & & & & \\
& & & c & & & & \\
& & & & 1 & & & \\
& & & & & \ddots & \\
& & & & & & 1 \\
\end{array}
\right)
s 行目に t 行目の c 倍を加える
R_{s,t,c} = \left(
\begin{array}{ccccccc}
1 & & & & & & \\
& \ddots & & & & & \\
& & 1 & & c & & & \\
& & & \ddots & & & & \\
& & & & 1 & & & \\
& & & & & \ddots & \\
& & & & & & 1 \\
\end{array}
\right)
p 行目に q 行目を入れ替える
P_{p,q} = \left(
\begin{array}{ccccccc}
1 & & & & & & \\
& \ddots & & & & & \\
& & 0 & & 1 & & & \\
& & & \ddots & & & & \\
& & 1 & & 0 & & & \\
& & & & & \ddots & \\
& & & & & & 1 \\
\end{array}
\right)
固有値分解
ある実数を正方形にならべて作られた行列 A が固有値 \lambda_1 , \lambda_2 ,・・・と固有ベクト \vec{v}_1 \vec{v}_2 ,・・・を持ったとする。この固有値を対角線上に並べた行列(それ以外の成分は 0)
\begin{aligned}
\Lambda = \left(
\begin{array}{c}
\lambda_1 & & \\
& \lambda_2 & \\
& & \ddots \\
\end{array}
\right)
\end{aligned}
固有値\Lambdaの行列に対応する固有ベクトルを並べた行列
\begin{aligned}
V = \left(
\begin{array}{c}
v_1 & v_2 & \ldots \\
\end{array}
\right)
\end{aligned}
を用意した時、それらは
\begin{aligned}
AV = V \Lambda
\end{aligned}
と関係付けられる。したがって、
\begin{aligned}
A = V \Lambda V^{-1}
\end{aligned}
と変形できる。
このように正方形の行列を上述のような3つの行列の席に変換することを固有値分解という。
固有値、固有ベクトル
ある行列 A に対して,以下のような式が成り立つような,特殊なベクトル \vec{x} と,右辺の係数 \lambda がある。
A\vec{x} = \lambda\vec{x}
行列 A とその特殊なベクトル \vec{x} の積は,ただのスカラーの数 \lambda とその特殊なベクトル \vec{x} との積と同じ値になる。
この特殊なベクト\vec{x} とその係数 \lambda を,行列 A に対する,固有ベクトル,固有値という。
例
A = \left(\begin{array}{cc}1 & 4 \\2 & 3 \\\end{array}\right) の固有値,固有ベクトルを求めよ
固有値の求め方
固有値:\lambda、固有ベクトル:\vec{x}を求める
\begin{aligned}
A \vec{x} &= \lambda \vec{x} \\[8pt]
(A - \lambda I)\vec{x} &= \vec{0}
\end{aligned}
\vec{x} \neq \vec{0}より
\begin{aligned}
|A - \lambda I| &= 0 \\[12pt]
\left|
\begin{array}{cc}
1 & 4 \\
2 & 3 \\
\end{array}
\right| - \lambda
\left|
\begin{array}{cc}
1 & 0 \\
0 & 1 \\
\end{array}
\right| &= 0 \\[12pt]
\left|
\begin{array}{cc}
1 - \lambda & 4 \\
2 & 3 - \lambda \\
\end{array}
\right| &= 0 \\[12pt]
(1 - \lambda)(3 - \lambda) - 4 \times 2 &= 0 \\[12pt]
(\lambda^2 - 4 \lambda + 3) -8 &= 0 \\[12pt]
\lambda^2 - 4 \lambda -5 &= 0 \\[12pt]
(\lambda + 1)(\lambda - 5) &= 0
\end{aligned}
つまり、固有値\lambda = -1 \, or \, 5 となる。
固有ベクトルを求め方
\lambda = 5 の時、(A - \lambda I)\vec{x} = \vec{0} から
\begin{aligned}
A \vec{x} &= \lambda \vec{x} \\[8pt]
\left(
\begin{array}{cc}
1 & 4 \\
2 & 3 \\
\end{array}
\right)
\left(
\begin{array}{c}
x_1 \\
x_2 \\
\end{array}
\right)
&= 5
\left(
\begin{array}{c}
x_1 \\
x_2 \\
\end{array}
\right) \\[12pt]
\end{aligned}
\begin{cases} x_1 + 4 x_2 = 5 x_1 \\[4pt] 2 x_1 + 3 x_2 = 5 x_2 \\ \end{cases}となり、\begin{cases} -4 x_1 + 4 x_2 = 0 \\[4pt] 2 x_1 + -2 x_2 = 0 \\ \end{cases}
→x_1 = x_2が求まる。
\lambda = -1 の時、(A - \lambda I)\vec{x} = \vec{0} から
\begin{aligned}
A \vec{x} &= \lambda \vec{x} \\[8pt]
\left(
\begin{array}{cc}
1 & 4 \\
2 & 3 \\
\end{array}
\right)
\left(
\begin{array}{c}
x_1 \\
x_2 \\
\end{array}
\right)
&= -1
\left(
\begin{array}{c}
x_1 \\
x_2 \\
\end{array}
\right) \\[12pt]
\end{aligned}
\begin{cases} x_1 + 4 x_2 = -1 x_1 \\[4pt] 2 x_1 + 3 x_2 = -1 x_2 \\ \end{cases}となり、
\begin{cases} 2 x_1 + 4 x_2 = 0 \\[4pt] 2 x_1 + 4 x_2 = 0 \\ \end{cases}
→ x_1 = -2x_2が求まる。
特異値分解
固有値分解は正方行列に対して適用できるものだった。これを任意の m \times n 行列に対して分解できるようにしたものが、特異値分解である。
あるm \times n行列A(m \neq n)に対し、A^Tは m \times n 行列になる。これらに対し、
\begin{aligned}
A \vec{v} &= S \vec{u} \\
A^T \vec{u} &= S \vec{v}
\end{aligned}
を満たすような、2 種類のベクトル\vec{v}と\vec{u}が存在するとする。
このような\vec{v}と\vec{u}を並べた行列をVとUとし、Sを対角に並べた行列を\Sigmaとする。
このとき、上式を変形すると、
\begin{aligned}
AV &= U \Sigma \\
A &= U \Sigma V^{-1} \\
\end{aligned}
同様に、
\begin{aligned}
A^T U &= V\Sigma^T \\
A^T &= V \Sigma^T U^{-1} \\
\end{aligned}
である。
AA^{-1}を固有値分解すると、左特異ベクトルと特異値の2乗が求まる。
\begin{aligned}
AA^T &= U \Sigma V^{-1} V \Sigma^T U^{-1} \\
&= U \Sigma \Sigma^T U^{-1}
\end{aligned}
A^TAを固有値分解すると、右特異ベクトルと特異値の2乗が求まる。
\begin{aligned}
A^T A &= V \Sigma^T U^{-1} U \Sigma V^{-1} \\
&= V \Sigma^T \Sigma V^{-1}
\end{aligned}
この式を見ると、AA^Tは m \times m の正方行列、A^T Aは n \times n の正方行列であるので、これらの行列に対して、固有値分解が行える。
このとき、AA^Tを固有値分解して得られる固有値が元の行列Aの特異値の二乗、固有ベクトル(Uの列ベクトル)が左特異ベクトルと呼ばれる。
逆に、A^T Aを固有値分解して得られる固有ベクトル(Vの列ベクトル)は右特異ベクトルと呼ばれる。
この特異値分解を用いれば、任意の m \times n 行列に対して、固有値分解と似たような形で特異値と特異ベクトルを計算し、それらのみで元の行列を表すことが可能である。
いろいろな距離
マンハッタン距離
- 実数ベクトルx = (x_{1}, \cdots, x_{n})^Tとy = ( y_{1}, \cdots, y_{n})^Tに対して下記の式で与えられる距離
- 差の絶対値の総和
d(x, y) = \sum_{i=1}^{n}|x_{i} - y_{i}|
ユークリッド距離
- 実数ベクトルx = (x_{1}, \cdots, x_{n})^Tとy = ( y_{1}, \cdots, y_{n})^Tに対して下記の式で与えられる距離
- 差を二乗した総和の平方根
d(x, y) = \sqrt{\sum_{i=1}^{n} (x_{i} - y_{i})^2}
マハラノビス距離
- 実数値ベクトルx, yが共分散行列\sumが既知の同一の確率分布に従うとき下記の式で与えられる
- 同一の確率分布に従うと仮定される 2 つのベクトルの類似度の指標
D(x, y) = \sqrt{(x-y)^T \sum^{-1} (x_{i} - y_{i})}
Discussion