表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
49/49

49 テイミング

 ソラは、王城内に割り当てられた一室で、頭をひねっていた。


 ――トロワ姫に、この先、どんな数学を教えるのがいいんだろう。一つは数理計画法でいいよね。パン屋さんとは規模が違うけど、王国の運営を改善するにも役に立ちそうだし。もう一つは、やっぱりデータ分析ができる特異値分解かな。


 ソラは、特異値分解に関するジンの講義を思い起こす。


「坊や、データと情報の違いは分かるかのう」


 ジンは、そう言って講義を始めた。

 ソラは、当然の質問をする。


「データって何ですか?」

「データとは、人手や魔導具などで何かを測定した数値のことじゃ。それだけ見ても、どうしたらよいか分からないものかのお。一方、情報とは、人が見て意味が分かるように、整理されたデータじゃな」


 ジンの解説を聞いてもピンと来なかったソラは、具体例で尋ねる。


「例えば、人の身長はデータですか、情報ですか?」


「測った身長そのものは、データじゃな。単に170cmと言われてもどうしたらよいか困るじゃろう。これが、16歳の女性で、同年代の平均身長が158cmと整理されていれば、背が高いという情報になる。一年前の身長165cmと組み合わせた形で整理されていれば、背が伸びたという情報じゃ」


 ソラは、なるほど、とつぶやいた。


「多量のデータを整理して、何らかの情報を取り出す作業のことをデータ分析と呼ぶ。データ分析の手段として、特異値分解を使うものがある。データを魔物にたとえると、特異値分解は魔物を飼いならすテイミングと言えるじゃろう。データ分析は後日にするとして、今日は、特異値分解の話をしようかの」


 ソラは、よろしくお願いします、と応じた。


「行列の特異値分解とは、正方行列とは限らない一般の行列を対角行列に変換するものじゃ。対角行列は素直で扱いやすい。じゃから、データ分析などで重要な役割を果たしている。固有値や三角化と同様、具体的な計算は魔導具でできるから、ここでは特異値分解がなぜ可能かを説明する」


 ジンは講義の概要を述べた。


 最初に、ジンは、特異値分解の準備として、行列の三角化を取り上げる。


「坊やは、行列の三角化を覚えておるかの?」


「はい、師匠。どんな正方行列Aでも、うまい正規直交座標系を取れば、上三角行列Rにできるという話ですね。正規直交座標系の基底はユニタリ行列で表せるので、それをUと書くと、A掛けるUは、U掛けるR、に等しくなります」


 ジンは、満足そうにうなずいた。


「その通りじゃ。ユニタリ行列Uの逆行列はUの随伴。じゃから、Rは、Uの随伴、掛けるA掛けるU、に等しい。この両辺の随伴を取るとどうなるかの?」


 ソラは、とまどいつつも答えを返す。


「随伴というのは、転置で縦横を入れ替えて、複素共役を取る操作ですから、複数の行列が掛けられている場合には、それぞれの行列をその随伴行列に置き換え、掛ける順番を逆向きにすればいいと思います。結局、Rの随伴は、Uの随伴、掛ける、Aの随伴、掛けるU、に等しくなります」


 ジンは、嬉しそうに、正解じゃ、と答えた。


 ここで、ジンは、特殊な種類の正方行列を導入する。


「正方行列Cにおいて、元の行列とその随伴が等しいとき、Cをエルミート行列と呼ぶ。エルミート行列の三角化はどうなるかの?」


 ジンの問いかけに対して、ソラは少し考えてから答える。


「さっきの変形がヒントですよね。エルミート行列に対しては、上三角行列Rとその随伴が等しくなります。上三角行列の随伴は、下三角行列です。だから、対角要素以外はすべて0。つまり、三角化すると対角行列になります!」


 ジンは、エルミート行列の場合、対角行列になるから、三角化でなく対角化と呼ぶと、付け加えた。


「対角化で得られる対角行列の対角要素について、何か言えることはないかの?」

「複素共役を取っても変わらないことから、対角要素はすべて実数と分かります」


 ジンは、その通りじゃ、と返し、補足としてエルミート行列の固有値と固有ベクトルに関する説明を始める。


 ジンは、エルミート行列Cを対角化するユニタリ行列を(x, y, ……)、対角化で得られる対角行列の対角要素をλ、μ、……と置いた。(x, y, ……)は、ユニタリ行列が、ベクトルx、y、……を並べたものであることを表している。


「エルミート行列Cと対角化で得られる対角行列を比べれば、C掛けるx、はλ掛けるx、に等しいことが分かる。他も同様じゃ。つまり、λ、μ、……はCの固有値、x、y、……は対応する固有ベクトルになる。さっきの結果と合わせれば、エルミート行列の固有値は、すべて実数じゃ」


 ソラは、エルミート行列に対する感想をジンに伝える。


「でも、元の行列とその随伴が等しい行列なんて、すごく特殊な気がしますけど」


「そんなことはないぞ、坊や。m、nを正の整数としようか。サイズがm掛けるnの一般の行列Aに対して、Aの随伴、掛けるA、をCと置くと、Cはサイズがn掛けるnのエルミート行列になる。しかも、Cの固有値はすべて0以上じゃ」


 ジンの解説で、ソラは困惑した。


「Cがエルミート行列なのは、Cの随伴も、Aの随伴、掛けるAに等しいことから明らかなので、固有値がすべて実数になることは分かります。でも、なぜ固有値がすべて0以上になるのでしょうか?」


 ソラの質問に、ジンはこともなげに答える。


「Cの固有値と固有ベクトルをそれぞれλ、xとしようかの。C掛けるx、とxとの内積を二通りの方法で計算する。一つは、固有値を使う。λ掛ける、xのノルムの2乗じゃ。もう一つは、Cの定義を使う。A掛けるxというベクトルのノルムの2乗じゃ。二つの式が等しいことから、λは0以上と分かる」


 随伴と元の行列を掛けた行列の対角化の説明が終わったところで、講義は特異値分解に移る。


「これで準備は終わり。いよいよ特異値分解の話をしようかの」


 ジンの宣言に対して、ソラは、はい、お願いします、と応じた。


 ジンはゆっくりと話し始める。


「特異値分解は、正方行列とは限らない一般の行列Aを対角行列に変換するものじゃ。Aのサイズをm掛けるnとする。m、nは正の整数じゃ。Aの随伴、掛けるAをCと置く。Cのサイズはn掛けるnじゃ」


 ソラは、さっきのCですね、と相槌を打った。


「Cはエルミート行列なので、ユニタリ行列で対角化できる。さっき説明したように、このユニタリ行列に並べられたベクトルは、Cの固有ベクトルじゃ」


「このユニタリ行列は、各固有ベクトルの要素を縦一列に並べ、それを固有値の順番に従って、各列を横に並べたものであるということですね。分かります」


 ソラが補足すると、ジンは安心したような表情をした。


 Cの固有値がすべて0以上であることを利用して、ジンはCに並べられた固有ベクトルを二群V、Wに分ける。


「正の固有値の固有ベクトルを並べた行列をV、固有値0の固有ベクトルを並べた行列をWと書く。正の固有値の個数をrとする。Vのサイズはn掛けるr、Wのサイズはn掛ける(n引くr)じゃ。両方の固有ベクトルを並べた行列(V, W)がCを対角化するユニタリ行列じゃ」


 ジンは、そう言った後、VとWが持つ性質を二つ挙げる。


「一つは、A掛けるWが、要素がすべて0の行列になることじゃ。これは、Wの定義から導ける。もう一つは、以下の三つの行列が、サイズは違うがすべて単位行列になることじゃ。こちらは、(V, W)がユニタリ行列であることから明らかじゃ」


・Vの随伴、掛けるV サイズがr掛けるrの単位行列

・Wの随伴、掛けるW サイズが(n引くr)掛ける(n引くr)の単位行列

・V掛ける、Vの随伴、足す、W掛ける、Wの随伴 サイズがn掛けるnの単位行列


 ここで、ジンは、Cの正の固有値を並べた対角行列をΣの2乗と置いた。Σはサイズがr掛けるrの対角行列で、その対角要素は、正の固有値のルート、つまり2乗すると固有値になる正の数である。従って、Σは正則行列である。


「Cは、V掛ける、Σの2乗、掛ける、Vの随伴、に等しくなる。これは要素を比較すれば明らかじゃろう」


 さらに、ジンは、A掛けるV掛ける、Σの逆行列、をUと置き、Uが持つ性質を箇条書きにする。


1:Uのサイズはm掛けるr

2:Uの随伴、掛けるU、は単位行列

3:Aは、U掛けるΣ掛ける、Vの随伴、に等しい


「三番目の性質をAの特異値分解と呼ぶ。随伴を掛けると単位行列になる二つの行列U、Vによって、Aが対角行列Σに変換される。Σの対角要素をAの特異値と言う」


 一息おいて、ジンは続ける。


「ただし、後で、別の形の特異値分解を導入する。それと区別するため、ここでは、この形の特異値分解を小さいサイズの特異値分解と呼ぶことにする」


 ジンは、特異値分解の名称を紹介した。

 ソラは、式変形に納得できず、ジンに尋ねる。


「Uの定義から、一番目と二番目の性質が成り立つことは分かります。ただ、三番目の性質で、左辺は、A掛けるV掛ける、Vの随伴、になるように思います。なぜAに等しくなるのですか?」


 ジンはこともなげに答える。


「V掛ける、Vの随伴は、単位行列、引く、W掛ける、Wの随伴、に等しい。そして、A掛けるW、は要素がすべて0の行列になるから明らかじゃろう」


 ソラは、なるほど、分かりました、と応じた。


 ジンは、小さいサイズの特異値分解の留意点を述べる。


「Cの正の固有値の個数rが0のときは、小さいサイズの特異値分解はできないので注意が必要じゃ。これは、Aの要素がすべて0の場合に当たる」


「逆にrが大きくてnに等しい場合は、どうなのですか?」

「大きい場合は、Wが消えるだけじゃ。特に問題なく、小さいサイズの特異値分解ができるぞ」


 これで、小さいサイズの特異値分解の説明が終わり、講義は、別の形の特異値分解に移る。


 ジンは、一息おいてソラに話しかける。

 

「三角化の話で、お互いに直交する単位ベクトルがいくつか与えられたとき、それらと直交する単位ベクトルを追加して、正規直交基底を作る処理を説明したじゃろう。あの処理をUに適用する」


 ソラは、三角化の講義を振り返りつつ、応答する。


「つまり、Uに並べられたr本のベクトルは、すべて単位ベクトルでお互いに直交しますから、それらと直交する(m引くr)本の単位ベクトルを追加して、正規直交基底を作るのですね、分かります」


 ジンは嬉しそうな表情を浮かべ、補足する。


「その通りじゃ。追加される(m引くr)本の単位ベクトルを並べた行列をZとする。Zのサイズは、m掛ける(m引くr)じゃ。UとZを並べた行列(U, Z)は、サイズがm掛けるmのユニタリ行列になる」


 ジンは、二つのユニタリ行列(U, Z)と(V, W)を用いて、もう一つの形の特異値分解を解説する。


「Aは、(U, Z)掛けるΠ掛ける、(V, W)の随伴、に等しくなる。ただし、Πは、サイズがm掛けるnの対角行列で、サイズがr掛けるrの対角行列Σを0詰めして膨らませたものじゃ。こちらの形を、通常、特異値分解と称する。小さいサイズの特異値分解と区別する場合には、フルサイズの特異値分解と呼ぶ」


「ZとWの要素と掛けられるΠの要素はすべて0なので、行列の掛け算の結果に影響しません。フルサイズの特異値分解は、小さいサイズの特異値分解から簡単に導くことができますね」


 ソラの分析に、ジンは、その通りじゃ、と返した。


「記号を付け替えれば、フルサイズの特異値分解を、U掛けるΣ掛ける、Vの随伴、ただし、U、Vはユニタリ行列、Σは対角行列と書くことができる。この場合には、Uのサイズはm掛けるm、Σのサイズはm掛けるn、Vのサイズはn掛けるnじゃ」


 ソラは、ジンの説明で浮かんだ疑問を口にする。


「小さいサイズの特異値分解と比較して、行列のサイズが大きくなっただけに見えます。フルサイズの特異値分解を使うメリットは何でしょうか?」


 ジンは、フルサイズの特異値分解のメリットを箇条書きにした。


1:Aの要素が全部0で、rが0になる場合も表せるので、どんな行列でも特異値分解することができる


2:U、Vがユニタリ行列になるので、扱いやすい


3:A掛ける、Aの随伴というエルミート行列の固有値と固有ベクトルを表すことができる


4:rがAのランクに等しいことが示せる


「一番目のメリットとして述べられていることは、例えば、ユニタリ行列U、Vを単位行列、対角行列Σの要素をすべて0に取れば、要素が全部0の行列Aの特異値分解になるということですね」


 ジンは、その通りじゃ、と返した。


「二番目のメリットはよく分かります。ユニタリ行列は正則で、逆行列がその随伴なので、式変形が容易です」


「そうじゃ。ユニタリ行列は正規直交基底を定めるから、適当な正規直交座標系を取れば、行列Aによる写像を対角行列Σを掛ける処理と見なすことができる。正方行列とは限らない一般の行列の問題が、対角行列の問題に帰着される」


 ジンが補足すると、ソラは、なるほど、と相槌を打った。


「三番目のメリットは、対角行列Σの対角要素の2乗がこの行列の固有値になり、ユニタリ行列Uに並べられたベクトルが、対応する固有ベクトルになるということですね」


 ソラが確認すると、ジンは、うなずいた。


「四番目のメリットとして挙げられた、rがAのランクに等しい、が分かりません」


 ソラがギブアップすると、ジンは、rがAのランクに等しいことの証明の概略を述べる。


「Aのランクとは、LDU分解して得られる対角行列Dにおける、0でない対角要素の個数じゃ。フルサイズの特異値分解は、Aを正則行列、掛ける、対角行列、掛ける、正則行列の形に表している。二つの式の要素を比較することで、rがAのランクに等しいことが導かれる」


 二種類の特異値分解の説明が終わったところで、講義は、行列の要素がすべて実数である場合の解説に移る。


「データは、多くの場合、実数じゃ。だから、データ分析で使われる特異値分解が対象とする行列Aも、要素がすべて実数になることが多い。この場合の特異値分解がどうなるかを説明しておこうかの」


 ジンは、要素が実数の場合の特異値分解に関連する事項を箇条書きにした。


・複素共役は何もしない操作になるので、随伴の代わりに転置を使うことができる


・元の行列とその転置が等しい正方行列を対称行列と呼ぶ


・転置行列を掛けると単位行列になる正方行列を直交行列と呼ぶ


・要素がすべて実数の対称行列はエルミート行列の特別な場合なので、その固有値はすべて実数になるが、さらに対応する固有ベクトルの要素もすべて実数に選ぶことができる


「よって、要素がすべて実数である行列の特異値分解は、U掛けるΣ掛ける、Vの転置となる。U、Vの要素はすべて実数じゃ。小さいサイズの特異値分解の場合、U、Vは転置行列を掛けると単位行列になるような行列。フルサイズの特異値分解の場合、U、Vは直交行列。Σはいずれにしても対角行列じゃ」


 ジンはそう言って、要素がすべて実数の場合の特異値分解の説明を終えた。


 ソラは、思わず感想を述べる。


「複素数を使って存在を証明しましたが、最終的には、複素数は残らないんですね。複素数は、なんか縁の下の力持ちみたいです」


「複素数を用いて、ある数学的対象が存在することを証明し、次にそれが実数だけで表せることを示すのはよくある論法じゃ」


 講義の最後に、ジンは、魔導具を使って特異値分解を計算するときの留意点を述べる。


「特異値分解では、通常、特異値が大きい順に並べられる」


 ソラが、なぜですか、と尋ねると、ジンは特異値の代表的な使われ方をソラに紹介する。


「データ分析では、大きい特異値が重要になることが多いからのお。第一特異値と言われたら、最大の特異値のことじゃ」


 特異値分解の講義はこれで終了した。

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

↑ページトップへ