💬

Deep Learning資格試験 応用数学 線形代数

2021/12/31に公開

はじめに

日本ディープラーニング協会の 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 の逆行列 と呼び、

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

を満たす。
ここで、Iは単位行列である。また、この例ではA2 \times 2 だが、任意の n \times n 次元の正方行列(n \geqq 2)に対して逆行列が存在しうる。

ノムル

L_1ノムル

ベクトル\bar{x}=(x_1, \dots,x_n)~TL_1ノムルは、

\begin{aligned} ||x||_1 = \sum_{i=1}^n |x_i| \end{aligned}

で定義される。
L_1ノムルは、絶対誤差や特徴量にスパース性を誘導して特徴選択したい場合の正規化などに用いられる。

L_2ノムル

ベクトル\bar{x}=(x_1, \dots,x_n)~TL_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^Tm \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}を並べた行列をVUとし、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^Tm \times m の正方行列、A^T An \times n の正方行列であるので、これらの行列に対して、固有値分解が行える。

このとき、AA^Tを固有値分解して得られる固有値が元の行列Aの特異値の二乗、固有ベクトル(Uの列ベクトル)が左特異ベクトルと呼ばれる。
逆に、A^T Aを固有値分解して得られる固有ベクトル(Vの列ベクトル)は右特異ベクトルと呼ばれる。

この特異値分解を用いれば、任意の m \times n 行列に対して、固有値分解と似たような形で特異値と特異ベクトルを計算し、それらのみで元の行列を表すことが可能である。

いろいろな距離

マンハッタン距離

  • 実数ベクトルx = (x_{1}, \cdots, x_{n})^Ty = ( y_{1}, \cdots, y_{n})^Tに対して下記の式で与えられる距離
  • 差の絶対値の総和
d(x, y) = \sum_{i=1}^{n}|x_{i} - y_{i}|

ユークリッド距離

  • 実数ベクトルx = (x_{1}, \cdots, x_{n})^Ty = ( 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