まいこーmemog

生きづらいとき人の言葉で生き返るので,自分も言葉にしてみる.[memo+blog]

線形代数のおいしいところをおさらいする

 人工知能の流行で,線形代数を勉強する人が増えてきた.

人工知能の流行で,線形代数を勉強する人が増えている.

僕自身,数年前に学んだだけなので忘れている部分も多いが,

現在数学系専攻ということで少し復習をした.

 

実装面の有益な情報や,正確な一見小難しそうな内容はたくさんの優秀な方々が

本やネット上に公開されている.

 

そこで僕は線形代数の工学応用に関して,基本で一番大事だと思う内容を

噛み砕いて簡単に,ここにおさらいしておこうと思う.

 

 

線形代数の基本,行列とは何か

行列とは数の要素を,行と列の 2 次元に配列したものである.

\begin{align} A= \begin{pmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{pmatrix} \end{align}

 

要素の横の並びを行,縦の並びを列という.

上の行列Aの要素の添字は,1つ目が行番号,2つ目が列番号を表している.


行列は線型空間において写像を表す.

工学的には行列はシステムだと考えれば良い.

行と列はそれぞれ

  • 列数(横幅):「入力」の次元数
  • 行数(縦幅):「出力」の次元数

を表している.

 

つまり,

{\displaystyle n \times m}行列は,{\displaystyle n}次元空間(入力)を{\displaystyle m}次元空間(出力)に移す写像である.

と言える.

 

ちなみに,線型空間というのも本当は定義すべきだが,してもややこしい.

よってここでは,ベクトルの当たり前の計算ができる非常に空間だと思って欲しい.

 

行列と固有値

行列を考える際に,セットで考えられるのは固有ベクトル固有値だ.

この2つは名前の通り,行列の固有な,本質的な量だと言える.

行列にとっての,名前やIDのようなものだと考えてもいいかもしれない.

 

少し真面目に,数学的な説明を書いてみようと思う.

 

ある正方行列{\displaystyle A}{\displaystyle \vec{0}}でないベクトル{\displaystyle \vec{x}},あるスカラー{\displaystyle \lambda}の間に

\begin{align}
A \vec{x} =\lambda \vec{x}
\end{align}

が成り立つとき,{\displaystyle \vec{x}}固有ベクトル{\displaystyle \lambda}固有値という.

また,このような関係式を固有値問題と呼ぶ.

 

固有ベクトルは線形変換,つまり行列を用いた変換によって向きが変わらないベクトル

である.

 

ベクトルは「長さ」と「方向」を持つが,変わらないのは「方向」だけで良い.

長さは変わってもいい.

 

では,変わる「長さ」を指定するのはなにか.

それが固有値である.

つまり,

固有値は,線形変換によって変化する固有ベクトルの長さの倍率を表す数値

といえる.

 

固有ベクトルは,固有値に対応して計算される.

そのあたりの計算は次のページが見やすいので参考記事として貼っておく.

atarimae.biz

 

なんとなく,行列にとって固有だ,というのがわかったのではないだろうか.

 

行列の相似変形

行列には,固有ベクトル固有値が関わることを見た.

次は固有値が一致するような行列は,どんなものか見ようと思う.

 

行列{\displaystyle A}と同サイズの正方行列{\displaystyle S}を導入する.

ある行列{\displaystyle B}

\begin{align}
B=S^{-1}AS
\end{align}

をみたすとき,行列{\displaystyle A}{\displaystyle B}は相似であるという.

 

この相似な行列同士は,全く同じ固有値を持つ.

したがって,

この2つの行列はシステムとしての本質が変化していない事になる.

 

この事実が,僕の思う線形代数のおいしいところの重要ポイントになる.

 

行列の対角化とその工学的意味

ここが最も重要な部分だ.

先ほどの相似変形を思い出して欲しい.

 

正方行列{\displaystyle S}は,特に形を指定していなかった.

ならば,正方行列をうまく選べば,{\displaystyle A}と同じ固有値を持った

もっとシンプルな行列ができるかもしれない.

 

このアイデアについて詳しくみていこう.

 

まず,シンプルな形というのは対角行列のことだ.

対角行列とは

\begin{pmatrix}
a_1 & 0 & \cdots & 0 \\
0 & a_2 & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & a_n
\end{pmatrix}

こんな形の行列のことをいう.

 

次に,行列{\displaystyle A}をについて,正則行列{\displaystyle P}({\displaystyle P^{-1}}が存在するような行列)をうまく選び,

{\displaystyle P^{-1}AP}を対角行列にすることを行列の対角化という.

\begin{align}
A=
\begin{pmatrix}
a_{11} & a_{12} & \cdots & a_{1n} \\
a_{21} & a_{22} & \cdots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{n1} & a_{n2} & \cdots & a_{nn}
\end{pmatrix}
\Longrightarrow
P^{-1}AP=
\begin{pmatrix}
a_1 & 0 & \cdots & 0 \\
0 & a_2 & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & a_n
\end{pmatrix}
\end{align}

 

この変形が,工学的においしいところになる.

行列{\displaystyle A}は対角成分以外にも,成分を持つ.

したがって,なにか入力が来た場合,全ての入力が全ての出力に影響する.

 

しかし,対角化された行列の場合,

入力の各成分は,それぞれに対応した出力成分にしか影響しない.

 

そして,先ほど述べたように相似変換された行列は,本質が同じである.

 

つまり,行列の対角化は,

複雑なシステム(行列)を,単純な複数のサブシステムに分ける操作

ということができる.

 

ここまで説明したが,やはり言葉は限度があるので,図を用意した.

下の図が,伝えたい内容の全てである.

f:id:maikocho:20181110234423p:plain

 

対角化によって,すっごくシンプルになっていることが一目瞭然だ.

 

まとめ

線形代数の面白いなと初めに思ったところがここだったので,

基礎的な内容も踏まえておさらいしてみた.

 

固有値計算の世界は,やり始めると鬱になるらしい.

シンプルなようで,応用まで考えると奥深く,僕もまだ全然応用はできない.

でも,最後の図は何か面白いな,と思う.

 

研究分野が固有値計算周りに近いが,

周辺の理論ばかりで実際に応用しようとしたことはまだない.

いつかしたいなぁ.