てんぺるのぶろぐ

IT関連のこと、体験談、備忘録など。文系エンジニア、もがきます。

機械学習-数学学習メモ「行列・線形代数」

機械学習では最適化問題がよく登場しますが、それを数式にして解く際に行列が必要になってきます。

今回はそんな機械学習に必須ツールである行列についてまとめます。
中でも「逆行列固有値、対角化、定値性」に焦点を当てていきたいと思います。

まずはこの一冊から 意味がわかる線形代数 (BERET SCIENCE)

まずはこの一冊から 意味がわかる線形代数 (BERET SCIENCE)

をメインで参考にしました。

行列とは

複数の方程式をスッキリ表現できる強力なツールです。(雑)

例えば、
 \displaystyle ax+by=p
 \displaystyle cx+dy=q

という2つの方程式を

 \displaystyle A=\begin{pmatrix} a&b \\ c&d \end{pmatrix}   X=\begin{pmatrix} x \\ y \end{pmatrix}   P=\begin{pmatrix} p \\ q \end{pmatrix} とすると、

 \displaystyle AX=Pと表現できます。(すっきり便利~)

行列の演算

wiki参照(雑)
行列 - Wikipedia

逆行列

逆行列とは

任意のn次正方行列Aに対して

 \displaystyle AB=BA=E (Eは単位行列

となるような行列BをAの逆行列といい、 \displaystyle B=A^{-1}と表します。

また、上記の行列Aのように逆行列をもつ行列を正則行列を呼びます。

逆行列は割り算(逆数にしてかける)のような役割を果たすことが分かると思います。

逆行列を持つ条件

 \displaystyle detA \neq 0 が条件です。(detAはAの行列式

計算方法からも分かるように、任意の行列Aの逆行列はdetAが分母になるため、 \displaystyle detA \neq 0が成り立つ必要があります。

固有値

固有値とは

n次正方行列Aに対して、

 \displaystyle A\vec{p}=\lambda\vec{p} \displaystyle \vec{p} \in R^{n} , \vec{p} \neq 0 ,  \lambdaは実数 )

を満たす \displaystyle \lambda固有値 \displaystyle \vec{p}固有ベクトルと言います。

基本的にn次正方行列のとき、全部でn個の固有値が存在します。(重解なども含めて)

固有値の計算方法

固有方程式  \displaystyle det(A-\lambda E)=0 を解きます。

例題は以下参照
固有値,固有ベクトルの求め方

固有方程式の導出は以下の通り。

 \displaystyle A\vec{p}=\lambda\vec{p}
 \displaystyle A\vec{p}=\lambda E\vec{p}
 \displaystyle A\vec{p} - \lambda E\vec{p} = 0
 \displaystyle (A - \lambda E)\vec{p} = 0

 \displaystyle (A - \lambda E) = B とすると、 \displaystyle B\vec{p} = 0

ここで、Bが逆行列を持つとすると、
 \displaystyle B^{-1}B\vec{p} = \vec{p} = 0となり、 \displaystyle \vec{p} \neq 0に矛盾

したがって、Bは逆行列を持てない。つまり、
 \displaystyle det(A - \lambda E) = 0 を満たす必要がある。

対角化

対角化とは

任意の行列を、固有ベクトルを成分にもつ行列を取り替え行列として用いることで、固有値を成分にもつ対角行列に変換することです。

式で表すと

 \displaystyle P^{-1}AP=D (Aは任意の行列 , Pは正則行列固有ベクトルを成分) , Dは対角行列(固有値を成分))

具体例

 \displaystyle A=\begin{pmatrix} 4&1 \\ 2&3 \end{pmatrix} を対角化する。

固有値は2と5
固有ベクトルはそれぞれ \displaystyle \vec{p_1} = \begin{pmatrix} 1 \\ -2 \end{pmatrix} \displaystyle \vec{p_2} = \begin{pmatrix} 1 \\ 1 \end{pmatrix}

 \displaystyle P = \begin{pmatrix} 1&1 \\ -2&1 \end{pmatrix} ,  \displaystyle D = \begin{pmatrix} 2&0 \\ 0&5 \end{pmatrix}とおくと、

 \displaystyle P^{-1}AP=D となる。

対角化の嬉しいところ

1.行列の変換の中でも、最も簡単な表現の行列(対角行列は計算しやすい)へと変換する点。

2. A^{n}が計算できる点。
 \displaystyle P^{-1}AP=D の両辺をn乗して整理すると、 \displaystyle A^{n}=PD^{n}P^{-1}となります。

対角行列Dのn乗は簡単に計算できるのでAのn乗も楽勝に求められます。n乗の計算が楽という対角行列ならではの恩恵です。

補足
Aが対称行列(エルミート行列)のとき,直交行列で対角化可能という性質があります。

これがめっちゃよく登場します。以下参照です。
対称行列の固有値と固有ベクトルの性質の証明 | 高校数学の美しい物語

定値性

定義はwiki参照です。ぶっちゃけ自分自身よく分かってません。
行列の定値性 - Wikipedia

機械学習では凸最適化問題を解く際にヘッセ行列が登場し、その定値性を調べたりなんかします。

ちなみに固有値を用いた定値性の調べ方は以下の通りです。

1.すべての固有値λが正値  λ > 0 ⇔ 行列 A は正定値行列
2.すべての固有値λが非負値  λ ≧ 0 ⇔ 行列 A は半正定値行列
3.すべての固有値λが負値  λ < 0 ⇔ 行列 A は負定値行列
4.すべての固有値λが非正値  λ ≦ 0 ⇔ 行列 A は半負定値行列
5.固有値に正値と負値が混在する ⇔ 行列 A は不定値行列

今回はここまで

おつかれさまです。

さいごにキノボリカンガルーの画像を置いておきます。癒されてください。
f:id:temper-u:20171214135624p:plain
f:id:temper-u:20171214135704p:plain
f:id:temper-u:20171214135741p:plain

おしまい。