この記事は、【ハックしないE資格対策記-03-(前編)】~さようなら、全ての付け焼刃特異値分解~をご覧の後に閲覧することをおすすめします。
ここまで特異値分解の解き方を丁寧に説明してきました。しかし、なぜE資格のシラバスに特異値分解が登場してくるのでしょうか。それはもちろん機械学習にとって行列をうま~く分解できたほうが何かと都合が良いからです。機械学習は応用分野ですからね。使われる手法には必ず意味があるのです。ということでここからは特異値分解と機械学習の関りについてお伝えしていきます。
行列を特異値分解すると、
であり、まとめて
と表記することができます。このとき、途中の番目までの和を取ってできる行列
は、行列の持つ本質的な特徴(情報)を要約した行列であり、これが低ランク近似です。
また、低ランクで近似することを次元削減とも呼びます。
低ランク近似が出来ると何が嬉しいのでしょうか。
行列の持つ本質的な特徴(情報)を保持しつつ計算量を減らすことができ、大量のデータを扱う機械学習に必要な膨大な計算時間や電力消費などの計算資源を軽減してくれるという点で低ランク近似は重宝されます。
行列の持つ本質的な特徴(情報)を人間が確認するには、人間が認識できる3次元以下の情報に落とし込まなければいけません。そこで使われるのが低ランク近似です。
低ランク近似を、幾何的なアプローチと画像データを使った具体的事例からのアプローチの両側から見てみましょう。
まず、幾何的に、低ランク近似では何が起きているのか見てみましょう。
結論、低ランク近似は小さな特異値を含む順に次元削減することで行列の本質的な特徴を失わずにモチベーションを満たす手法です。
その理由を順を追って説明して参ります。
最初にの中身を
と定義します。ここで、特異値は>>です。この定義から、特異値分解は
です。
右辺を計算すると、
と表すことができて、行列の各要素に対応していることが分かります。このことから、各要素には必ず特異値、 、が含まれていることも分かります。よって特異値は各要素に与えている影響力と言うことができます。
ここで新たに影響力という概念が登場しましたが、何にどう影響を与えているでしょうか。低ランク近似の過程と共に視覚的に見ていきましょう。
まず、行列を
から成る列ベクトル
とします。
次に、を
から成る列ベクトル
としてを
とします。
ここまでの変形より、は
と表せ、よって
となります。
特異値分解の定義からは直交行列で、は大きさ1の単位ベクトルかつ互いに直交した正規直交行列なので、幾何的に以下の図の様に表せます。
正規直交基底のに特異値を掛けた三次元実ベクトル空間なのでそれぞれの軸の長さは異なり大きさは>>の順になっています。この空間上に行列の列ベクトルをプロットすると各の大きさの関係を見ることができます。例えば、行を個のデータ集合、列を個の特徴量とした場合の行列の列ベクトルは、各特徴量が持つ本質的な特徴(情報)であり保持するべき大切な情報です。
ここで、計算資源節約のために次元削減してみましょう。ただし、保持すべき大切な情報は失わないように削減する次元を上手に選択する必要があります。
まずは、最も小さく影響力の低い特異値を含む次元を削減してみましょう。すると、以下の図の様に、から成る二次元実ベクトル平面上に各がプロットされる形に変換されます。
次元を削減する前と見比べてみてどうでしょうか。とが低くとが高いとか、と一番近くにあるのはみたいな関係が保持されているのが分かると思います。一方、以下の図の様に最も大きく影響力の高い特異値を含む次元を削減して、から成る二次元実ベクトル平面上に各がプロットされる形に変換するとどうでしょう。
と一番近くにあるのがであるという関係性が失われてしまっているのが分かるかと思います。
これらの図は一例ですが、小さい特異値を含む次元は削減しても全体の本質的な特徴は失いづらく、大きい特異値を含む次元を削減すると全体の特徴が保持しづらいことはどんな行列でも共通しています。これは、大きい特異値が全体の本質的な特徴に大きく影響していることを表しており、特異値が影響力と言われる理由だと考えられます。この特異値をどこまで残してどこまで削減するかは、ハイパーパラメータとして人間が設定する必要があります。
よって、低ランク近似は小さな特異値を含む順に次元削減することで行列の本質的な特徴を失わずにモチベーションを満たす手法です。
結論、
この画像を低ランク近似すると、
番目までぐらいの画像を足し合わせると行列の本質的な特徴(ここでは画像が何を表しているか)を保持できることが分かりました。故に個の次元は削減しても問題ないことになります。大きく計算資源が節約出来ましたね。
もう少し丁寧に説明していきます。
今回低ランク近似に用いた画像は私のアイコンにもなっている画像で、ピクセル数は縦横で画像のチャンネルを1つにする都合上グレースケール化しています。
この画像を特異値分解すると特異値は個得られます。幾何的イメージに照らし合わせると、各ピクセル(要素)に必ず個の特異値が含まれており、それぞれ各ピクセルに影響を与えています。これらの特異値のうち行列の本質的な特徴(ここでは画像が何を表しているか)を保持できる最低限のランクになるを探していきますどうやって探すのかは以下の様にイメージしてください。
特異値分解は画像を各特異値から成る枚の画像に分解することを指し、一番大きい特異値を持つ画像から順に番目まで足していったものがランクの低ランク近似であり、上記のの推移図の様に出力を見ながらハイパーパラメータの最適な値を探します。今回の例では辺りがおおよそ最適だと言えますね。
このように画像を低ランク近似するのは視覚的にも分かりやすく具体例としては優秀です。
以下のPythonコードから簡単に低ランク近似した画像を保存できるますので是非遊んでみてください。
※Web上の実行環境でローカル環境の画像を入力する方法が分からないので、コピペして各自のローカル環境で遊んでみてください。
Magicode上でローカル画像を読み込む方法がわかる方がいたら是非コメントで教えてください。
これにて、長きにわたる特異値分解の解説は終了となります。 最後までお付き合いいただいてありがとうございます!そしてお疲れさまでした。
随伴行列とは、成分が複素数である行列に対して、全ての成分を複素共役にし、さらに転置行列にしたものです。[^6]
複素数
実数を、純虚数をとした場合、で表されるのことを複素数と言う。複素数は、で実数、で虚数になる。つまり、複素数は、実数と虚数を組み合わせた数である。
なお、複素数をとした場合、を実部、を虚部と言う。
例えば、の場合で実数である。一方の場合で虚数である。
複素共役
複素数の虚部の符号を反転させたものです。例えば、複素数の複素共役は、になる。同様にの複素共役はである。
例えば、
の随伴行列は、
となります。
すべての成分において虚部がであれば、となります。
この記事で取り扱う特異値分解は実数のみを想定したものになるので、随伴行列ではなく転置行列として扱っています。
転置行列の基本的な性質として、
であるため、
であることが分かります。
つまり、転置しても変わらない事からとは対称行列です。
任意の実対称行列について、異なる固有値に対応する固有ベクトルは直交する。[^7]
の固有値に対応する固有ベクトルを、に対応する固有ベクトルをとすると、
となります。
②の式の随伴行列は
となります。
ここで、について2通りの変形をします。
についてのの式①より
についての式②’より
よって、
異なる固有値である場合、③が成立するために
となります。
よって、ベクトルの直交性によりとは直交しています。
イメージを掴むために例を用います。例題で用いるのはこの行列です。
固有値は、固有方程式より、です。
固有ベクトルは、については①を解いて 、については②を解いてです。
②’について、随伴行列は全ての成分が実数であれば転置行列と同義であるため、
となります。
④について、
よりとは直交しています。図示するとこの通りです。
でないベクトルとの内積がであるとき、 すなわち、
であるとき、 とが直交するという
同じように、 0 でない n 個のベクトル
のそれぞれの間の内積がになるとき、 すなわち、
であるとき、互いに直交するベクトル、 または直交系を成すベクトルであるという。[^8]
次元ベクトル空間の基底
の内積が互いに直交し、 ノルムが 1 のとき、 すなわち、
を満たすとき、 正規直交基底 (orthonormal basis) という。 ここで はクロネッカーのデルタである。[^9]
基底
線形独立なベクトル
の線形結合全体の集合をベクトル空間という。
したがって、 ベクトル空間に属する任意のベクトルは必ず
と表される ( は係数)。
このとき、 (1) をベクトル空間の基底 (basis) または基 と呼ぶ。 また、基底の数をの次元といい、と表される。[^9]
具体例
は、2 次元実ベクトル空間の基底を成す。 なぜなら、の適当なベクトルは、との線形結合によって、
と表せるからです。また、2次元実ベクトル空間はだけではなく、無数にある任意のベクトルをとの線形結合によって定義できます。
図示するとこの通りです。
線形独立と線形従属
ベクトルの集合 に対して、
を満たす係数 が
のみであるとき、 を (互いに) 線形独立なベクトルという (一次独立ともいう)。 一方で逆に、 ベクトルの集合 が
を満たすときに、0でない係数が存在するならば、すなわち、
であるがどれかのに存在するならば、 は線形従属であるという。[^9]
線形独立と線形従属のイメージはこの通りです。
線形従属の定義として、を満たすとき0でない係数が存在する必要がありますが、具体的なイメージはこの通りになります。
であるとき、係数を変えて
にすると、係数が0でなくてもを満たすのでは線形従属であると分かります。
補足
線形従属な場合、のうち少なくともどれか一つのベクトルが、 その他のベクトルの線形結合によって表される。 例えば、di≠0であれば、と表される。 一方で、 線形独立な場合には、 このような表現は許されない。
よって、 ベクトルの集合の少なくともどれか一つのベクトルを他のベクトルの線形結合で表すことできるときに線形従属であるといい、 どの一つを取っても、 他のベクトルの線形結合で表すことができないときに線形独立であるという。[^9]
引き続き上記の具体例を用いたイメージがこの通りになります。
の係数をにすることで、以下のような式が成り立ち、
ベクトルはその他のベクトルの線形結合によって表せるのでは線形従属であると分かります。
ノルム()
ノルムとは、簡単に説明するとベクトル空間上の距離を表しており、その中でも正規直行基底の定義で用いられているノルムは、私たちが直感的に想像する距離を表します。つまり、始点から終点までを直線で繋ぐ距離のことです。
このノルムは、
という式で表せます。何故この式で表せるのかは、三平方の定理を思い出して頂ければ分かります。
実例を見てみましょう。
2次元実ベクトル空間において、基底を成す
の線形結合によって定義されたベクトル
があるとします。イメージはこの通りです。
このベクトルの距離はどう測ればよいでしょうか。ここで登場するのが三平方の定理です。
三平方の定理を使って計算してみましょう。
これでこのベクトルの距離がであることが分かりました。
ノルムも考え方はこれと同じで、次元ベクトル空間のベクトルの距離まで計算が可能になる様により一般化されたものだと考えてください。
実際にノルムの式を使って計算してみると、
三平方の定理から導き出した答えと同じであると分かります。
3次元実ベクトル空間の基底を成す
は、
により内積が互いに直交しており、ノルムは
全て1であり、はそれぞれ正規直行基底です。
また、正規直交基底の集合のことを正規直行系と言います。
別の基底も用意したのでぜひ自分で正規直行基底であるのか確かめてみてください。
次の関係
を満たす正方行列Rを 直交行列という。[^10]
直交行列の性質の1つとして、列ベクトルが正規直行系であるというものがあります。
行列の列ベクトルを
と表すとき、 が直交行列であることと、 これらが正規直交系を成すこと
は、 互いに必要十分条件である。 [^10]
証明については、参考文献から確認してみてください。
いかがだったでしょうか?特異値分解について計算手順、機械学習での使い道と解釈は理解できるようになりましたか?
今回は結構な超大作になってしまいました。書き始めたころには2週間以上もかかるなんて思いもしませんでしたが、こだわり癖が発症してこの有様です。タイトルが某汎用人型決戦兵器神話をパロっているのは、勝手に監督の苦悩に重ねていたからかもしれないですね。おこがましすぎますね。はい。でもまあ、おかげで記事のクオリティは満足いくものになったと思いますので、皆さんのお役に立てていれば本望です。
話は変わって、固有値分解から特異値分解まで線形代数の関門について勉強してみて改めて線形代数は頭に幾何的イメージが頭の中に描けるかどうかが全てだなと身を持って深く体感しましたね。イメージを具体的な図に落とし込む作業はなかなか時間のかかるものですが、おかげでしっかりと脳に刻まれています。あとは数学記号と数学用語をスラスラ使えるようになればより厳密な理解が進むといったところでしょうか。皆さんも勉強した内容は脳内にイメージできる形で構造化することをおすすめします。
それから、本記事では特異値と機械学習の関係についても取り上げましたが、これは実は主成分分析とほぼ同じことをしているんですよね。共通点と差異点がまだ不確かなのでそれはまた教師無し学習の記事で触れたいと思います。
とにもかくにも何とか最後まで書き上げられてよかったです。読んでくれてありがとう!!
本記事への感想やご質問、ご指摘などなどお気軽にコメントして頂けると記事の精度がどんどん上がっていきますので是非よろしくお願い致します。それからコメントやスーパーコメントをして頂けると記事投稿のモチベーションが爆上がりするのでそちらも是非!
次の記事へ➡【ハックしないE資格対策記-04-】~不確実性を定量化する確率とかいう人類の叡智をイメージしたい~(現在準備中)
【ハックしないE資格対策記】の各記事をシラバス(2020版)と同じ形式でコンテンツツリーにしています。 気になる記事に一瞬でたどり着けますのでどうぞご活用ください!
〔E資格とは〕
〔応用数学〕
〔機械学習〕
〔深層学習〕
〔開発・運用環境〕
[^4]: chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/viewer.html?pdfurl=https%3A%2F%2Fwww.chaos.cs.tsukuba.ac.jp%2Fila%2Fchapter7.pdf&clen=143379&chunk=true / 閲覧2022.3.7 / Σ部分について一部改変して引用
[^5]: スキルアップAI株式会社 小縣信也/斉藤翔太/溝口聡/若杉一幸 /徹底攻略ディープラーニングE資格エンジニア問題集 第2版/株式会社インプレス/2021/24頁
[^6]: 随伴行列とは - Cognicull / (https://cognicull.com/ja/wx20mwdt#:~:text=%E9%9A%8F%E4%BC%B4%E8%A1%8C%E5%88%97%E3%81%A8%E3%81%AF%E3%80%81%E6%88%90%E5%88%86,%E8%A1%8C%E5%88%97%E3%81%AB%E3%81%97%E3%81%9F%E3%82%82%E3%81%AE%E3%81%A7%E3%81%99%E3%80%82) / 閲覧2022.3.3
[^7]: 対象行列の固有値と固有ベクトルの性質の証明 / 高校数学の美しい物語 / (https://manabitimes.jp/math/1096) / 閲覧2022.3.5
[^8]: ベクトルの直交性とは?/ - 理数アラカルト - / (https://risalc.info/src/orthogonality.html) / 閲覧2022.3.5
[^9]: 基底・直交基底・正規直交基底とは? / - 理数アラカルト - / (https://risalc.info/src/basis-cons-dimension.html) / 閲覧2022.3.5
[^10]: 直交行列とは? ~ 公式と性質 ~ (証明付) - 理数アラカルト - / (https://risalc.info/src/orthogonal-matrix-properties.html#cons) / 閲覧2022.3.7