対角化の応用例はじめに行列の基本的な性質を知っておくことは機械学習では重要なことです。手法の要となっている式変形において、行列の性質が使われるケースが多いためです。成り立つような行列のことです。表せば、と表現できます。この対称行列は非常に良い性質を持っているため(後述)機械学習の様々な場面で現れます。してが成り立つような行列のことです。)を取り出せば、その内積はとなります。とき、すなわち同じベクトル同士の内積のみ値を持ちます。ベクトルであるということです。端的に言えば、直交行列の中のベクトルたちは正規直交基底を成しています。複素数まで概念を拡張した際に、上記の性質を持つ行列をユニタリ行列と言いますが、こちらも機械学習で現れることは無いと思っていいです。求まることが挙げられます。これは定義から明らかですが、非常に重要な性質なので覚えておきましょう。直交行列の逆行列が知りたければ、転置するだけでいいのです。上記の行列が特殊であるということは、普通の行列は当然上記の性質を持っていないということです。対称行列は転置したら自分自身になりますし、直交行列は転置したら逆行列になります。普通の行列は全く別の行列になるのです。特別扱いするには意味があります。こじつければいくらでも特殊なものを見つけられそうですが、これらに固有名詞が付けられるのはそれ相応の価値があるからです。後にこれらを使った応用例を見ることにします。逆行列とはすでに逆行列のことはご存知かと思います。元の行列との積を取ったときに単位行列になるようなもののことです。この逆行列は必ずしも存在するとは限りません。関して特殊な操作を施してスカラー値を得ます(この操作は意外に複雑です)。場合はその行列に逆行列が存在しません。a_{22}\end{pmatrix}行列式はとなります。具体的な計算方法は教科書などに譲りますが、知らなければいけない性質は行列式の値で逆行列が存在するかを調べられるということです。ランク落ち機械学習ではほとんど議論されることはありませんが、行列のランク落ちについても述べておきましょう。したときにとなるようなベクトルがある場合です。中の行列をベクトルの集まりと見たときに、あるベクトルが他のベクトルの整数倍で表せてしまう場合はランクが落ちるのです。このようなベクトルの「被り」の数だけ行列のランクは落ちていきます。従って、その行列に逆行列が存在しなくなります。一般の行列で行と列の数が異なる場合で考えると、もっと複雑になりますが、逆行列の議論をする上では、もともと正方行列(行と列が同じ数)にしか定義できないので割愛しましょう。逆行列が存在しないということを抑えておけばいいでしょう。固有値と固有ベクトルに関しては以下の記事が参考になります。固有ベクトルと呼びます。とって固有ベクトルは特別で、そこらへんのベクトルとは一線を画す存在なのです。方程式をと置いて解いていきます。ここで場合分けをします。逆行列が存在する場合。逆行列が存在しない場合。1.の場合は逆行列があるのならば、の両辺に左辺からその逆行列を掛けてやれば、として値が求まります。これで固有ベクトルが求まりました。どの行列にしても、この1.の場合は同じ結果になるわけですから、あまり意味がありません。普通はこの場合分けで得られた固有ベクトル(零ベクトル)のことはわざわざ固有ベクトルと呼びません。したがって、考えるのはいつでも「2.」の場合だけになります。あることですから、この問題を解けば良いことになります。固有値として求まります。求めるという手準になります。表記整える通常、固有値は複数個見つかります。各固有値に対してそれぞれ固有ベクトルが求まります。と2つの固有値求まったとしましょう。このときという2つの式が得られたことになります。これらを1つの式にまとめます。λ_2\end{pmatrix}を準備すればと式をまとめることができます。できません!注意!)固有値問題では、具体的に固有値と固有ベクトルが求まると、それらを代入して最終的には上記のような関係式が現れるということです。実際には固有値の数が、行列のランクよりも少なかったり、そのような場合には1つの固有値に対して複数の固有ベクトルが見つかるという場合もあります。その時でも代入する添字を揃えておけば上記のように表記することができます。対角化これまで、具体的な値を準備せずに、一般的にどのように表記されることになるのかだけを見てきました。言い換えると、最終的な表記を出発点に話を議論しても良いということです。固有値問題は、固有値と固有ベクトルを求めさえすれば最終的には上記のような形になることがわかりました。逆行列が存在するという仮定で)となります。これを通常「対角化」と言います。右辺は固有値を対角成分に並べたものです。その固有ベクトルを求めさえすれば、上記の計算で、単に固有値を対角成分に並べただけの行列に変形することができます。対角化の結果だけを知りたいならば、固有ベクトルを頑張って求めなくても、固有値を並べた行列になると予め分かっているので、簡単に対角化ができます。固有ベクトルを並べて行列に逆行列が存在することが条件になることを忘れてはいけません。逆行列が存在しないようなケースでは対角化ができないのです。それでも単純な形に変形したいという要望はあるので、そのような場合にも上手く変形をするための方法が存在しており「ジョルダン標準系」として知られています。対称行列の固有値は必ず実数値であることが知られています(証明は簡単です)。固有値が実数値であることを使うと、対称行列の異なる固有値に属する固有ベクトルは互いに直交することもわかります(これも証明は簡単です)。重要なのは、対称行列の異なるに属する固有ベクトルは互いに直交するということです。関して以下が求まった(2つの固有値とそれぞれの固有ベクトル)としましょう。するとであるということです。してで達成されることがわかっています。直交行列であるということです。関してはで対角化を達成できるということです。普通の行列ならば固有ベクトルを求めたあとに、それらを並べた行列をつくり、その逆行列を求めねばなりません。逆行列を求めるのは結構面倒で、コンピュータでもやはり計算コストを食うところです。対称行列ならばそれを転置という操作に置き換えられるので非常に楽になります。対角化しなければならない問題が出てきたときに、必ずその行列が対称行列ではないかを調べるようにしてください。愚直に問題を解くより遥かに早く楽に終わります。数学のあらゆる応用面で姿を表す関数です。場合は行列指数関数と呼ばれます。これは以下で定義されます。これは行列の和ですから、成分ごとに考えてあげれば済む話です。計算するのが非常に困難であるということです。そもそも各項の成分を求められないという状態なわけです。対角行列ならばべき乗は、各対角成分を個別にべき乗してあげれば済む話です。一般の行列では行列の積の計算が複雑であるがために、簡単な計算に帰着できません。ここで行われる発想が、行列の対角化です。対角化してしまいましょう。対角化できることを私達は知っています。固有値分解と言います。計算するのはそこまで大変ではありません。対角化(固有値分解)を使うことで、上記のように変形されます。部分は単位行列になりますからと変形されます。はただの対角行列ですから簡単に求めることができますね。乗したものを対角成分に並べて、最後に固有ベクトルを並べた行列で上記のように挟むだけでいいのです。これを使って定義式に代入してやればと表すことができます。べき乗の計算はそれぞれスカラー値に行うだけになり、行列演算は両端の2つだけです。対称行列ならば、逆行列を求める作業すらいらないということになります。実は和の計算の部分は更に簡略化されます。成分を考えればとなっており、これは定義から普通の指数関数とあらわせてしまうのです。固有値を求めたら上記のように指数関数を作って対角成分に並べ、固有ベクトルを求めてしまえば行列指数関数は求められることになります。このテクニックを使う機会は、機械学習ではあまりないかもしれません。制御工学など連立微分方程式を基礎としている分野では頻出です。»プロフィール自分が勉強していく上で学んだことなどをまとめていきたいと思います。ML_deepスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。