機械学習を学ぶための準備 その5(行列のいろいろ)

橘と申します。
機械学習を勉強中の身でありながら、機械学習に関して記事を書いていく予定です。

前回の試験問題の解答

ひとまず、前回の試験問題の解答です。スライドにしてありますので、答え合わせをしてみてください。

 

まだまだご紹介したいことはありますが、準備は今回をもって最後となります。
後は必要に応じて、ご紹介していく予定です。

今までは本当に、基礎の基礎の部分をご紹介してきました。
ですが、特に前回ご紹介した行列の掛け算は、知っているか知っていないかだけで今後の理解度が大きく違ってきます。試験問題に出した行列の掛け算の様々な”見方”は、複雑で触りたくない数式を簡単に見えるような効果がある場合があります。もしまだ不安に感じられたら、もう一度復習をしてみてください。きっと何度かやるうちに感覚がつかめてくることでしょう。「線形代数」という名前が付いている、安い参考書も売っています。これを機にはじめてみてはいかがでしょうか?

さて、今回は様々な行列を紹介していきます。
今まで、説明や練習問題で様々な行列をご紹介してきましたが、実はとても重要な特徴を持つ行列を散りばめていました。最初にそれらを1つずつ見ていきたいと思います。

様々な特徴を持つ行列

正方行列

「正方」の名前の通り、正方形の形をしている行列です。
つまり、行列の行数と列数が同じ行列のことを正方行列と呼びます。

matrix3_1

零行列

準備3の試験問題中に出てきた行列です。
すべての成分が、0の正方行列のことを零行列と呼びます。

matrix3_2

数字の0の特徴は思い浮かびますか?
0は何の数と足してもその数は変化しません。
そして、0は何の数と掛けても、0になりますね。

零行列も同じ特徴を持っていて、どんな行列と足してもその行列の値は変わりませんし、
どんな行列と掛けても零行列になります。

matrix3_3

対角行列

matrix3_4

対角行列は正方行列の一つですが、上の図の対角成分と呼ばれる成分以外の成分が0の行列です。対角成分に0があっても構いません。

単位行列

準備4の試験問題中に出てきた行列です。

matrix3_5

単位行列とは、対角行列の一つですが、対角成分の値がすべて1の行列のことをいいます。
単位行列は、数字で言うと1のような性質を持っています。数字の1はどんな数を掛けてもその数は変化しません。
同じように、単位行列はどんな行列と掛けてもその行列は変化しません。

matrix3_6

転置行列

転置行列とは、元となる行列の行と列を交換した行列です。
イメージとしては、下の図のように対角成分を軸に半回転させた行列です。

matrix3_6.1

対称行列

対称行列とは、元となる行列と、その行列を転置した行列が等しく行列のことを言います。
転置した結果が同じくなるので、対称行列は「行の数と列の数が等しい」、つまり「正方行列」であることに注意します。
対角行列も対称行列の一つです。以下に例を上げておきます。

matrix3_6.2

固有値について

固有値は、一から説明すると少し難しいので、簡単な具体例でご紹介します。
説明のために次の対角行列を用意します。

matrix3_7

このとき、それぞれの対角成分「1 2 3」がこの行列の「固有値」と呼ばれるものです。
対角行列の場合には、何も計算せずとも固有値が求められます。
では、固有値とはどういうものをいうかというと、あるベクトル(行列と同じ行数で、1列の行列)に大して、次のような計算が成り立ちます。

matrix3_8

行列とあるベクトルの掛け算の結果が、固有値とあるベクトルの掛け算の値と一致しています。(このあるベクトルのことを「固有ベクトル」と呼びます。)行列と固有値にはこのような関係が成り立っているのです。

実は、対角行列の場合は、「固有値=対角成分」なのです。ですので、この行列の固有値は、「1,2,3」の3つあります。
上の例では、対角行列の場合の固有値を紹介しましたが、一般の行列でも固有値が存在します。そして、個々の固有値に伴って対応する固有ベクトルが存在します。

この固有値は、行列を扱う上でかなりのキーポイントとなっていて、様々な分野で応用されています。

内積

内積は、2つのベクトル(◯行1列の行列)の成分を上から順番に取り出してきて掛けあわせたものを、それぞれ足し合わせます。説明するとまどろっこしいので、式にしてみます。

matrix3_9

上で見る通り、2つのベクトルの内積の結果は行列ではなく、「ある数」になっています。
前回の試験問題をご覧になった方はもしかしたらピンと来るかもしれませんが、シグマで表現することができます。
そして前回の試験問題を利用することで、次のような計算であることがわかります。

matrix3_10

最初の説明では、内積はベクトル同士の成分の計算でしたが、視点を変えることで様々な見方が得られます。このような視点の変え方によって難しい物が簡単になったり、違う問題に帰着させることができるわけです。

(福山雅治演じるガリレオの映画「容疑者Xの献身」での「幾何の問題に見せかけて、実は関数の問題」や、1クール目最終回の「フィボナッチ数列に見せかけたリュカ数列」のようなものですね)

行列が正(プラス)であるということ

ここから一気にレベルが上がります。今後の説明で「この部分を使っています」と書くようにするので、その都度確認していただいても構いません。

1 や -2 など、数には正負(プラスマイナス)があります。同じように、行列にも正負があります(というよりも正負を定義しています)。直感的には、「行列の成分が全部プラスなら、行列はせいなんじゃない?」と思えたりするのですが、違います。 普通の数の正と使い分けるために、行列が正であることを「正定値である」と呼びます。

「行列が正定値である」ことは、上で紹介した内積というものを使って定義します。まず初めに厳密な定義(難しい定義)を紹介した後に、簡単な例を基に説明していきます。

正定値性を考えるときの行列は、上で紹介した対称行列であることに注意します。

n行n列の対称行列Aが正定値であるとは、(全ての成分が0のものを除く)任意(「どのような」という意味)のn行1列の行列xに対しても
が成り立つことである。

難しいですね。難しいポイントを推測すると、「行列が記号で表示されている」「さっきと違って内積の中に行列が入っている」「任意の(どんな)がよくわからない」というところでしょうか。しかし、Axは前回の行列の掛け算でご紹介した通り、「n行n列」の行列と「n行1列」の掛け算なので「n行1列」になっています。つまり、2つのベクトルの内積となっているわけです。

n行n列の対称行列Aが正定値であるとは、(全ての成分が0のものを除く)任意(「どのような」という意味)のn行1列の行列xに対しても
<x, Ax> > 0
が成り立つことである。

具体的に見てみましょう。先程の固有値のときに使った行列を使って考えてみましょう(上で紹介した通り、対角行列は対称行列でしたね)。内積で使うn行1列のベクトルの成分に(全ての成分が0のものを除いて)どんな値が入っていても内積の結果が0より大きくならないといけないので、漠然とa b c(a,b,cのうち、少なくともどれか一つは0ではない)で表して表してみることにします。

matrix3_11

上の図の通り、内積の結果が必ず正になっていることがわかります。ですので、行列は正定値であるといえるわけです。またもう一つの例で見てみましょう。

matrix3_12

行列Aは対称行列ですが、この例だと、「a = 1、 b = -100」のときに内積の結果が負になってしまいます。ですので、この行列は「正定値」ではありません。(注意: 「負」と言っているわけでもありません。)
このようにして、行列の正について考えることができます。

固有値と行列の正定値の関係

最後に、おまけというかこれがかなりキーだったりするのですが、ご紹介しておきます。
行列の正定値のところの例で、対角行列が正定値であることを確認しました。

matrix3_11

少し上にスクロールして、固有値のところを見てみると、対角行列の場合は、「固有値=対角成分」、と書いてありました。つまり、固有値は「1,2,3」です。
実は、「ある行列が正定値」であることと「その行列の全ての固有値が正」であることは同値なのです。(同値、も数学的には少し難しいのですが、「どちらか一方が示せれば、もう片方が成り立つ」というような意味です)

つまり、定義に従って内積を計算しなくても固有値を見れば行列の正定値がわかる、ということです。

最後に

今回は試験問題はありません。皆さんにクリスマス、年末をゆっくり過ごしていただきたいと思ったからです。
決して、決して執筆の締め切りギリギリで、作る余裕が無いとかではありません。決して。決して。決して。

次回から少しずつ機械学習に入っていきます。理論をやりつつ、時に突然実例が飛び出すと思います。
それでは、良いクリスマスを!

AWS利用料$100ドル無料

あなたにおすすめの記事