Ccmmutty logo
Commutty IT
44 min read

【ハックしないE資格対策記-02-】~固有値分解って結局何なの?圏を突破しよう

https://cdn.magicode.io/media/notebox/c6f37f8c-291e-448a-9780-a5f4615e289b.jpeg
※本記事は過去にQiitaで投稿したものを再編集したものです。

【ご挨拶】こんにちは!ぬかさんエンジニアリングです。

本記事をクリックして下さってありがとうございます! 今回は、応用数学から線形代数について固有値分解を取り扱いたいと思います。 E資格のシラバスには線形代数の特異値分解のみが記載してありますが、いきなり特異値分解を理解しようとしても難しいかと思いますので、今回はその前段階として固有値分解を扱います。 E資格の参考書などで最初に出てきて何となく解いたけど意味はよく分かっていないなんて方は「結局何なの圏」を突破して遥か下方に見える固有値分解に向かって「固有値分解は○○だった。」とかガガーリンぶってのたまうのもいいかもしれません。 さらに、文系出身で線形代数にほとんど触れたことが無いという人でも十分理解できるように基礎から順番に説明していきます。私も文系で線形代数とは付き合って一年も経っていないのですが、順を追って学べば理解できますのでご安心ください。

【本シリーズの概要】

▼ハックしない"って何?
ハック/-Hack-は…
〔物事をうまくやるための〕こつ、アイデア [^1]
と言う意味を持っています。
この意味合いで、世の中には生活術や仕事術としての「○○ハック」という言葉が広がっていますよね。 塾や予備校で学ぶ受験対策術も「お受験ハック」です。”傾向と対策”など、大学入試の際に私もお世話になりました。 しかし、本シリーズではそういった対策術だけを記事にすることはありません。 ”E資格合格のための5つのコツ”とか”○○時間で合格できるE資格”とか”覚えておきたいコスパ最強10の公式”などは期待しないでください。 ディープラーニングについて頭の中に体系を作り上げていただける様に、記事の内容もコツコツと必要な知識を述べ、体系的に整理して使えるような形を目指して作っていきます。
それが【ハックしないE資格対策記】です。
▼なぜハックしないのか
何故なら、資格試験の合格はゴールではなくあくまで客観的な知識と技術の基準として存在するものであり、合格後に知識と能力を活かせるかの方が遥かに大切だからです。
ここで一般社団法人日本ディープラーニング協会の公式ホームページからE資格の目的に関する記述を引用します。
ご挨拶
人工知能の分野は、良くも悪くも、「人工知能の定義がない」ということに由来する特徴があります。さまざまな技術を取り込む寛容性がある一方で、なんでもかんでも人工知能と言ってしまうことができ、過剰期待を生みやすい性質もあります。だからこそ、人工知能の分野においては、ある一定の知識レベル・技術レベルの基準を作るということが大変重要と考えます。本協会では、初期の重要な活動としてディープラーニングに関する資格試験を実施したいと考えています。ユーザ企業やエンジニアが、一定の知識レベルを担保することで、地に足の着いた議論や事業開発ができるものと考えています。[^2]
E資格概要
ディープラーニングの理論を理解し、適切な手法を選択して実装する能力や知識を有しているかを認定する。[^3]
E資格が目的としていることは引用の通りで、要するにディープラーニングについての能力と知識レベルを客観的な基準で認定して、一定のレベルを担保した上で議論や事業開発が出来るようにすために実施されているのです。
この資格が、合格後にディープラーニングを議論や事業に活かしてもらうためにあると分かった上でもう一度考えてみると、やはりハックせずにコツコツとディープラーニングについての体系を組み立てて長期的に役立つ方向に向かった方が良いなと思いませんか。
概要を読んで良いコンセプトだと感じて下さった方は是非これからのシリーズを見届けていってもらえると嬉しいです。 また、訂正、アドバイス、追加の参考資料の提案などなど、この記事をより良いものにするコメントをして下さるセカンドクリエイターの皆様をお待ちしております。
また、コメントで盛り上げて頂けるとモチベーションに繋がりますのでよろしくお願い致します!

【今回のテーマ】~固有値分解のイメージと計算方法~

〔ファスト固有値分解〕

固有値分解の計算手順をサクッと確認したい方はこの章を参考にして下さい。
固有値、固有ベクトルとはなんぞ?と言う方は次章以降をじっくり読んで理解した上でこの章で確認していただくことをおすすめします。

◆基本の手順◆

  1. 固有値分解したい行列がnn次正方行列かを確認する
    固有値分解を適応できるのは正方行列のみなので、それ以外の行列には特異値分解を適応する
  2. 固有値分解とはnn次正方行列AAPΛP1PΛP^{-1}に分解する手法であることを確認する。
    ΛΛ :固有値を対角成分に持つnn次対角行列
    PP :固有ベクトルを列方向に並べたnn次の正方行列(逆行列が存在するので正則行列)
    P1P^{-1} :正則行列PPの逆行列
  3. 固有値λλnn個求めてΛΛを完成させる
    サラスの公式か余因子展開を使って固有方程式det(λIA)=0det(λI-A)=0を、固有値λλについて解く
    固有値に重解があった場合はnn個未満であることに注意
  4. 固有ベクトルu\boldsymbol{u}nn個求めてPPを完成させる
    各固有値それぞれについて、固有値を代入した固有方程式と文字で置いた固有ベクトルの同次連立一次方程式を行基本変形やクラメルの公式を使って解く
    重解については、重解の次数分だけ一次独立な固有ベクトルを取れるなら固有値分解可能だが、取れなければジョルダン標準形でアプローチする
  5. PPから逆行列P1P^{-1}を完成させる
    PPが二次正方行列であれば二次正方行列の逆行列の公式、三次正方行列以上であれば掃き出し法を使って逆行列を求める。
  6. 固有値分解の完成!
  7. PΛP1PΛP^{-1}を実際に計算してAAと等しくなるか確かめる。
固有値λλや固有ベクトルu\boldsymbol{u}は求まり次第順次ΛΛPPに穴埋めしていくとどの固有値がどの固有ベクトルに対応しているか分かりやすくなるのでおすすめします。

◆補足知識◆

  • 行列AAが対称行列の場合、PPは直交行列となりPPの逆行列P1P^{-1}は転置行列PTP^{T}と等しくなるため、逆行列を求める必要がない。
  • 固有ベクトルは自明でない解であり、任意定数を含んでいるので大きさの解が無限に存在するが、大きさ1のベクトルに限定することで1つの解を求めることができる。

〔固有値・固有ベクトル〕

固有値分解を理解するには固有値、固有ベクトルとは何かについて知っている必要があります。
ですので、じっくりと定義の理解とイメージの獲得をしていきましょう。

◆定義◆

固有値・固有ベクトルの定義は以下の通り。
nn次正方行列AAに対し、スカラーλλと零ベクトルでないnn項ベクトルu0\boldsymbol{u}≠0が、
Au=λuA\boldsymbol{u}=λ\boldsymbol{u}
を満たすときλλAAの固有値といい、u\boldsymbol{u}AAの固有値λλに関する固有ベクトルという。[^4]
  • スカラーλλ 実数(整数と差が1の整数と整数の間の全て) 3,0,-12,4.82,-1/2,0.3333・・・,π\pi等々
  • nn次正方行列AA 行と列の要素の数が等しい行列
2次正方行列=(abcd),3次正方行列=(abcdefghi)2次正方行列=\begin{pmatrix} a & b \\ c & d \\ \end{pmatrix} ,3次正方行列=\begin{pmatrix} a & b & c \\ d & e & f \\ g & h & i \\ \end{pmatrix}
  • n項ベクトルu\boldsymbol{u}:成分をn個持つ縦ベクトル
2項ベクトル=(x1x2),3項ベクトル=(x1x2x3)2項ベクトル=\begin{pmatrix} x_1 \\ x_2 \\ \end{pmatrix} ,3項ベクトル=\begin{pmatrix} x_1 \\ x_2 \\ x_3 \\ \end{pmatrix}

◆イメージ◆

00を原点とする座標表面上の位置ベクトルがu\boldsymbol{u}になる点Uの座標を(x1,x2)(x_1, x_2)とします。この時、u\boldsymbol{u}を上記のような縦ベクトルで表します。このx1,x2x_1, x_2をそれぞれ、ベクトルu\boldsymbol{u}xx成分、yy成分と言い、イメージしやすくするために成分表示するとこの様に表せます。
ベクトルuの成分表示
ベクトルが3項になれば成分が追加され、座標空間上に表せます。4項以上は図示できません。
ここまで見て理解した!という方は◆固有値の求め方◆まで読み飛ばしていただいてどうぞ!さっぱりだという方は順を追ってイメージを掴んでいきましょう。
固有値と固有ベクトルの定義を見ても正直言ってることは分かったけどだから何なんだ?と思いませんでしたか?私はそうでした。 そんなあなたにはこの項で固有値と固有ベクトルのイメージを理解していただきたいと思います。そこで、幾何的な意味について説明してきます。
と、その前に固有値と固有ベクトルのイメージを理解するには前提として平面上の一次変換を理解している必要があるので、もし初耳だったり曖昧だという方は下記にある◆一次変換◆をご覧頂いてから戻ってきてください。
それでは幾何的な意味ついて説明して参りましょう。
幾何的とは図形的と言ってもいいですが、その観点から固有値と固有ベクトルを捉えると、 nn次正方行列AAで一次変換しても方向が変わらないベクトルを固有ベクトル、固有ベクトルの大きさを一時変換後のベクトルに合わせるスカラーを固有値」 と言い表すことができます。
具体例を見れば一目瞭然なので順を追って説明していきます。
  • 非固有ベクトルの場合
    2次正方行列A=(4136)A=\begin{pmatrix}4 & 1 \\3 & 6 \\ \end{pmatrix}と適当なベクトルu=(21)\boldsymbol{u}=\begin{pmatrix}2 \\ 1 \\ \end{pmatrix} を用意します。
    ここでu\boldsymbol{u}AAで一次変換を行うと、結果はu=(912)\boldsymbol{u}=\begin{pmatrix}9 \\12 \\ \end{pmatrix}となります。
    イメージはこの通りです。
固有値・固有ベクトルの幾何的理解【非固有ベクトル】.drawio
一時変換後のベクトルは変換前と方向が異なるので、ベクトル(21)\bigl(\begin{smallmatrix}2 \\1 \\ \end{smallmatrix}\bigl)は行列AAの固有ベクトルではありません。
  • 固有ベクトルの場合
    2次正方行列A=(4136)A=\begin{pmatrix}4 & 1 \\ 3 & 6 \\ \end{pmatrix}とベクトルu=(13)\boldsymbol{u}=\begin{pmatrix}1 \\ 3 \\ \end{pmatrix}を用意します。
    ここでu\boldsymbol{u}AAで一次変換を行うと、結果はu=(721)\boldsymbol{u}=\begin{pmatrix}7 \\ 21 \\ \end{pmatrix}となります。 イメージはこの通りです。
固有値・固有ベクトルの幾何的理解【固有ベクトル】.drawio
一時変換後のベクトルは変換前と方向が同じであるので、ベクトル(13)\bigl(\begin{smallmatrix}1 \\ 3 \\ \end{smallmatrix}\bigl) は行列AAの固有ベクトルです。
  • 固有ベクトルに対する固有値
    ここで求めた固有ベクトル(721)\bigl(\begin{smallmatrix}7 \\ 21 \\ \end{smallmatrix}\bigl) は、変換前のベクトル(13)\bigl(\begin{smallmatrix}1 \\ 3 \\ \end{smallmatrix}\bigl) にスカラー77を掛けたベクトルだとも見て取れます。このスカラー77を固有ベクトルに対する固有値と言います。
ここまで読むと幾何的な固有値と固有ベクトルの意味がイメージできたのではないでしょうか。
今回の例では始めから固有ベクトルが分かっている状態でしたが、実際には行列AAの情報のみから解を導き出す必要があります。固有値の求め方が分かればそれが可能になります。それでは次項に進みましょう。

◆固有値の求め方◆

▽固有方程式の定義▽
nn次正方行列AAに対し、文字ttについての多項式
FA(t)=tIAF_A(t)=|tI-A|
AAの固有多項式という。また、ttについての方程式
FA(t)=0F_A(t)=0
AAの固有方程式という。[^4]
  • 固有方程式
    ttに関する方程式のこと。tは固有値λλのことであり、固有方程式を解くことで固有値λλが求められる。
▽イメージ▽
tIA|tI-A|は行列式det(tIA)det(tI-A)と同義であるため、ttλλであることと併せて
FA(λ)=det(λIA)=0F_A(λ)=det(λI-A)=0を解けば固有値が求められると書き換えられます。何故FA(λ)=0F_A(λ)=0を解けば固有値が求められるのかは、Au=λuA\boldsymbol{u}=λ\boldsymbol{u}を変形させればわかります。変形の過程はこの通りです。
Au=λu(λA)u=0u0よりdet(λIA)=0A\boldsymbol{u}=λ\boldsymbol{u}\\ (λ-A)\boldsymbol{u}=0\\ \boldsymbol{u}≠0より\\ det(λI-A)=0\\
一行目の式の左項を右項に移項してu\boldsymbol{u}で括ると二行目の式になります。二行目の式のu\boldsymbol{u}が零ベクトルであってはいけないことが〔固有値・固有ベクトル〕の◆定義◆に書かれているので、二行目の式が成り立つには(λA)(λ-A)が零である必要があります。よって行列式det(λA)=0det(λ-A)=0が成り立つλλを求めることになります。ここで、λλはスカラーなので行列式を解くにあたり単位行列IIを掛けてあげることに気を付けます。 単位行列IIは、対角成分に1を持っており、他の成分は全て0である行列のことです。実数に1をかけても値が変わらないように行列に単位行列をかけても行列の成分は変わりません。
※一行目の移項に関して、右項を左項に移行する場合は固有方程式がdet(AλI)=0det(A-λI)=0になります。どちらも内容は同じですが、参考書などによってどちらを使うか分かれるため要注意です。私はdet(AλI)=0det(A-λI)=0派なのでこれより下の文章では定義と見た目が異なることになりますがご了承ください。
▽固有方程式の求め方▽
ここまで説明が長くなりましたが、いよいよ計算方法の説明に入っていきます。 それでは具体例を使って計算していきましょう。
まずは先ほど〔固有値・固有ベクトル〕の◆イメージ◆固有ベクトルの場合で用いた 二次正方行列A=(4136)A=\begin{pmatrix}4 & 1 \\3 & 6 \\ \end{pmatrix}を用意します。
そして、固有方程式に代入してλλについて解きます。
det(AλI)=(4136)(λ00λ)=4λ10306λ=0det(A-λI)=\begin{vmatrix}\begin{pmatrix}4 & 1 \\3 & 6 \\ \end{pmatrix}-\begin{pmatrix}λ & 0 \\0 & λ \\ \end{pmatrix}\end{vmatrix}=\begin{vmatrix}4-λ & 1-0 \\3-0 & 6-λ \\ \end{vmatrix}=0
サラスの公式を使い行列式を解くと
(4λ)(6λ)(10)(30)=2410λ+λ23=λ210λ+21=(λ3)(λ7)=0(4-λ)(6-λ)-(1-0)(3-0) =24-10λ+λ^2-3 =λ^2-10λ+21 =(λ-3)(λ-7)=0
となり、よって固有値は λ=3,7λ=3,7 です。 この後、各固有値を使ってそれぞれの固有ベクトルを求めるためλ1=3λ2=7λ_1=3,λ_2=7と置きます。
実際に計算してみるとλλの解の数はほとんどの場合正方行列の次数と同じであることが分かります。
しかし、λλの解が重解になる場合には数が合わないことが有ります。その場合、重解であるλλから重解の次数分の一次独立な固有ベクトルが得られれば、その行列AAは固有値分解可能です。得られなければその行列AAは固有値分解不可です。これは、n×nn×nの正方行列においてnn本の一次独立な固有ベクトルが取れれば固有値分解が可能であるという性質に基づいています。この性質についての詳しい説明は非常に長くなるので本記事では取り扱いませんが、証明方法などが知りたければ「ヨビノリ」の線形代数シリーズ13講と14講を参考にしてください。

◆固有ベクトルの求め方◆

固有値が求められたら次に固有ベクトルを求めていきます。
固有ベクトルは nn次正方行列AAで一次変換しても方向が変わらないベクトル」 でしたが、求めた各固有値からどのように導けばよいのでしょうか。この項ではその方法を説明していきます。
結論、固有ベクトルはnn次正方行列AAの固有値λi(i=1,2,...,n)λ_{i}(i=1,2,...,n)に関する固有ベクトルを
uj=(xj1xjixjn)(j=1,2,...,n)\boldsymbol{u_{j}}=\begin{pmatrix} x_{j1} \\ \vdots \\ x_{ji} \\ \vdots \\ x_{jn} \\ \end{pmatrix}(j=1,2,...,n)
とおいて、同次連立一次方程式
(AλiI)uj=0(i=1,2,...,n)(j=1,2,...,n)(A-\lambda_{i} I)\boldsymbol{u_{j}}=0\\ (i=1,2,...,n)(j=1,2,...,n)
の自明でない解を求めればよいです。
同次連立一次方程式と自明ではない解について分からない方は下記の◆同次連立一次方程式◆をご覧頂いてから戻ってきてください。
それでは具体例を使って計算していきます。
引き続き〔固有値・固有ベクトル〕の◆イメージ◆固有ベクトルの場合で用いた A=(4136) A=\begin{pmatrix}4 & 1 \\3 & 6 \\ \end{pmatrix}について、前項で求めた固有値λ1=3λ2=7λ_1=3,λ_2=7を使って固有ベクトルを求めます。
まず、λ1=3λ_1=3の場合について計算します。
ここではu\boldsymbol{u}を一つ目の固有ベクトルとしてu1\boldsymbol{u_1}と表記し、(AλiI)u1=0(A-λ_{i}I)\boldsymbol{u_1}=0とします。 ここでλiλ_{i}33を代入すると
(AλiI)u1={(4136)(3003)}u1=(43103063)u1=(1133)u1=0(A-λ_{i}I)\boldsymbol{u_1}=\begin{Bmatrix}\begin{pmatrix}4 & 1 \\3 & 6 \\ \end{pmatrix}-\begin{pmatrix}3 & 0 \\0 & 3 \\ \end{pmatrix} \end{Bmatrix}\boldsymbol{u_1}=\begin{pmatrix}4-3 & 1-0 \\3-0 & 6-3 \\ \end{pmatrix}\boldsymbol{u_1}=\begin{pmatrix}1 & 1 \\3 & 3 \\ \end{pmatrix}\boldsymbol{u_1}=0
が求まり、
u1=(x11x12)\boldsymbol{u_1}=\begin{pmatrix}x_{11} \\x_{12} \\ \end{pmatrix}
なので
(AλiI)u1=(1133)(x11x12)=(x11+x123x11+3x12)=(00)(A-λ_{i}I)\boldsymbol{u_1}=\begin{pmatrix}1 & 1 \\3 & 3 \\ \end{pmatrix}\begin{pmatrix}x_{11} \\x_{12} \\ \end{pmatrix}=\begin{pmatrix}x_{11}+x_{12} \\3x_{11}+3x_{12} \\ \end{pmatrix}=\begin{pmatrix}0 \\0 \\ \end{pmatrix}
となります。行列を連立一次方程式に変換すると
x11+x12=0x_{11}+x_{12}=0
3x11+3x12=03x_{11}+3x_{12}=0
と表せて、x11x_{11}x12x_{12}について連立一次方程式を解くと固有ベクトルの成分が求められます。 解は自明ではない解であるため、任意定数を用いて
x11=cx12=c x_{11}=c \\x_{12}=-c \\
よって固有ベクトルは
u1=(x11x12)=(cc)=c(11)(ただしc0)\boldsymbol{u_1}=\begin{pmatrix}x_{11} \\x_{12} \\ \end{pmatrix}=\begin{pmatrix}c \\ -c \\ \end{pmatrix}=c\begin{pmatrix}1 \\ -1 \\ \end{pmatrix}(ただしc≠0)
任意定数はスカラー(実数)としてベクトルの外に出しています。
では、次にλ27λ_2=7の場合について計算します。
ここではu\boldsymbol{u}を二つ目のベクトルとしてu2\boldsymbol{u_2}で表記します。つまり、(AλI)u2=0(A-λI)\boldsymbol{u_2}=0\\とします。 ここでλλ77を代入すると
(AλI)u2={(4136)(7007)}u2=(47103067)u2=(3131)u2=0(A-λI)\boldsymbol{u_2}=\begin{Bmatrix}\begin{pmatrix}4 & 1 \\3 & 6 \\ \end{pmatrix}-\begin{pmatrix}7 & 0 \\0 & 7 \\ \end{pmatrix} \end{Bmatrix}\boldsymbol{u_2}=\begin{pmatrix}4-7 & 1-0 \\3-0 & 6-7 \\ \end{pmatrix}\boldsymbol{u_2}=\begin{pmatrix}-3 & 1 \\3 & -1 \\ \end{pmatrix}\boldsymbol{u_2}=0
が求まり、
u2=(x21x22)\boldsymbol{u_2}=\begin{pmatrix}x_{21} \\x_{22} \\ \end{pmatrix}
なので
(AλI)u2=(3131)(x21x22)=(3x21+x223x21x22)=(00)(A-λI)\boldsymbol{u_2}=\begin{pmatrix}-3 & 1 \\3 & -1 \\ \end{pmatrix}\begin{pmatrix}x_{21} \\x_{22} \\ \end{pmatrix}=\begin{pmatrix}-3x_{21}+x_{22} \\3x_{21}-x_{22} \\ \end{pmatrix}=\begin{pmatrix}0 \\0 \\ \end{pmatrix}\\
となります。行列を連立一次方程式に変換すると
3x21+x22=0-3x_{21}+x_{22}=0
3x21x22=03x_{21}-x_{22}=0
と表せて、x11x_{11}x12x_{12}について連立一次方程式を解くと固有ベクトルの成分が求められます。 解は自明ではない解であるため、任意定数を用いて
x21=cx22=3cx_{21}=c \\x_{22}=3c \\
よって固有ベクトルは
u2=(x21x22)=(c3c)=c(13)(ただしc0)\boldsymbol{u_2}=\begin{pmatrix}x_{21} \\x_{22} \\ \end{pmatrix}=\begin{pmatrix}c \\3c \\ \end{pmatrix}=c\begin{pmatrix}1 \\3 \\ \end{pmatrix}(ただしc≠0)
任意定数はスカラー(実数)としてベクトルの外に出しています。
ここまでの固有値と固有ベクトルの計算の解をまとめると、A=(4136)A=\begin{pmatrix}4 & 1 \\3 & 6 \\ \end{pmatrix}が持つ固有値λiλ_{i}λ1=3,λ1=7λ_1=3,λ_1=7 で、それぞれの固有ベクトルuj\boldsymbol{u}_{j}
u1=c(11),u2=c(13)\boldsymbol{u_1}=c\bigl(\begin{smallmatrix}1 \\ -1 \\ \end{smallmatrix}\bigl),\boldsymbol{u_2}=c\bigl(\begin{smallmatrix}1 \\3 \\ \end{smallmatrix}\bigl)
となります。
確認の計算をしてみると、
(4136)(11)=3(11)\begin{pmatrix}4 & 1 \\3 & 6 \\ \end{pmatrix}\begin{pmatrix}1 \\ -1 \\ \end{pmatrix}=3\begin{pmatrix}1 \\ -1 \\ \end{pmatrix}
Au=λuA\boldsymbol{u}=λ\boldsymbol{u}
(4136)(13)=7(13)\begin{pmatrix}4 & 1 \\3 & 6 \\ \end{pmatrix}\begin{pmatrix}1 \\3 \\ \end{pmatrix}=7\begin{pmatrix}1 \\3 \\ \end{pmatrix}
で正しく計算できていることが分かります。
固有値・固有ベクトルの計算は以上ですが、次数が三次以上になると同次連立一次方程式を解くのが難しくなってくるため、より確実な方法で解く方法を紹介します。
▽三次以上の連立一次方程式の求め方▽
  1. 係数行列((AλiI) (A-λ_{i}I)の部分)を行基本変形を使って階段行列に変換してからuj\boldsymbol{u_{j}}を掛ける
    以下の行基本変形で可能な3つの変形
    1.ある行のc倍を他の行に加えること
    2.2つの行を入れ替えること
    3.ある行をc≠0倍すること
    を使って先に係数行列を階段行列に変形します。階段行列がよくわからんという方は下記の◆階段行列◆をご覧頂いてから戻ってきてください。
    例えば、
    (211145112)(xyz)=(000)\begin{pmatrix}-2 & 1 & 1\\ -1 & -4 & 5\\ -1 & -1 & 2\\ \end{pmatrix}\begin{pmatrix}x \\y \\z \\ \end{pmatrix}=\begin{pmatrix}0 \\0 \\0 \\ \end{pmatrix}
    この同次連立一次方程式の固有ベクトルを求める場合、
    (211145112)(101011000)\begin{pmatrix}-2 & 1 & 1\\ -1 & -4 & 5\\ -1 & -1 & 2\\ \end{pmatrix}\rightarrow \begin{pmatrix}1 & 0 & -1 \\0 & 1 & -1 \\0 & 0 & 0 \\ \end{pmatrix}
    係数行列を行基本変形によって階段行列に変形して
    xz=0,yz=0x-z=0 , y-z=0
    uuを掛けて一次方程式に直すと
    u=(xyz)=(ccc)=c(111)(ただしc0)\boldsymbol{u}=\begin{pmatrix}x \\y \\z \\ \end{pmatrix}=\begin{pmatrix}c \\c \\c \\ \end{pmatrix}=c\begin{pmatrix}1 \\1 \\1 \\ \end{pmatrix}(ただしc≠0)
    自明でない解を任意定数ccを用いてこのように求められます。この方法であれば、行基本変形で可能な変形さえ守れば堅実に答えが求まるので3次以上の正方行列を扱うことが有ればぜひ使ってみてください。
  2. クラメルの公式を使う
    クラメルの公式については、以下のリンクに飛んでどういったものか確認してください。
    ただし、リンク先でも注意されている通りクラメルの公式の計算は煩雑で手計算で解くのはあまりお勧めできません。
今回は2次正方行列について例題を扱ってみましたが、3次、4次と次数が増えるごとに計算が非常に面倒になっていくので計算方法の理解が曖昧だとミスが起きてしまいます。ですので、ここまでの内容を完全に理解して上で様々な問題を解いて慣れておきましょう。次章からはいよいよ固有値分解について定義と解き方を説明していきます。

〔固有値分解〕

◆定義◆

nn次正方行列AAが固有値λλと固有ベクトルu\boldsymbol{u}を持つとき、
A=PΛP1A=PΛP^{-1}
ただし、
Λ=(λ1000λ2000λn)Λ=\begin{pmatrix} \lambda_{1} & 0 & \dots & 0 \\0 & \lambda_{2} & \dots & 0 \\ \vdots & \vdots & \ddots & \vdots \\0 & 0 & \dots & \lambda_{n} \end{pmatrix}
P=(u1u2un)P=(\boldsymbol{u_1}\boldsymbol{u_2}\dots\boldsymbol{u_n})
と変形すること固有値分解という。
  • ΛΛ 固有値を対角成分に持つ対角行列 固有値を固有値を左上から並べる順番と正則行列PPの固有ベクトルを左から並べる順番は対応している必要があるので、手計算するときなどはしっかり下付き文字などそれぞれの固有値と固有ベクトルのペアが分かるようにしておくと便利。
    ここで少し対角化に触れておく。他の方の記事などで、「固有値分解」と同じものとして「対角化」という言葉を目にした方もいるだろう。 この対角化は本質的に固有値分解と同じことしており、どちらもΛΛに注目していることに変わりはない。ただ、式にはこのような違いがある。
    固有値分解
    A=PΛP1 A=PΛP^{-1}
    対角化
    P1AP=Λ P^{-1}AP=Λ
    しかし、固有値分解の式と対角化の式は互いに相手と同じ形の式に変形できて、使う情報も同じなので、同じものとして扱われている。気になる方は、逆行列の性質を利用してお互いの式を相手と同じ形に直してみていただきたい。
  • PP 固有ベクトルを列方向に並べた正方行列(逆行列が存在するので正則行列) 成分を表示すると、
    P=(u1u2un)=((x11x12x1n)(x21x22x2n)(xn1xn2xnn))=(x11x21xn1x12x22xn2x1nx2nxnn)P=(\boldsymbol{u_1}\boldsymbol{u_2}\dots\boldsymbol{u_n})\\ \quad=(\begin{pmatrix}x_{11}\\x_{12}\\ \vdots\\x_{1n}\end{pmatrix}\begin{pmatrix}x_{21}\\x_{22}\\ \vdots\\x_{2n}\end{pmatrix}\dots\begin{pmatrix}x_{n1}\\x_{n2}\\ \vdots\\x_{nn}\end{pmatrix})\\ \quad=\begin{pmatrix} x_{11} & x_{21} & \dots & x_{n1} \\x_{12} & x_{22} & \dots & x_{n2} \\ \vdots & \vdots & \ddots & \vdots \\x_{1n} & x_{2n} & \dots & x_{nn} \end{pmatrix}
    となる。
  • P1P^{-1} 正則行列PPの逆行列 行列(PIn)(P\quad I_n)を何回かの行基本変形により(InB)(I_n\quad B)に変形して得られるBBのことである。
    逆行列の求め方については、下記◆逆行列◆により詳しく解説しているのでご覧いただいて理解出来たら戻ってきてください。
次節では、これまで学んできたことすべてを使って例題を基に固有値分解していきます。

◆固有値分解の求め方◆

ここまで固有値分解を解くために様々な手法を学んでまいりましたが、いよいよ具体例を用いて固有値分解していきます。
今回扱うのはこの三次元正方行列です。
A=(301010103)A=\begin{pmatrix}3 & 0 & 1\\0 & 1 & 0\\1 & 0 & 3\\ \end{pmatrix}
  1. 固有値分解したい行列がnn次正方行列かを確認する
    行列AAは三次正方行列なので固有値分解の手法を適応できます。
  2. 固有値分解とはnn次正方行列AAPΛP1PΛP^{-1}に分解する手法であることを確認する。
    ΛΛ :固有値を対角成分に持つ3次対角行列
    PP :固有ベクトルを列方向に並べた3次の正方行列(逆行列が存在するので正則行列)
    P1P^{-1} :正則行列PPの逆行列
  3. 固有値λλnn個求めてΛΛを完成させる
    AAについて固有値を求めます。
    固有値の求め方は◆固有値の求め方◆と変わりません。
    はじめに固有方程式det(AλI)det(A-λI)AAを代入します。
    det(AλI)=(301010103)(λ000λ000λ)=3λ0101λ0103λ=0det(A-λI)=\begin{vmatrix}\begin{pmatrix}3 & 0 & 1\\0 & 1 & 0\\1 & 0 & 3\\ \end{pmatrix}-\begin{pmatrix}λ & 0 & 0\\0 & λ & 0\\0 & 0 & λ\\ \end{pmatrix}\end{vmatrix}=\begin{vmatrix}3-λ & 0 & 1 \\0 & 1-λ & 0 \\1 & 0 & 3-λ \\ \end{vmatrix}=0
    ここまでは先ほどを全く同じ手順です。
    その後サラスの公式を用いると固有値は λ=1,2,4λ=1,2,4 であることが分かります。 ここで、新たに余因子展開を使って行列式を解く手法を紹介したいと思います。
    余因子展開はn>1n>1次正方行列なら使うことができるの便利な手法なので覚えておいて損はないので実際に計算してみましょう。余因子展開の定義は下記の◆余因子展開◆からご確認ください。
    今回の例では2列目について余因子展開を行います。余因子展開する行か列を選ぶ際には0の数が一番多くなる場所を選ぶと良いです。何故なら、0の成分の余因子展開は必ず0になるからです。今回もそのメソッドに則って2回0が出てくる2列目を選択します。
    計算式は以下の通りとなります。
    A=(0)21(1)2+10013λ+(1λ)22(1)2+23λ113λ+(0)23(1)2+33λ100|A|=(0)_{21}(-1)^{2+1}\begin{vmatrix}0 & 0 \\1 & 3-λ \\ \end{vmatrix}+(1-λ)₂₂(-1)^{2+2}\begin{vmatrix}3-λ & 1\\1 & 3-λ\\ \end{vmatrix}+(0)₂₃(-1)^{2+3}\begin{vmatrix}3-λ & 1 \\0 & 0 \\ \end{vmatrix}
    イメージはこの通り。
余因子展開図解
計算を進めていくと
A=0+(1λ)22(1)2+23λ113λ+0 |A|=0+(1-λ)_{22}(-1)^{2+2}\begin{vmatrix}3-λ & 1\\ 1 & 3-λ\\ \end{vmatrix}+0
=(1λ){(3λ)(3λ)1×1}=(1λ){λ26λ+8}=(1-λ)\{(3-λ)(3-λ)-1×1\}=(1-λ)\{λ^2-6λ+8\}
=(1λ)(λ2)(λ4)=(1-λ)(λ-2)(λ-4)
となり、固有値は λ=1,2,4λ=1,2,4 です。
サラスの公式を使って求めた場合と同じ固有値 λ=1,2,4λ=1,2,4 であることが確認できます。
固有値分解の定義により
Λ=(λ1000λ2000λn)Λ=\begin{pmatrix} \lambda_{1} & 0 & \dots & 0 \\0 & \lambda_{2} & \dots & 0 \\ \vdots & \vdots & \ddots & \vdots \\0 & 0 & \dots & \lambda_{n} \end{pmatrix}
であるので、今回求めた固有値から
P=(100020004)P=\begin{pmatrix}1 & 0 & 0\\0 & 2 & 0\\0 & 0 & 4\\ \end{pmatrix}
が求まります。
  1. 固有ベクトルu\boldsymbol{u}nn個求めてPPを完成させる
    AAについて固有ベクトルを求めます。 求め方は◆固有ベクトルの求め方◆と変わりません。
    三次正方行列の固有ベクトルの各成分は3つあり同次連立一次方程式を解くのが難しくなってくるので、練習として係数行列に対して行基本変形を行ってから計算してみてください。
    計算の結果求められた各固有ベクトルは以下の通りです。
    固有値λ1=1λ_1=1の場合
    u1=(010)\boldsymbol{u_1}=\begin{pmatrix}0\\1\\0\\ \end{pmatrix}
    固有値λ2=2λ_2=2の場合
    u1=(101)\boldsymbol{u_1}=\begin{pmatrix}-1\\0\\1\\ \end{pmatrix}
    固有値λ3=4λ_3=4の場合
    u1=(101)\boldsymbol{u_1}=\begin{pmatrix}1\\0\\1\\ \end{pmatrix}
    固有値分解の定義より
    P=(u1u2un)P=(\boldsymbol{u_1}\boldsymbol{u_2}\dots\boldsymbol{u_n})
    であるので、今回求めた固有ベクトルから
    P=(011100011)P=\begin{pmatrix}0 & -1 & 1\\1 & 0 & 0\\0 & 1 & 1\\ \end{pmatrix}
    が求まります。
  2. PPから逆行列P1P^{-1}を完成させる
    PPについて逆行列を求めます。
    逆行列の求め方は◆逆行列◆で説明した通りです。
    それでは実際に行基本変形を使って計算してみましょう。
    定理により、PPと単位行列InI_nを並べてできるn×2nn×2n行列(PIn)(P\quad I_n)
    (011100100010011001)\begin{pmatrix}0 & -1 & 1 & 1 & 0 & 0 \\1 & 0 & 0 & 0 & 1 & 0 \\0 & 1 & 1 & 0 & 0 & 1 \\ \end{pmatrix}
    であり、左3×3行列を単位行列InI_nにするために行基本変形を行います。
    (011100100010011001)\begin{pmatrix}0 & -1 & 1 & 1 & 0 & 0 & ⇐\\1 & 0 & 0 & 0 & 1 & 0 \\0 & 1 & 1 & 0 & 0 & 1 \\ \end{pmatrix}
    2行目の1倍を1行目に追加
    (111110100010011001)\begin{pmatrix}1 & -1 & 1 & 1 & 1 & 0 \\1 & 0 & 0 & 0 & 1 & 0 & ⇐\\0 & 1 & 1 & 0 & 0 & 1 \\ \end{pmatrix}
    1行目の‐1倍を2行目に追加
    (111110011100011001)\begin{pmatrix}1 & -1 & 1 & 1 & 1 & 0 \\0 & 1 & -1 & -1 & 0 & 0 \\0 & 1 & 1 & 0 & 0 & 1 & ⇐\\ \end{pmatrix}
    2行目の‐1倍を3行目に追加
    (111110011100002101)\begin{pmatrix}1 & -1 & 1 & 1 & 1 & 0 & ⇐\\0 & 1 & -1 & -1 & 0 & 0 \\0 & 0 & 2 & 1 & 0 & 1 \\ \end{pmatrix}
    2行目の1倍を1行目に追加
    (100010011100002101)\begin{pmatrix}1 & 0 & 0 & 0 & 1 & 0 \\0 & 1 & -1 & -1 & 0 & 0 & ⇐\\0 & 0 & 2 & 1 & 0 & 1 \\ \end{pmatrix}
    3行目の1/2倍を2行目に追加
    (1000100101/201/2002101)\begin{pmatrix}1 & 0 & 0 & 0 & 1 & 0 \\0 & 1 & 0 & -1/2 & 0 & 1/2 \\0 & 0 & 2 & 1 & 0 & 1 & |\\ \end{pmatrix}
    3行目を1/2倍
    (1000100101/201/20011/201/2)\begin{pmatrix}1 & 0 & 0 & 0 & 1 & 0 \\0 & 1 & 0 & -1/2 & 0 & 1/2 \\0 & 0 & 1 & 1/2 & 0 & 1/2 \\ \end{pmatrix}
    これで、左3×3行列を単位行列InI_nにすることができました。掃きだされた右3×3行列はBBであり、P1P^{-1}です。つまり、PPの逆行列は
    P1=(0101/201/21/201/2)P^{-1}=\begin{pmatrix}0 & 1 & 0\\ -1/2 & 0 & 1/2\\1/2 & 0 & 1/2\\ \end{pmatrix}
です。
  1. 固有値分解の完成!
    A=PΛP1 A=PΛP^{-1}
    (301010103)=(011100011)(100020004)(0101/201/21/201/2)\begin{pmatrix}3 & 0 & 1\\0 & 1 & 0\\1 & 0 & 3\\ \end{pmatrix}= \begin{pmatrix}0 & -1 & 1\\1 & 0 & 0\\0 & 1 & 1\\ \end{pmatrix}\begin{pmatrix}1 & 0 & 0\\0 & 2 & 0\\0 & 0 & 4\\ \end{pmatrix}\begin{pmatrix}0 & 1 & 0\\ -1/2 & 0 & 1/2\\1/2 & 0 & 1/2\\ \end{pmatrix}
  2. PΛP1PΛP^{-1}を実際に計算してAAと等しくなるか確かめる。
    最後に、固有値分解の式にそれぞれ求めた行列を当てはめて固有値分解が成り立っているか確認してみましょう。
    A=PΛP1A=PΛP^{-1}より、
    P=(011100011)P=\begin{pmatrix}0 & -1 & 1\\1 & 0 & 0\\0 & 1 & 1\\ \end{pmatrix}
    Λ=(100020004)Λ=\begin{pmatrix}1 & 0 & 0\\0 & 2 & 0\\0 & 0 & 4\\ \end{pmatrix}
    P=(0101/201/21/201/2)P=\begin{pmatrix}0 & 1 & 0\\ -1/2 & 0 & 1/2\\1/2 & 0 & 1/2\\ \end{pmatrix}
A=(301010103)A=\begin{pmatrix}3 & 0 & 1\\0 & 1 & 0\\1 & 0 & 3\\ \end{pmatrix}
と同じ要素を持った行列になるか計算します。
{(011100011)(100020004)}(011/201/21/201/2)\left\{\begin{pmatrix}0 & -1 & 1\\ 1 & 0 & 0\\ 0 & 1 & 1\\ \end{pmatrix}\begin{pmatrix}1 & 0 & 0\\ 0 & 2 & 0\\ 0 & 0 & 4\\ \end{pmatrix}\right\} \begin{pmatrix}0 & 1 & \\ -1/2 & 0 & 1/2\\ 1/2 & 0 & 1/2\\ \end{pmatrix}
=(024100024)(0101/201/21/201/2)=\begin{pmatrix}0 & -2 & 4\\1 & 0 & 0\\0 & 2 & 4\\ \end{pmatrix}\begin{pmatrix}0 & 1 & 0\\ -1/2 & 0 & 1/2\\1/2 & 0 & 1/2\\ \end{pmatrix}
=(301010103)=\begin{pmatrix}3 & 0 & 1\\0 & 1 & 0\\1 & 0 & 3\\ \end{pmatrix}
以上によりA=(301010103)A=\begin{pmatrix}3 & 0 & 1\\0 & 1 & 0\\1 & 0 & 3\\ \end{pmatrix} を無事固有値分解することが出来ました!!皆様お疲れさまでした。

〔固有値分解を解くための重要知識〕

◆一次変換(線形変換)◆

▽定義▽
平面上の変換ffによって点(x,y)(x,y)が移る点を(x,y)(x',y')とする。定数a,b,c,da,b,c,dにより、関係式
(xy)=(abcd)(xy) \begin{pmatrix}x' \\ y' \\ \end{pmatrix}=\begin{pmatrix}a & b \\ c & d \\ \end{pmatrix}\begin{pmatrix}x \\ y \\ \end{pmatrix}
が全ての点(x,y)に対して成り立つとき、fを行列(abcd)\bigl(\begin{smallmatrix}a & b \\ c & d \\ \end{smallmatrix}\bigl) が表す一次変換(または線形変換)という。[^5]
  • 変換f
    座標平面上の点をある一定の規則で移動させること 変換を記号であらわす場合、ffgg等のアルファベットの小文字が用いられることが多い。
例えば、行列A(1213)A=\bigl(\begin{smallmatrix}1 & 2\\ 1 & 3\\ \end{smallmatrix}\bigl) が表す一次変換によって、点(1,2)が移る点を求める場合、
(1213)(12)=(57)\begin{pmatrix} 1 & 2 \\ 1 & 3 \\ \end{pmatrix}\begin{pmatrix} 1 \\ 2 \\ \end{pmatrix}=\begin{pmatrix} 5 \\ 7 \\ \end{pmatrix}
行列AAと点(1,2)(1,2)の積を計算した結果、一次変換されて点(5,7)(5,7)に移りました。
▽イメージ▽
図示するとこう移動していると分かります。 一次変換のイメージ1png 途中式を考えると、
(1213)(12)=(11+2211+32)=(1+41+6)=(11)+2(23)=(57)\begin{pmatrix} 1 & 2 \\ 1 & 3 \\ \end{pmatrix} \begin{pmatrix} 1 \\ 2 \\ \end{pmatrix}= \begin{pmatrix} 1*1+2*2\\ 1*1+3*2 \\ \end{pmatrix}= \begin{pmatrix} 1+4\\ 1+6 \\ \end{pmatrix}= \begin{pmatrix} 1\\ 1 \\ \end{pmatrix}+2 \begin{pmatrix} 2 \\ 3 \\ \end{pmatrix}= \begin{pmatrix} 5 \\ 7 \\ \end{pmatrix}
このように点(1,2)(1,2)がベクトルの足し算の結果として移動したと幾何的に解釈できます。
図示するとこう移動していると分かります。 一次変換のイメージ2png ベクトル(23)\bigl(\begin{smallmatrix}2 \\ 3 \\ \end{smallmatrix}\bigl)yy方向に2倍大きくなっています。
一次変換についてまだまだトピックは尽きませんが、本題ではないので今回書くのはここまで。 一次変換についてもう少し学びたい方は「ヨビノリ」の線形代数シリーズなどを参考にしてください。

◆同次連立一次方程式◆

▽定義▽
AAm×nm×n行列、x=(x1x2xn)\boldsymbol{x}=\begin{pmatrix}x_{1} \\ x_{2} \\ \vdots \\ x_{n}\end{pmatrix},b=(b1b2bm)\boldsymbol{b}=\begin{pmatrix}b_{1} \\ b_{2} \\ \vdots \\ b_{m}\end{pmatrix}とする。連立1次方程式Ax=bA\boldsymbol{x}=\boldsymbol{b}において、右辺のb\boldsymbol{b}が0であるもの、すなわちAx=0A\boldsymbol{x}=0の形のものを同次連立1次方程式とよぶ。
同次連立1次方程式は必ず、x=0x=0という解を持つ。この解を自明な解という。[^6]
▽イメージ▽
係数行列AAとベクトルx\boldsymbol{x}が以下の通りであるとき、
A=(a11a12a21a22),x=(x1x2)A=\begin{pmatrix}a_{11} & a_{12}\\ a_{21} & a_{22}\\ \end{pmatrix},\boldsymbol{x}=\begin{pmatrix}x_{1}\\ x_{2} \\ \end{pmatrix}
同次連立一次方程式は、
Ax=(a11a12a21a22)(x1x2)=(a11x1+a12x2a21x1+a22x2)=(00)A\boldsymbol{x}=\begin{pmatrix}a_{11} & a_{12}\\ a_{21} & a_{22}\\ \end{pmatrix}\begin{pmatrix}x_{1}\\ x_{2} \\ \end{pmatrix}=\begin{pmatrix}a_{11}x_{1}+a_{12}x_{2}\\ a_{21}x_{1}+a_{22}x_{2}\\ \end{pmatrix}=\begin{pmatrix}0\\ 0\\ \end{pmatrix}
以下の連立方程式を解いて求めることができます。
a11x1+a12x2=0a21x1+a22x2=0a_{11}x_{1}+a_{12}x_{2}=0\\ a_{21}x_{1}+a_{22}x_{2}=0
この時、同次連立一次方程式は必ず
x=(x1x2)=0\boldsymbol{x}=\begin{pmatrix}x_{1}\\ x_{2} \\ \end{pmatrix}=0
であり、この解を自明な解と呼びます。
例えば、係数行列ATA_{T}
AT=(2111)A_{T}=\begin{pmatrix}2 & -1\\ 1 & 1\\ \end{pmatrix}
だとすると、同次連立一次方程式は以下の連立一次方程式を解いて求めることができます。
2x1x2=0x1+x2=02x_{1}-x_{2}=0\\ x_{1}+x_{2}=0
連立一次方程式を解くと、必ず
x=(x1x2)=(00)=0\boldsymbol{x}=\begin{pmatrix}x_{1}\\ x_{2}\\ \end{pmatrix}=\begin{pmatrix}0\\ 0\\ \end{pmatrix}=0
となり、自明な解であることが分かります。
一方、係数行列AFA_{F}
AF=(2142)A_{F}=\begin{pmatrix}2 & -1\\ -4 & 2\\ \end{pmatrix}
だとすると、同次連立一次方程式は以下の連立一次方程式を解いて求めることができます。
2x1x2=04x1+2x2=02x_{1}-x_{2}=0\\ -4x_{1}+2x_{2}=0
連立一次方程式を解くと、
x1x_{1}x2x_{2}の解は1つに定まらず、任意の実数を取ることができることが分かります。
ccを任意定数として、
x=(x1x2)=(c2c)=c(12)\boldsymbol{x}=\begin{pmatrix}x_{1}\\ x_{2}\\ \end{pmatrix}=\begin{pmatrix}c\\ 2c \\ \end{pmatrix}=c\begin{pmatrix}1\\ 2\\ \end{pmatrix}
となり、自明ではない解であることが分かります。
自明ではない解の場合、同次連立一次方程式の定義に反するため、求めた連立一次方程式は同次連立一次方程式ではないことが分かります。
固有ベクトルの計算では、(AλI)u(A-λI)\boldsymbol{u}という同次連立一次方程式の自明ではない解を求め、その解のなすベクトルが固有ベクトルになります。

◆階段行列◆

▽定義▽
まず、第一行からrr行まではピボットと呼ばれる数1を含んでいる。
この前提条件の下、
1.第r1r+1行から最後の行までは全ての要素が0
2.第一行からr行(今回は2行目)までの各行では、ピボットより左の成分は全て0
3.第ii行目のピボットが含まれる列の番号をpip_{i}としたとき、番号の大きさは
p1<p2<...<prp_{1}<p_{2}<...<p_{r}であり、第pip_{i}列ではピボット以外の要素は全て0
を満たす行列を階段行列という。[^7]
▽補足知識▽
階段行列AAのピボットの数rrをその階段行列AAのランクと呼び、
rankA=rrankA=r、もしくは rank(A)=rrank(A)=r
と表す。

◆逆行列◆

▽定義▽
  • nn次正方行列Aに対して、AX=XA=InAX=XA=I_{n} となるnn次正方行列XXが存在するとき、XXAAの逆行列と呼ぶ。次の命題2.64(nn次行列AAに対して、AX=XA=InAX=XA=I_{n}を満たすn次行列Xは、存在すればただ1つである。)より、AAの逆行列は存在すればただ一つであり、これをA1A^{-1}と表す。
  • 正方行列AAの逆行列が存在するとき、AAは正則行列である。[^8]
▽掃き出し法の前提知識▽
逆行列の計算は、「行基本変形を行うことは、ある正則行列を左から掛けることと同じ」であることを応用して求めることができます。
であるので、まずは「行基本変形を行うことは、ある正則行列を左から掛けることと同じ」であることを理解していただきたいと思います。
その前に、行基本変形は3種類あることを思い出してください。初めて見る方はここで学みましょう。
連立一次方程式(一次方程式が行方向に複数並んだ方程式)の基本変形(中学校で学んだ連立方程式の解き方)と対応する、行列の行に対する基本変形のことを「行基本変形」といい、以下の3種類の変形が可能です。
1.ある行のc倍を他の行に加えること
2.2つの行を入れ替えること
3.ある行をc≠0倍すること
思い出していただいたところで、「行基本変形を行うことは、ある正則行列を左から掛けることと同じ」であることの説明に入ります。
行列A(lmnpqr)行列A=\begin{pmatrix}l & m & n\\ p & q & r\\ \end{pmatrix}
を例に行基本変形をより詳細に分類して、それぞれ変形すると
(a1)1行をc倍する:(clcmcnpqr)=(c001)(lmnpqr)=(c001)A(a-1)第1行をc倍する:\begin{pmatrix}cl & cm & cn\\ p & q & r\\ \end{pmatrix}=\begin{pmatrix}c & 0\\ 0 & 1\\ \end{pmatrix}\begin{pmatrix}l & m & n\\ p & q & r\\ \end{pmatrix}=\begin{pmatrix}c & 0\\ 0 & 1\\ \end{pmatrix}A
(a2)2行をc倍する:(lmncpcqcr)=(100c)(lmnpqr)=(100c)A(a-2)第2行をc倍する:\begin{pmatrix}l & m & n\\ cp & cq & cr\\ \end{pmatrix}=\begin{pmatrix}1 & 0\\ 0 & c\\ \end{pmatrix}\begin{pmatrix}l & m & n\\ p & q & r\\ \end{pmatrix}=\begin{pmatrix}1 & 0\\ 0 & c\\ \end{pmatrix}A
(b)1行と第2行を入れ替える:(pqrlmn)=(0110)(lmnpqr)=(0110)A(b)第1行と第2行を入れ替える:\begin{pmatrix}p & q & r\\ l & m & n\\ \end{pmatrix}=\begin{pmatrix}0 & 1\\ 1 & 0\\ \end{pmatrix}\begin{pmatrix}l & m & n\\ p & q & r\\ \end{pmatrix}=\begin{pmatrix}0 & 1\\ 1 & 0\\ \end{pmatrix}A
(c1)1行のc倍を第2行に加える:(lmnp+clq+cmr+cn)=(10c1)(lmnpqr)=(10c1)A(c-1)第1行のc倍を第2行に加える:\begin{pmatrix}l & m & n\\ p+cl & q+cm & r+cn\\ \end{pmatrix}=\begin{pmatrix}1 & 0\\ c & 1\\ \end{pmatrix}\begin{pmatrix}l & m & n\\ p & q & r\\ \end{pmatrix}=\begin{pmatrix}1 & 0\\ c & 1\\ \end{pmatrix}A
(c1)2行のc倍を第1行に加える:(l+cpm+cqn+crpqr)=(1c01)(lmnpqr)=(1c01)A(c-1)第2行のc倍を第1行に加える:\begin{pmatrix}l+cp & m+cq & n+cr\\ p & q & r\\ \end{pmatrix}=\begin{pmatrix}1 & c\\ 0 & 1\\ \end{pmatrix}\begin{pmatrix}l & m & n\\ p & q & r\\ \end{pmatrix}=\begin{pmatrix}1 & c\\ 0 & 1\\ \end{pmatrix}A
それぞれある正方行列が行列Aに左からかかっている形になります。
これら5種類の正方行列には、順に
(1/c001),(1001/c),(0110),(10c1),(1c01)\begin{pmatrix}1/c & 0\\ 0 & 1\\ \end{pmatrix},\begin{pmatrix}1 & 0\\ 0 & 1/c\\ \end{pmatrix},\begin{pmatrix}0 & 1\\ 1 & 0\\ \end{pmatrix},\begin{pmatrix}1 & 0\\ -c & 1\\ \end{pmatrix},\begin{pmatrix}1 & -c\\ 0 & 1\\ \end{pmatrix}
といった逆行列が存在するため、5種類の正方行列は正則行列です。
よって、「行基本変形を行うことは、ある正則行列を左から掛けることと同じ」であると解釈できます。
ここで、「行列Aに行基本変形を次々と行って、行列Bになる」ということについて先ほどの解釈を当てはめると、「行列Aに5種類の正則行列を次々と左から掛けていくとBになる」ことと言えます。
例えば、行列Aに行基本変形を
AA1A2As=BP1AP2P1APsP2P1AA \hspace{10pt}\rightarrow\hspace{10pt} A_1 \hspace{10pt}\rightarrow\hspace{10pt} A_2 \hspace{10pt}\rightarrow\hspace{10pt} \dots \hspace{10pt}\rightarrow\hspace{10pt} A_s=B\\ \hspace{44pt}∥\hspace{43pt}∥\hspace{89pt}∥\\ \hspace{38pt}P_1A\hspace{24pt}P_2P_1A\hspace{55pt}P_s\dots P_2P_1A
の様にss回施してB(=As)B(=A_s)を得たとすると(ここでP1,P2,,PsP_1,P_2,\dots ,P_sは5種類の正則行列たち)、
B=PsP2P1AB=P_s\dots P_2P_1Aです。さらには、PsP2P1P_s\dots P_2P_1を1つの行列PPで表してしまえばB=PAB=PAが成り立っているといえます。以上により、
行列A(lmnpqr)行列A=\begin{pmatrix} l & m & n\\ p & q & r\\ \end{pmatrix}
について、「何回かの行基本変形により行列AABBに変形されたとすると、ある正則行列PPが存在してBPAB=PAが成り立つ」ことを示したことになります。
ここまで長々と行基本変形について説明してきましたが、ここからやっと逆行列の計算方法の説明に入ります。その方法とは掃き出し法です。次項では定理とその証明を行います。
▽掃き出し法の定理▽
AAnn次行列とする。AAと単位行列InI_nを並べてできるn×2nn×2n行列(AIn)(A\quad I_n)を何回かの行基本変形により(InB)(I_n\quad B)に変形できたならば、AAは正則であり、さらにB=A1B=A^{-1}である。[^9]
  • InI_n
    nnnn次元単位行列の次数である。
  • 行列(AIn)(A\quad I_n)
    2次行列A=(abcd)A=\begin{pmatrix}a & b\\ c & d\\ \end{pmatrix} の場合(ab10cd01)\begin{pmatrix}a & b & 1 & 0\\ c & d & 0 & 1\\ \end{pmatrix}
  • 行列(InB)(I_n\quad B)
    行列(AIn)(A\quad I_n)に何回か行基本変形を繰り返して作る行列で、行列の右側に表れるBBが行列AAの逆行列である。
(ab10cd01)(10ef01gh)B=(efgh)=A1\begin{pmatrix} a & b & 1 & 0\\ c & d & 0 & 1\\ \end{pmatrix}\rightarrow \begin{pmatrix} 1 & 0 & e & f\\ 0 & 1 & g & h\\ \end{pmatrix} \therefore B=\begin{pmatrix} e & f\\ g & h\\ \end{pmatrix}=A^{-1}
▽掃き出し法の証明▽
(AIn)(A\quad I_n)が何回かの行基本変形により(InB)(I_n\quad B)に変形されたとすると、▽掃き出し法の前提知識▽で求めた「何回かの行基本変形により行列AABBに変形されたとすると、ある正則行列PPが存在してBPAB=PAが成り立つ」という性質により
P(AIn)=(InB)P(A\quad I_n)=(I_n\quad B)
を満たす正則行列PPが存在する。P(AIn)=(PAPIn)=(PAP)P(A\quad I_n)=(PA\quad PI_n)=(PA\quad P)なので、
P(AIn)=(InB)P(A\quad I_n)=(I_n\quad B)
(PAP)=(InB)(PA\quad P)=(I_n\quad B),すなわちPA=IPA=IかつP=BP=Bを意味する。
ゆえにB(=P)B(=P)が正則かつBA=InBA=I_nである。B(=P)B(=P)が正則ということはB1B^{-1}があるので、それをBA=InBA=I_nの両辺に左から掛けてA=B1A=B^{-1}を得る。
逆行列の性質の1つ「nn次行列Aが正則行列ならば、A1A^{-1}も正則行列であり、
(A1)1=A(A^{-1})^{-1}=Aである。」によりA1=BA^{-1}=Bが従う。
以上で証明は完了。
▽補足知識▽
逆行列の計算において、nn次行列AAが逆行列を持たないことを調べる方法があるので紹介します。 何回かの行基本変形で(InB)(I_n\quad B)を作るにあたり、(AIn)(A\quad I_n)から階段行列へ変形していきます。その際に、AAの部分をInI_nにできない場合があります。たとえば、変形中にある1行の第nn列までの成分が全て00になってしまったときはAAは正則行列ではないので逆行列を持ちません。ここでは証明は行いませんが、以下のようなイメージを持ってもらえればよいです。
(AIn)=(abc100def010ghi001)(100jkl000mno001pqr)(InB)(A\quad I_n)=\begin{pmatrix}a & b & c & 1 & 0 & 0\\ d & e & f & 0 & 1 & 0\\ g & h & i & 0 & 0 & 1\\ \end{pmatrix}\rightarrow\begin{pmatrix}1 & 0 & 0 & j & k & l\\ 0 & 0 & 0 & m & n & o\\ 0 & 0 & 1 & p & q & r\\ \end{pmatrix}\rightarrow(I_n\quad B)
2行目のnn列までの成分が全て0になってしまっているのでAAは正則行列ではなく、すなわち逆行列を持ちません。

◆余因子展開◆

▽定義▽
nn次正方行列AAii行とjj列を取り除いた小行列をMijM_{ij}と表すとき、AAの行列式は
A=a1j(1)1+jM1j+a2j(1)2+jM2j++anj(1)n+jMnj|A|=a_{1j}(-1)^{1+j}|M_{1j}|+a_{2j}(-1)^{2+j}|M_{2j}|+ \dots + a_{nj}(-1)^{n+j}|M_{nj}|
A=ai1(1)i+1Mi1+ai2(1)i+2Mi2++ai2(1)i+2Mi2|A|=a_{i1}(-1)^{i+1}|M_{i1}|+a_{i2}(-1)^{i+2}|M_{i2}|+ \dots + a_{i2}(-1)^{i+2}|M_{i2}|[^10]
一つ目の定義式
A=a1j(1)1+jM1j+a2j(1)2+jM2j++anj(1)n+jMnj|A|=a_{1j}(-1)^{1+j}|M_{1j}|+a_{2j}(-1)^{2+j}|M_{2j}|+ \dots + a_{nj}(-1)^{n+j}|M_{nj}|
これは第jj列についての余因子展開。つまり、各項は、取り除く列として第jj列を固定して各行を取り除いた場合についての計算式であり、これを足し合わせることにより行列式が求まる。
二つ目の定義式
A=ai1(1)i+1Mi1+ai2(1)i+2Mi2++ai2(1)i+2Mi2|A|=a_{i1}(-1)^{i+1}|M_{i1}|+a_{i2}(-1)^{i+2}|M_{i2}|+ \dots + a_{i2}(-1)^{i+2}|M_{i2}|
これは第ii行についての余因子展開。つまり、各項は、取り除く行として第ii行を固定して各列を取り除いた場合についての計算式であり、これを足し合わせることにより行列式が求まる。

〔終わりに〕

いかがだったでしょうか?固有値分解について理解して計算できるようになりましたか?
今回は、固有値分解の計算に至る前に必要となる線形代数の知識がたくさんあっていつになったら固有値分解が出来るのか気が遠くなりそうでした。読者の皆様には記事の上や下にたくさん移動させてしまって申し訳ないですね。ですが、逆に言えば遠回りして線形代数の重要なポイントを通過してから固有値分解の計算をすることで、線形代数の各知識が固有値分解を通して繋がるConnectingTheDotsみを感じられたのではないでしょうか。
線形代数は文系学生が触れてきた数学とは一味も二味も違って私自身カンゼンニリカイシタ状態にも至れていないのですが一緒に勉強頑張りましょう!!
ちなみに、E資格の対策記事なので「機械学習に固有値分解をどう使ったらいいねん!」ということにも触れておくと、次回特異値分解について取り扱う際にまとめてお伝えできればと思います。しばしお待ちを……。
本記事への感想やご質問、ご指摘などなどお気軽にコメントして頂けると記事の精度がどんどん上がっていきますので是非よろしくお願い致します。それからコメントやスーパーコメントをして頂けると記事投稿のモチベーションが爆上がりするのでそちらも是非!

【コンテンツツリー】◀E資格の関連記事はここから!!

【ハックしないE資格対策記】の各記事をシラバス(2020版)と同じ形式でコンテンツツリーにしています。 気になる記事に一瞬でたどり着けますのでどうぞご活用ください!
〔E資格とは〕
〔応用数学〕
  • 線形代数
  • 確率・統計
    • 一般的な確率分布
      • ベルヌーイ分布
      • マルチヌーイ分布
      • ガウス分布
    • ベイズ則
  • 情報理論
〔機械学習〕
  • 機械学習の基礎
    • 学習アルゴリズム
      • タスクT
      • 性能指標P
      • 経験E
    • 能力・過剰適合・過少適合
    • ハイパーパラメータ
    • 検証集合
      • 学習データ、検証データ、テストデータ
      • ホールドアウト法
      • k-分割交差検証法
    • 最尤推定
      • 条件付き対数尤度と平均二乗誤差
    • 教師あり学習アルゴリズム
      • ロジスティック回帰
      • サポートベクトルマシン
      • 最近傍法、k近傍法
    • 教師無し学習アルゴリズム
      • 主成分分析
      • k平均クラスタリング
    • 確率的勾配降下法
    • 深層学習の発展を促す課題
      • 次元の呪い
  • 実用的な方法論
    • 性能指標
    • ハイパーパラメータの選択
      • 手動でのハイパーパラメータ調整
      • グリッドリサーチ
      • ランダムリサーチ
      • モデルに基づくハイパーパラメータの最適化
〔深層学習〕
  • 順伝播型ネットワーク
    • 線形問題と非線形問題
    • コスト関数
      • 最尤推定による条件付き分布の学習
    • 出力ユニット
      • ガウス出力分布のための線形ユニット
      • ベルヌーイ出力分布のためのシグモイドユニット
      • マルチヌーイ分布のためのソフトマックスユニット
    • 隠れユニット
      • ReRuとその一般化
      • ロジスティックシグモイドとハイパボリックタンジェント
    • アーキテクチャの設計
      • 万能近似定理と深さ
    • 誤差逆伝播およびその他の微分アルゴリズム
      • 計算グラフ
      • 微積分の連鎖率
      • 誤差逆伝播のための連鎖率の再帰的な適応
      • 全結合MLPでの誤差逆伝播法
      • シンボル間の微分
      • 一般的な誤差逆伝播法
  • 深層モデルのための正則化
    • パラメータノルムペナルティー
      • L2パラメータ正則化
      • L1正則化
    • データ集合の拡張
    • ノイズに対する頑健性
      • 出力目標へのノイズ注入
    • 半教師あり学習
    • マルチタスク学習
    • 早期終了
    • スパ――ス表現
    • バギングやその他のアンサンブル手法
    • ドロップアウト
  • 深層モデルのための最適化
    • 学習と純粋な最適化の差異
      • バッチアルゴリズムとミニバッチアルゴリズム
    • 基本的なアルゴリズム
      • 確率的勾配降下法
      • モメンタム
      • ネステロフのモメンタム
    • パラメータの初期化戦略
    • 適応的な学習率を持つアルゴリズム
      • AdaGrad
      • RMSProp
      • Adam
    • 最適化戦略とメタアルゴリズム
      • バッチ正規化
      • Layer正規化
      • Instance正規化
      • 教師あり事前学習
  • 畳み込みネットワーク
    • 畳み込み処理
    • プーリング
    • 構造出力
    • データの種類
    • 効率的な畳み込みアルゴリズム
    • 特徴量の転移
  • 回帰結合型ニューラルネットワークと再帰的ネットワーク
    • 回帰結合型のニューラルネットワーク
      • 教師強制と出力回帰のあるネットワーク
        ‐ 回帰結合型ネットワークにおける勾配計算(BPTT)
        ‐ 有効グラフィカルモデルとしての回帰結合型のネットワーク
        ‐ RNNを使った文脈で条件付けされた系列モデリング
    • 双方向RNN
    • Encoder-Decoder と Sequence-to-Sequence
    • 深層回帰結合型のネットワーク
    • 再帰型ニューラルネットワーク
    • 長期依存性の課題
    • 複数時間スケールのためのLeakyユニットとその他の手法
      • 時間方向にスキップ接続を追加
      • Leakyユニットと異なる時間のスケールのベクトル
      • 接続の削除
    • ゲート付きRNN
      • LSTM
      • GRU
    • 長期依存性の最適化
      • 勾配のクリッピング
    • メモリネットワーク
      • Attention
  • 生成モデル
    • 識別モデルと生成モデル
    • オートエンコーダー
      • VAE
    • GAN
      • DCGAN
      • Conditional GAN
  • 強化モデル
    • 方策勾配法
    • 価値反復法
      • DQN
  • 深層学習の適応方法
    • 画像認識
      • VGG
      • GoogLeNet
      • ResNet
      • MobileNet
      • DenseNet
    • 画像の局在化・検知・セグメンテーション
      • FasterR-CNN
      • YOLO
      • SSD
    • 自然言語処理
      • WordEmbedding
      • Transformer
    • Text to Speech
      • WaveNet
    • スタイル変換
      • pix2pix
    • その他
      • AlphaGo
〔開発・運用環境〕
  • ミドルウェア
    • 深層学習ライブラリ
  • 軽量化・高速化技術
    • 軽量化技術
      • 量子化
      • 蒸留
      • プルーニング
    • 分散処理
      • モデル並列
      • データ並列
    • アクセラレータ
      • GPU

【参考シラバス】

E資格の試験出題範囲(シラバス)2020 ダウンロードはこちらから
E2022#2(2022年8月26日・27日)の試験からシラバスの出題範囲が変わります。 本シリーズは2020のシラバスを参考に記事を作成しますが、出題範囲の変更分も後々追加で書いていきたいとは考えています。 (もしかしたら別シリーズとして新たにスタートするかもしれません。) 新シラバスのダウンロードはこちらから

【参考文献】

Discussion

コメントにはログインが必要です。