【ご挨拶】こんにちは!ぬかさんエンジニアリングです。
本記事をクリックして下さってありがとうございます!
今回は、応用数学より線形代数の特異値分解について取り扱いたいと思います。
特異値分解は、E資格の勉強でまず初めに立ちふさがる関門だと思います。計算自体も面倒だし、解けても何が嬉しいのかいまひとつわかりません。そんな特異値分解についてしっかり計算手順と使い道と解釈を教えてくれる記事があればとても嬉しいですよね。それがこの記事です。
特異値分解の全ての疑問にカシウスの槍をぶっ刺して回っていきますので記事を読み終えた頃には特異値分解に悩まされてきた過去の全てにさようならできると思います。
もちろん文系出身の方にもわかるようになるべく丁寧に詳しく解説していきますので是非最後までご覧ください。
また、特異値分解では計算手順の中で固有値について理解していると分かりやすくなる場面があります。理解度を深めたい方は前回の記事【ハックしないE資格対策記ー02ー】~固有値分解って結局何なの?圏を突破しよう~と合わせてどうぞ。
【本シリーズの概要】
ハックしない"って何?
ハック/-Hack-は…
〔物事をうまくやるための〕こつ、アイデア
*英辞郎 on the WEB『hackの意味・使い方・読み方』1
と言う意味を持っています。
この意味合いで、世の中には生活術や仕事術としての「○○ハック」という言葉が広がっていますよね。
塾や予備校で学ぶ受験対策術も「お受験ハック」です。”傾向と対策”など、大学入試の際に私もお世話になりました。
しかし、本シリーズではそういった対策術だけを記事にすることはありません。
”E資格合格のための5つのコツ”とか”○○時間で合格できるE資格”とか”覚えておきたいコスパ最強10の公式”などは期待しないでください。
ディープラーニングについて頭の中に体系を作り上げていただける様に、記事の内容もコツコツと必要な知識を述べ、体系的に整理して使えるような形を目指して作っていきます。
それが【ハックしないE資格対策記】です。
なぜハックしないのか
何故なら、資格試験の合格はゴールではなくあくまで客観的な知識と技術の基準として存在するものであり、合格後に知識と能力を活かせるかの方が遥かに大切だからです。
ここで一般社団法人日本ディープラーニング協会の公式ホームページからE資格の目的に関する記述を引用します。
ご挨拶
人工知能の分野は、良くも悪くも、「人工知能の定義がない」ということに由来する特徴があります。さまざまな技術を取り込む寛容性がある一方で、なんでもかんでも人工知能と言ってしまうことができ、過剰期待を生みやすい性質もあります。だからこそ、人工知能の分野においては、ある一定の知識レベル・技術レベルの基準を作るということが大変重要と考えます。本協会では、初期の重要な活動としてディープラーニングに関する資格試験を実施したいと考えています。ユーザ企業やエンジニアが、一定の知識レベルを担保することで、地に足の着いた議論や事業開発ができるものと考えています。
一般社団法人 日本ディープラーニング協会
公式ホームページ ご挨拶2
E資格概要
ディープラーニングの理論を理解し、適切な手法を選択して実装する能力や知識を有しているかを認定する。
一般社団法人 日本ディープラーニング協会 公式ホームページ E資格概要3
E資格が目的としていることは引用の通りで、要するにディープラーニングについての能力と知識レベルを客観的な基準で認定して、一定のレベルを担保した上で議論や事業開発が出来るようにすために実施されているのです。
この資格が、合格後にディープラーニングを議論や事業に活かしてもらうためにあると分かった上でもう一度考えてみると、やはりハックせずにコツコツとディープラーニングについての体系を組み立てて長期的に役立つ方向に向かった方が良いなと思いませんか。
概要を読んで良いコンセプトだと感じて下さった方は是非これからのシリーズを見届けていってもらえると嬉しいです。
また、訂正、アドバイス、追加の参考資料の提案などなど、この記事をより良いものにするコメントをして下さるセカンドクリエイターの皆様をお待ちしております。
また、LGTMで盛り上げて頂けるとモチベーションに繋がりますのでクリックよろしくお願い致します!
【今回のテーマ】~特異値分解のイメージと計算方法~
〔ファスト特異値分解〕
特異値分解の計算手順をサクッと確認したい方はこの章を参考にして下さい。
特異値、特異ベクトルとは何ぞ?という方は次章以降じっくり読んで理解した上でこの章で確認していただくことをおすすめします。
◆基本の手順◆
-
$(r≤m≤n)$である$m×n$行列$A$を$UΣV^{T}$に分解する際の各行列の形と大きさを確認する
$Σ$:特異値(固有値$\lambda$の非負の平方根$\sqrt{\lambda}$)$=\sigma$を対角成分に持つ$r×n$の対角行列
$U$:左特異ベクトル($AA^{T}$の固有値$\lambda$から求めた固有ベクトル$u$)を並べた$m×m$の直交行列
$V^{T}$:右特異ベクトル($A^{T}A$の固有値$\lambda$から求めた固有ベクトル$v$)を並べた$n×n$転置直交行列
-
転置行列$A^{T}$を求める
-
$AA^{T}$の固有値$\lambda$を$r$個求める
サラスの公式か余因子展開を使って固有方程式$det(\lambda I-AA^{T})=0$を$\lambda$について解く
-
$AA^{T}$の固有値$\lambda$の非負の平方根$\sqrt{\lambda}=\sigma$を大きい順に並べて$Σ$を完成させる
-
$AA^{T}$の固有値$\lambda$から正規化した固有ベクトル$u$を求め、$U$を完成させる
同次連立一次方程式を行基本変形を使って解く
-
$A^{T}A$の固有値$\lambda$を$n$個求める
$Σ^{T}Σ=n$次元対角行列$Λ$を解いて$n-r$個の固有値を求める
-
$A^{T}A$の固有値$\lambda$から正規化した固有ベクトル$v$を求め、$V$を転置させて完成させる
同次連立一次方程式を行基本変形を使って解く。
$r$個分は、$v_{i}=\frac{1}{\sqrt{\lambda_{i}}}A^{T}u_{i}$を解くことで固有ベクトルを求める。
-
1で確認した形と大きさに当てはまっているか確認する
-
特異値分解$A=UΣV^{T}$の完成!!
-
完成した$UΣV^{T}$と行列$A$が一致するか確認する
〔行列の形と大きさ〕
特異値分解をするにあたって最初に気を付けるべきことが行列の形と大きさです。
固有値分解では、$n$次元正方行列の場合には$P,Λ,P^{-1}$の形と大きさは単純に$n$次元正方行列だと考えればよかったのですが、特異値分解は少し複雑です。
特異値分解の行列の形と大きさの基本のイメージは以下の通りです。
$m$が行列$A$の行数、$n$が行列$A$の列数、$r$は固有値の数です。これら3つの数値によって特異値分解の基本形は3種類に分けられます。③に関しては固有値分解と同じであり、特異値分解が固有値分解も包括しており、固有値分解の一般形であることが分かります。
また、実際に$U$と$V^{T}$を計算する際には$AA^{T}$と$A^{T}A$をそれぞれ固有値分解した際の固有ベクトルを利用するという手順があるために$U$と$V^{T}$は正方行列である必要があり、辻褄合わせ要員の固有ベクトルが登場します。この固有ベクトルは特異値0に対応した固有ベクトルですが、あくまで固有値計算時の辻褄合わせ要員なので0成分で形と大きさを拡張した$Σ$を掛けて実質的な影響を排除します。
イメージは以下の通りで、基本形の①と②に対応してそれぞれ形が異なります。
特異値分解の行列の形と大きさについて理解できたので次から中身についてみていきましょう。
〔特異値分解とは〕
◆定義◆
$m×n$行列$A(m≤n)$が特異値$\sigma$と左特異ベクトル$u$と右特異ベクトル$v$を持つとき、
$$
A=UΣV^{T}
$$ただし、
Σ=(diag(σ1,σ2,...,σm)|0m×(n-m))=\left(\begin{array}{cccc|ccc} σ_{1} & 0 & \dots & 0 & 0 & \dots & 0\\ 0 & σ_{2} & \dots & 0 & 0 & \dots & 0\\ \vdots & \vdots & \ddots & \vdots & \vdots & \ddots & \vdots\\ 0 & 0 & \dots & σ_{m} & 0 & \dots & 0 \end{array}\right)
の対角行列、
U=(u_{1}u_{2}…u_{m})
の直交行列、
V^{T}=\begin{pmatrix}v_{1}\\v_{2}\\\vdots\\v_{n}\end{pmatrix}
の直交行列の転置行列に変形することを特異値分解という。4
-
$Σ$
この定義は$m=r$を前提としており〔行列の形と大きさ〕における②’の形を取っています。実際、$m=r$であることが多いので引用しました。0成分の部分の形と大きさは$m$と$n$の数字によって計算が可能です。
-
$U$(左特異ベクトル)
$AA^{T}$の異なる固有値$\lambda$に対応する固有ベクトル${u_{1},u_{2},…,u_{n}}$を列方向に並べた直交行列
$U$が直交行列であるために、各固有ベクトル${u_{1},u_{2},…,u_{n}}$を$L_{2}$ノルムが1の単位ベクトルに正規化する理由
$AA^{T}$は、転置用列の性質により実対称行列であり、実対称行列の性質により異なる固有値に対する固有ベクトルは直交するため、$u_{1},u_{2},…,u_{n}$ は互いに直交しています。互いに直交しているので、ベクトルの直交性から$(u_{i},u_{j})=0(i≠j)(i,j=1,2,…,n)$であることが分かり、あとは$(u_{i},u_{j})=1(i=j)(i,j=1,2,…,n)$であれば$u_{1},u_{2},…,u_{n}$はそれぞれ正規直行基底であり、正規直行基底の集合である${u_{1},u_{2},…,u_{n}}$は正規直交系となる。よって、直交行列の性質から正規直交系$U$は直交行列となります。
正規直交系であるということは、各固有ベクトル$u_{1},u_{2},…,u_{n}$がそれぞれ正規直行基底であるということであり、つまり各固有ベクトルの$L_{2}$ノルムが1となっている必要があります。
-
$V_{T}$(右特異ベクトル)
$A^{T}A$の異なる固有値$\lambda$に対応する固有ベクトル${v_{1},v_{2},…,v_{n}}$を列方向に並べた直交行列
▽U,Vが直交行列であるために、各固有ベクトルの$L_{2}$ノルムが1となる単位ベクトルに正規化する理由▽
特異値分解では、固有値分解と異なり固有ベクトルを単位ベクトルに正規化する必要があります。
その理由について、分かりやすく説明していきます。
まず、特異値分解の定義として左特異ベクトル$U$と右特異ベクトル$V$を直交行列としている理由について説明します。それは、特異値を求めるのに固有値分解の手法を応用するために都合の良い特異値・特異ベクトルの定義を導き出すためです。詳しくは、〔特異値・特異ベクトル〕の◆定義式のイメージ◆の内容を確認してください。
その上で、直交行列であるために各固有ベクトル${u_{1},u_{2},…,u_{n}}$を$L_{2}$ノルムが1となる単位ベクトルに正規化する理由を証明します。
$U$についての証明は$V$にそのまま当てはまるので、$U$について証明していきます。
$AA^{T}$は、転置行列の性質により実対称行列であり、対称行列の性質により異なる固有値に対する固有ベクトルは直交するため、$u_{1},u_{2},…,u_{n}$ は互いに直交しています。互いに直交しているので、ベクトルの直交性から$(u_{i},u_{j})=0(i≠j)(i,j=1,2,…,n)$であることが分かり、あとは$(u_{i},u_{j})=1(i=j)(i,j=1,2,…,n)$を満たせば$u_{1},u_{2},…,u_{n}$はそれぞれ正規直行基底であり、正規直行基底の集合である${u_{1},u_{2},…,u_{n}}$は正規直交系となります。よって、直交行列の性質から正規直交系$U$は直交行列$U$になります。
$(u_{i},u_{j})=1(i=j)(i,j=1,2,…,n)$が成り立つには、各固有ベクトル$u_{1},u_{2},…,u_{n}$がそれぞれ正規直行基底である必要があり、そのためには各固有ベクトルの$L_{2}$ノルムが1となる単位ベクトルに正規化すればよいです。
よって、$U$が直交行列であるために各固有ベクトル${u_{1},u_{2},…,u_{n}}$を$L_{2}$ノルムが1の単位ベクトルに正規化します。
理由が証明できました。次の項では実際に単位ベクトルに正規化する方法を説明します。
▽単位ベクトルの求め方▽
単位ベクトルは、ベクトルの$L_{2}$ノルムが1となればよいので、以下の様に計算できる。
$U$の1つの固有ベクトル
u_{1}=\begin{pmatrix}
u_{11}\\
u_{12}\\
\vdots\\
u_{1n}
\end{pmatrix}
の$L_{2}$ノルムは通常
\|x\|_{2}=\sqrt{|u_{11}|^{2}+|u_{12}|^{2}+\dots+|u_{1n}|^{2}}=\sqrt{u_{11}^{2}+u_{12}^{2}+\dots+u_{1n}^{2}}
ですが、その解をその解で割ることで
\|x\|_{2}
=\frac{
\sqrt{
|u_{11}|^{2}+|u_{12}|^{2}+\dots+|u_{1n}|^{2}}
}{
\sqrt{u_{11}^{2}+u_{12}^{2}+\dots+u_{1n}^{2}}
}
=\frac{
\sqrt{u_{11}^{2}+u_{12}^{2}+\dots+u_{1n}^{2}}
}{
\sqrt{u_{11}^{2}+u_{12}^{2}+\dots+u_{1n}^{2}}}
=1
となり、
\|x\|_{2}=
\sqrt{
|\frac{u_{11}}{\sqrt{u_{11}^{2}+u_{12}^{2}+\dots+u_{1n}^{2}}}|^{2}+
|\frac{u_{12}}{\sqrt{u_{11}^{2}+u_{12}^{2}+\dots+u_{1n}^{2}}}|^{2}+
\dots+
|\frac{u_{1n}}{\sqrt{u_{11}^{2}+u_{12}^{2}+\dots+u_{1n}^{2}}}|^{2}
}\\=1
で計算できる。つまり、固有値ベクトル$u_{1}$の単位ベクトルは
u_{1}=\begin{pmatrix}
\frac{u_{11}}{\sqrt{u_{11}^{2}+u_{12}^{2}+\dots+u_{1n}^{2}}}\\
\frac{u_{12}}{\sqrt{u_{11}^{2}+u_{12}^{2}+\dots+u_{1n}^{2}}}\\
\vdots\\
\frac{u_{1n}}{\sqrt{u_{11}^{2}+u_{12}^{2}+\dots+u_{1n}^{2}}}
\end{pmatrix}
となります。これだと一般化され過ぎて良く分からないので、
u_{1}=\begin{pmatrix}
3\\
2\\
3\\
\end{pmatrix}
だとしたときの単位ベクトルを求めます。
\|x\|_{2}=\sqrt{|3|^{2}+|2|^{2}+|3|^{2}}=\sqrt{9+4+9}=\sqrt{22}
\|x\|_{2}
=\frac{
\sqrt{|3|^{2}+|2|^{2}+|3|^{2}}
}{
\sqrt{22}
}
=\frac{
\sqrt{22}
}{
\sqrt{22}
}
=1
\|x\|_{2}=
\sqrt{
|\frac{3}{\sqrt{22}}|^{2}+
|\frac{2}{\sqrt{22}}|^{2}+
|\frac{3}{\sqrt{22}}|^{2}
}=1
以上により、
u_{1}=\begin{pmatrix}
\frac{3}{\sqrt{22}}\\
\frac{2}{\sqrt{22}}\\
\frac{3}{\sqrt{22}}
\end{pmatrix}
と求まります。
以上が単位ベクトルの求め方です。
次章では、さらに特異値・特異ベクトルとは何なのか深堀りしていきます。
〔特異値・特異ベクトル〕
◆定義◆
任意の零行列ではない$m×n$行列$A$に対して、
$Av=\sigma u$
$A^{T}u=\sigma v$
(ただし、$\sigma>0$、$u$、$v$はともに零ベクトルではない)
を満たすような正の数$\sigma$を特異値、$m$次元ベクトル$u$を左特異ベクトル、 $n$次元ベクトル$v$を右特異ベクトルと呼びます。 5
◆定義式のイメージ◆
特異値・特異ベクトルの定義式が
Av=\sigma u\\
A^{T}u=\sigma v
である理由は、特異値分解の定義から導き出すことができます。順を追って図示しながら説明します。
まず、特異値分解の定義から
A=UΣV^{T}
=(u_{1}u_{2}…u_{m})
\left(\begin{array}{cccc|ccc}
σ_{1} & 0 & \dots & 0 & 0 & \dots & 0\\
0 & σ_{2} & \dots & 0 & 0 & \dots & 0\\
\vdots & \vdots & \ddots & \vdots & \vdots & \ddots & \vdots\\
0 & 0 & \dots & σ_{m} & 0 & \dots & 0
\end{array}\right)
\begin{pmatrix}v_{1}\\v_{2}\\\vdots\\v_{n}\end{pmatrix}\\
=u_{1}\sigma_{1}v_{1}^{T}+\dots+u_{n}\sigma_{n}v_{n}^{T}
=\sigma_{1}u_{1}v_{1}^{T}+\dots+\sigma_{n}u_{n}v_{n}^{T}…(a)
に変形することができます。そして、$U$と$V^{T}$が直交行列であることから
(u_{i}^{T},u_{j})=(v_{i}^{T},v_{j})=\left\{\begin{array}{}0 & (i≠j) \\1 & (i=j) \end{array}\right.\\=\delta_{ij}…(b)
であります。
この性質(b)によって式(a)の両辺に右側から$v_{1}$を掛けると、
Av_1=\sigma_1u_1v_1^Tv_1+\dots+\sigma_mu_mv_m^Tv_1\\
=\sigma_1u_11+\dots+\sigma_mu_m0\\
=\sigma_1u_1
となり、特異値・特異ベクトルの定義式の1行目が求まりました。
$A^{T}$に関して特異値分解の定義から式(a)の様に
A^{T}=(UΣV^{T})^{T}=VΣ^{T}U^{T}=\sigma_{1}^{T}v_{1}u_{1}^{T}+\dots+\sigma_{m}^{T}v_{m}u_{m}^{T}=\sigma_{1}v_{1}u_{1}^{T}+\dots+\sigma_{m}v_{m}u_{m}^{T}…(c)
変形することができます。その上で直交行列の性質によって、(b)の両辺に右側から$u_{1}$を掛けると、
Au_1=\sigma_1v_1u_1^Tu_1+\dots+\sigma_mv_mu_m^Tu_1\\
=\sigma_1v_11+\dots+\sigma_mv_m0\\
=\sigma_1v_1
となり、特異値・特異ベクトルの定義式の2行目が求まりました。
ここで、実例を用いて式(a)に関して更に理解を深めましょう。
取り扱う行列$A$は
A=\begin{pmatrix}2&1&1\\1&1&2\end{pmatrix}
です。この行列$A$を特異値分解して(a)の様に変形し、左辺第一項のみを取り出した
A=\sigma_1u_1v_1^T…(d)
を計算すると
A=u_{1} \sigma_{1}v_{1}^{T}=\frac{1}{\sqrt{2}}\begin{pmatrix}1&0\\1&0\end{pmatrix}
\begin{pmatrix}\sqrt{11}&0&0\\0&0&0\end{pmatrix}\frac{1}{\sqrt{22}}\begin{pmatrix}3&2&3\\0&0&0\\0&0&0\end{pmatrix}
\\=\begin{pmatrix}\frac{3\sqrt{11}}{\sqrt{2}\sqrt{22}}&\frac{3\sqrt{11}}{\sqrt{2}\sqrt{22}}&\frac{2\sqrt{11}}{\sqrt{2}\sqrt{22}}\\\frac{2\sqrt{11}}{\sqrt{2}\sqrt{22}}&\frac{3\sqrt{11}}{\sqrt{2}\sqrt{22}}&\frac{3\sqrt{11}}{\sqrt{2}\sqrt{22}}
\end{pmatrix}=\begin{pmatrix}1.5&1&1.5\\1.5&1&1.5\end{pmatrix}
となります。図示してみると以下の通りになります。
この式(d)の両辺に$v_{1}$ を掛けると
Av_{1}=\sigma_1u_1v_1^Tv_{1}
であり、左辺を計算すると
Av_{1}=
\begin{pmatrix}2&1&1\\1&1&2\end{pmatrix}\frac{1}{\sqrt{22}}
\begin{pmatrix}3&0&0\\2&0&0\\3&0&0\end{pmatrix}=
\begin{pmatrix}\frac{11}{\sqrt{22}}\\\frac{11}{\sqrt{22}}\end{pmatrix}
となり、右辺を計算すると
u_{1} \sigma_{1}v_{1}^{T}v_{1}=
\frac{1}{\sqrt{2}}\begin{pmatrix}1&0\\1&0\end{pmatrix}
\begin{pmatrix}\sqrt{11}&0&0\\0&0&0\end{pmatrix}\frac{1}{\sqrt{22}}
\begin{pmatrix}3&2&3\\0&0&0\\0&0&0\end{pmatrix}\frac{1}{\sqrt{22}}
\begin{pmatrix}3&0&0\\2&0&0\\3&0&0\end{pmatrix}\\=u_{1}\sigma_{1}=
\frac{1}{\sqrt{2}}\begin{pmatrix}1&0\\1&0\end{pmatrix}
\begin{pmatrix}\sqrt{11}&0&0\\0&0&0\end{pmatrix}=
\begin{pmatrix}\frac{\sqrt{11}}{\sqrt{2}}\\\frac{\sqrt{11}}{\sqrt{2}}\end{pmatrix}=
\sigma_{1}u_{1}
となります。つまり、
Av_{1}=\sigma_{1}u_{1}\begin{pmatrix}\frac{11}{\sqrt{22}}\\\frac{11}{\sqrt{22}}\end{pmatrix}
=\begin{pmatrix}\frac{\sqrt{11}}{\sqrt{2}}\\\frac{\sqrt{11}}{\sqrt{2}}\end{pmatrix}
\frac{\sqrt{11}}{\sqrt{11}}
になります。これで更に特異値・特異ベクトルの定義式の理解が深まりました。
◆定義式から求める特異値と固有値の関係◆
定義式を変形すると特異値と固有値の関係が見えてきて、固有値分解の手法を使って計算可能であることが分かります。それでは説明していきます。
まず、定義式の一行目の両辺に$A$を右から、定義式の二行目の両辺に$A^{T}$を左から掛けます。
すると定義式は以下の通りに変化します。
A^{T}Av=\sigma A^{T}v=\sigma \sigma v=\sigma^{2}v\\
AA^{T}u=\sigma Au=\sigma \sigma u=\sigma^{2}u
簡潔にはこうです。
A^{T}Av=\sigma^{2}v\\
AA^{T}u=\sigma^{2}u
この形、何かに似ていると思いませんか?
そうです、固有値・固有ベクトルの定義
Av=\sigma v\\
です。つまり、
A^{T}A=\sigma^{2}\\
AA^{T}=\sigma^{2}
だということです。特異値が$AA^{T}$の固有値$\lambda$の非負の平方根$\sqrt{\lambda}$なのは、この式から導かれたものだったのです。これにより、特異値分解だけの複雑な計算方法を覚えることなく、慣れ親しんだ固有値分解の手法をそのまま使ってもよいことになるのです。
◆固有値分解の定義式から求める特異値と固有値の関係◆
ここで、もう一つのアプローチ方法を示したいと思います。人によってはこちらの方が分かりやすいかもしれません。それでは説明していきます。
まず、固有値分解の定義と転置行列の性質から、
A=UΣV^{T}\\
A^{T}=VΣ^{T}U^{T}
が得られます。そうすると、$A^{T}A$は
A^{T} A= VΣ^{T}U^{T}UΣV^{T}
で表せ、直交行列の性質から$U^{T}U=I,VV^{T}=I$なので、
A^{T}A=VΣ^{T}ΣV^{T}=Σ^{T}Σ\\
と式変形でき、
A^{T}A=Σ^{T}Σ
であることが分かります。
次に、$AA^{T}$は
AA^{T}=UΣV^{T}VΣ^{T}U^{T}
で表せ、直交行列の性質から$UU^{T}=I,V^{T}V=I$なので、
$$
AA^{T}=UΣΣ^{T}U^{T}=ΣΣ^{T}UU^{T}= ΣΣ^{T}\
$$
と式変形でき、
$$
AA^{T}=ΣΣ^{T}
$$
であることが分かります。
つまり、
$$
A^{T}A=Σ^{T}Σ\
AA^{T}=ΣΣ^{T}
$$
です。結果的に、特異値・特異ベクトルの定義式から導き出した
$$
A^{T}A=\sigma^{2}\
AA^{T}=\sigma^{2}
$$
と同義ですが、行列の形と大きさが簡単に求められるのでこちらの方が便利かもしれないです。
〔特異値分解の求め方〕
これまで学んできたことを使って実際に計算してみましょう。
今回取り扱う行列は$2×3$の以下の行列です。
A=\begin{pmatrix}2&1&1\\1&1&2\end{pmatrix}
手順を確認しながら進めていきましょう。
-
$(r≤m≤n)$である$m×n$行列$A$を$UΣV^{T}$に分解する際の各行列の形と大きさを確認する
$Σ$:固有値が重解でない限り$r=m$なので、形と大きさは②’を想定して$2×3$
$U$:固有値が重解でない限り$r=m$なので、形と大きさは②’を想定して$2×2$
$V^{T}$:固有値が重解でない限り$r=m$なので、形と大きさは②’を想定して$3×3$
-
転置行列$A^{T}$を求める
A^{T}=\begin{pmatrix}2&1\\1&1\\1&2\end{pmatrix}
-
$AA^{T}$の固有値$\lambda$を$r$個求める
まずは実対称行列$AA^{T}$を求めます。
AA^{T}= \begin{pmatrix}2&1&1\\1&1&2\end{pmatrix} \begin{pmatrix}2&1\\1&1\\1&2\end{pmatrix}\\= \begin{pmatrix}6&5\\5&6\end{pmatrix}
次に、固有方程式に$AA^{T}$を代入して$λ$について解きます。
det(A-λI)= \begin{vmatrix}\begin{pmatrix}6 & 5 \\5 & 6 \\ \end{pmatrix}-\begin{pmatrix}λ & 0 \\0 & λ \\ \end{pmatrix}\end{vmatrix}= \begin{vmatrix}6-λ & 5-0 \\5-0 & 6-λ \\ \end{vmatrix}=0
サラスの公式を使い行列式を解くと
(6-λ)(6-λ)-25=λ^{2}-12λ+11=(λ-11)(λ-1)=0
となり、よって固有値は$λ=11,1$です。
この後、各固有値を使ってそれぞれの固有ベクトルを求めるため$λ1=11,λ2=1$と置きます。
-
$AA^{T}$の固有値$\lambda$の非負の平方根$\sqrt{\lambda}=\sigma$を大きい順に並べて$Σ$を完成させる
まず、〔特異値分解とは〕の◆定義◆より、今回の例では
Σ= \begin{pmatrix} \sigma_{1}&0&0\\ 0&\sigma_{2}&0 \end{pmatrix}
であることが分かります。
そして、◆固有値分解の定義式から求める特異値と固有値の関係◆より、
AA^{T}=ΣΣ^{T}
なので、$AA^{T}$の固有値$λ1=11,λ2=1$を
\begin{pmatrix} λ_{1}&0\\ 0&λ_{2} \end{pmatrix}= \begin{pmatrix} 11&0\\ 0&1 \end{pmatrix}
とすると、
ΣΣ^{T}= \begin{pmatrix}σ_{1} & 0 & 0\\ 0 & σ_{2}& 0\end{pmatrix} \begin{pmatrix}σ_{1} & 0\\ 0 & σ_{2}\\ 0 & 0\end{pmatrix}= \begin{pmatrix}σ_{1}^{2} & 0 \\ 0 & σ_{2}^{2} \end{pmatrix}= \begin{pmatrix}λ_{1} & 0 \\ 0 & λ_{2} \end{pmatrix}= \begin{pmatrix}11 & 0 \\ 0 & 1 \end{pmatrix}
と表せて
σ_{1}^{2}=11,σ_{2}^{2}=1\hspace{10pt}\therefore σ_{1}=\sqrt{11},σ_{2}=1
となります。
この結果から固有値$λ_{1}=11,λ_{2}=1$の非負の平方根 $\sqrt{λ_{1}}=\sqrt{11},\sqrt{λ_{2}}=\sqrt{1}$を大きい順に並べて
Σ= \begin{pmatrix} \sqrt{\lambda_{1}}&0&0\\ 0&\sqrt{\lambda_{2}}&0 \end{pmatrix}= \begin{pmatrix} \sqrt{11}&0&0\\ 0&\sqrt{1}&0 \end{pmatrix}
が完成します。
-
$AA^{T}$の固有値$\lambda$から正規化した固有ベクトル$u$を求め、$U$を完成させる
同次連立一次方程式
(A-\lambda_{i} I)\boldsymbol{u_{j}}=0\\ (i=1,2,...,n)(j=1,2,...,n)
の自明でない解を求めます。
まず、$λ1=11$の場合について計算します。
ここでは$u$を一つ目の固有ベクトルとして$u_{1}$と表記し、 $(A−λ_{i}I)u_{1}=0$とします。
ここで$λ_{i}$に$11$を代入すると(A-λ_{i}I)\boldsymbol{u_1}= \begin{Bmatrix}\begin{pmatrix}6 & 5 \\5 & 6 \\ \end{pmatrix}- \begin{pmatrix}11 & 0 \\0 & 11 \\ \end{pmatrix} \end{Bmatrix}\boldsymbol{u_1}= \begin{pmatrix}6-11 & 5-0 \\5-0 & 6-11 \\ \end{pmatrix}\boldsymbol{u_1}= \begin{pmatrix}-5 & 5 \\5 & -5 \\ \end{pmatrix}\boldsymbol{u_1}=0
が求まり、
\boldsymbol{u_1}=\begin{pmatrix}x_{11} \\x_{12} \\ \end{pmatrix}
なので
(A-λ_{i}I)\boldsymbol{u_1}= \begin{pmatrix}-5 & 5 \\5 & -5 \\ \end{pmatrix} \begin{pmatrix}x_{11} \\x_{12} \\ \end{pmatrix}= \begin{pmatrix}0 \\0 \\ \end{pmatrix}
となります。係数行列を行基本変形によって階段行列に変形し
\begin{pmatrix}-5 & 5 \\5 & -5 \\ \end{pmatrix} \rightarrow \begin{pmatrix}1 & -1 \\0 & 0 \\ \end{pmatrix}
が求まるので、$u_{1}$を掛けて
\begin{pmatrix}1 & -1 \\0 & 0 \\ \end{pmatrix} \begin{pmatrix}x_{11} \\x_{12} \\ \end{pmatrix}= \begin{pmatrix}x_{11} & -x_{12} \\0 & 0 \\ \end{pmatrix}= \begin{pmatrix}0 \\0 \\ \end{pmatrix}
となるので、$x_{11}$と$x_{12}$について一次方程式を解くと
x_{11}-x_{12}=0
であり、解は自明ではない解であるため任意定数$c$を用いて
x_{11}=c\\ x_{12}=c
です。つまり、
u_{1}= \begin{pmatrix} x_{11}\\ x_{12} \end{pmatrix}= \begin{pmatrix} c\\ c \end{pmatrix}= c\begin{pmatrix} 1\\ 1 \end{pmatrix}
です。
特異値分解では、$U$を直交行列にするために固有ベクトルを大きさ1の単位ベクトルに直してあげる必要がありますので、$L_{2}$ノルムを用いて
\|x\|_{2}=\sqrt{|c|^{2}+|c|^{2}}=\sqrt{2c^{2}}=\sqrt{2}\sqrt{c^{2}}=\sqrt{2}c=1
\|x\|_{2}=c=\frac{1}{\sqrt{2}}
以上により
u_{1}=\frac{1}{\sqrt{2}} \begin{pmatrix} 1\\ 1\\ \end{pmatrix}= \begin{pmatrix} \frac{1}{\sqrt{2}}\\ \frac{1}{\sqrt{2}}\\ \end{pmatrix}
と求まりました。
では、次に$λ_{2}=1$の場合について計算します。
$λ_{1}=11$の場合と同様の計算を行った結果、
u_{2}=\begin{pmatrix} \frac{1}{\sqrt{2}}\\ -\frac{1}{\sqrt{2}}\\ \end{pmatrix}
と求まりました。
よって、
U=\left(\begin{array}{cc}u_{1} & u_{2} \end{array}\right)\\ \quad= \left(\begin{array}{cc} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \end{array}\right)
が完成します。
-
$A^{T}A$の固有値$\lambda$を$n$個求める
$V^{T}$が$n$次元正方行列を満たすために固有ベクトルが$n$個ある必要があるため、$A^{T}A$ の固有値も$n$個必要です。今回の例では固有値が3つ必要です。しかし、手順3で求めた固有値は2つです。ですので、残り1つの固有値を何かで補う必要があります。そこで登場するのが固有値$λ_{3}=0$ です。
$λ_{1}=11,λ_{2}=1,λ_{3}=0$を代入してみると
\begin{pmatrix} λ_{1}&0&0\\ 0&λ_{2}&0\\ 0&0&λ_{3} \end{pmatrix}= \begin{pmatrix} 11&0&0\\ 0&1&0\\ 0&0&0 \end{pmatrix}
になります。何故固有値$λ_{3}=0$を用いるのかは、◆固有値分解の定義式から求める特異値と固有値の関係◆より、
A^{T}A=Σ^{T}Σ
を使って説明できます。
$AA^{T}$の固有値$λ1=11,λ2=1$に$λ_{3}=x$を加えた$A^{T}A$の固有値を
\begin{pmatrix} λ_{1}&0&0\\ 0&λ_{2}&0\\ 0&0&λ_{3} \end{pmatrix}= \begin{pmatrix} 11&0&0\\ 0&1&0\\ 0&0&x \end{pmatrix}
とすると、
ΣΣ^{T}= \begin{pmatrix}σ_{1} & 0\\ 0 & σ_{2}\\ 0 & 0\end{pmatrix} \begin{pmatrix}σ_{1} & 0 & 0\\ 0 & σ_{2}& 0\end{pmatrix}= \begin{pmatrix}σ_{1}^{2} & 0 & 0\\ 0 & σ_{2}^{2} & 0\\ 0&0&0 \end{pmatrix}= \begin{pmatrix}λ_{1}&0&0\\0&λ_{2}&0\\0&0&λ_{3}\end{pmatrix}= \begin{pmatrix}11&0&0\\0&1&0\\0&0&x\end{pmatrix}
と表せて
σ_{1}^{2}=11,σ_{2}^{2}=1,0=x
となります。よって、固有値$λ_{3}=0$となります。
-
$A^{T}A$の固有値$\lambda$から正規化した固有ベクトル$v$を求め、$V$を転置させて完成させる
$U$と同じく同次連立一次方程式
(A-\lambda_{i} I)\boldsymbol{u_{j}}=0\\ (i=1,2,...,n)(j=1,2,...,n)
の自明でない解を求め…なくても$V$を計算できる方法があるのでご紹介します。
それは、
v_{i}=\frac{1}{\sqrt{\lambda_{i}}}A^{T}u_{i}
です。
これは、$σ_{i}=\sqrt{λ_{i}}$であることから、定義式
A^{T}u=\sigma v
を変形して
A^{T}u_{i}=\sqrt{λ_{i}}v_{i}\rightarrow v_{i}=\frac{1}{\sqrt{\lambda_{i}}}A^{T}u_{i}
としたものである。これで、$U$で求めた$r$固有値と固有ベクトルを使って$v$の固有ベクトルを$r$個まで求めることができます。
実際に計算してみると、$v_{1}$は
v_{1}= \frac{1}{\sqrt{\lambda_{1}}}A^{T}u_{1}= \frac{1}{\sqrt{11}} \begin{pmatrix}2&1\\1&1\\1&2\end{pmatrix} \begin{pmatrix}\frac{1}{\sqrt{2}}\\-\frac{1}{\sqrt{2}}\end{pmatrix}\\= \frac{1}{\sqrt{11}} \begin{pmatrix}\frac{3}{\sqrt{2}}\\\frac{2}{\sqrt{2}}\\\frac{3}{\sqrt{2}}\end{pmatrix}= \begin{pmatrix}\frac{3}{\sqrt{22}}\\\frac{2}{\sqrt{22}}\\\frac{3}{\sqrt{22}}\end{pmatrix}
であり、$v_{2}$は
v_{2}= \frac{1}{\sqrt{\lambda_{2}}}A^{T}u_{2}= \frac{1}{\sqrt{1}} \begin{pmatrix}2&1\\1&1\\1&2\end{pmatrix} \begin{pmatrix}\frac{1}{\sqrt{2}}\\-\frac{1}{\sqrt{2}}\end{pmatrix}\\= \begin{pmatrix}\frac{1}{\sqrt{2}}\\0\\-\frac{1}{\sqrt{2}}\end{pmatrix}
であることが分かります。
最後に、$λ_{3}=0$の場合の固有ベクトル$v_{3}$を求めます。
計算結果は
v_{3}= \begin{pmatrix} -\frac{1}{\sqrt{11}}\\ -\frac{3}{\sqrt{11}}\\ \frac{1}{\sqrt{11}} \end{pmatrix}
です。導出は自分で計算してみましょう。
よって、
V= \left(\begin{array}{cc}u_{1} & u_{2} & u_{3} \end{array}\right)\\ \quad= \left(\begin{array}{cc} \frac{3}{\sqrt{22}} & \frac{1}{\sqrt{2}} &\frac{1}{\sqrt{11}}\\ \frac{2}{\sqrt{22}} & 0 & -\frac{3}{\sqrt{11}}\\ \frac{3}{\sqrt{22}} & -\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{11}} \end{array}\right)
が完成します。
最後に、
\left(\begin{array}{cc} \frac{3}{\sqrt{22}} & \frac{2}{\sqrt{22}} &\frac{3}{\sqrt{22}}\\ \frac{1}{\sqrt{2}} & 0 & -\frac{1}{\sqrt{2}}\\ \frac{1}{\sqrt{11}} & -\frac{3}{\sqrt{11}} & \frac{1}{\sqrt{11}} \end{array}\right)
転置行列にしてあげて本当の完成です。
-
1で確認した形と大きさに当てはまっているか確認する
U=\left(\begin{array}{cc} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \end{array}\right)\\ Σ=\begin{pmatrix} \sqrt{11}&0&0\\ 0&\sqrt{1}&0 \end{pmatrix}\\ V^{T}=\left(\begin{array}{cc} \frac{3}{\sqrt{22}} & \frac{2}{\sqrt{22}} &\frac{3}{\sqrt{22}}\\ \frac{1}{\sqrt{2}} & 0 & -\frac{1}{\sqrt{2}}\\ \frac{1}{\sqrt{11}} & -\frac{3}{\sqrt{11}} & \frac{1}{\sqrt{11}} \end{array}\right)
$U$は$2×2$、$Σ$は$2×3$、$V^{T}$は$3×3$で初めの想定と同じ形と大きさの行列であることが確認できます。
-
特異値分解$A=UΣV^{T}$の完成!!
A=UΣV^{T}=\left(\begin{array}{cc} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \end{array}\right) \begin{pmatrix} \sqrt{11}&0&0\\ 0&\sqrt{1}&0 \end{pmatrix} \left(\begin{array}{cc} \frac{3}{\sqrt{22}} & \frac{2}{\sqrt{22}} &\frac{3}{\sqrt{22}}\\ \frac{1}{\sqrt{2}} & 0 & -\frac{1}{\sqrt{2}}\\ \frac{1}{\sqrt{11}} & -\frac{3}{\sqrt{11}} & \frac{1}{\sqrt{11}} \end{array}\right)\\
分解完了です!!皆様お疲れ様です!!
-
完成した$UΣV^{T}$と行列Aが一致するか確認する
各自確め計算をしてみましょう。
〔特異値分解と機械学習〕
ここまで特異値分解の解き方を丁寧に説明してきました。しかし、なぜE資格のシラバスに特異値分解が登場してくるのでしょうか。それはもちろん機械学習にとって行列をうま~く分解できたほうが何かと都合が良いからです。機械学習は応用分野ですからね。使われる手法には必ず意味があるのです。ということでここからは特異値分解と機械学習の関りについてお伝えしていきます。
◆低ランク近似(次元削減)◆
行列$A(m<n)$を特異値分解すると、
A=UΣV^{T}
=(u_{1}u_{2}…u_{m})
\left(\begin{array}{cccc|ccc}
σ_{1} & 0 & \dots & 0 & 0 & \dots & 0\\
0 & σ_{2} & \dots & 0 & 0 & \dots & 0\\
\vdots & \vdots & \ddots & \vdots & \vdots & \ddots & \vdots\\
0 & 0 & \dots & σ_{m} & 0 & \dots & 0
\end{array}\right)
\begin{pmatrix}v_{1}\\v_{2}\\\vdots\\v_{n}\end{pmatrix}\\
=u_{1}\sigma_{1}v_{1}^{T}+\dots+u_{m}\sigma_{m}v_{m}^{T}
=\sigma_{1}u_{1}v_{1}^{T}+\dots+\sigma_{m}u_{m}v_{m}^{T}
であり、まとめて
A=\sum_{i=1}^{n}\sigma_{i}u_{i}{v}_{i}^{T}
と表記することができます。このとき、途中の$k$番目までの和を取ってできる行列
A_{k}=\sum_{i=1}^{k}\sigma_{i}u_{i}{v}_{i}^{T},\quad k=1,2,\ldots,m
は、行列$A$の持つ本質的な特徴(情報)を要約した行列であり、これが低ランク近似です。
また、低ランクで近似することを次元削減とも呼びます。
▽モチベーション▽
低ランク近似が出来ると何が嬉しいのでしょうか。
◎計算資源削減◎
行列$A$の持つ本質的な特徴(情報)を保持しつつ計算量を減らすことができ、大量のデータを扱う機械学習に必要な膨大な計算時間や電力消費などの計算資源を軽減してくれるという点で低ランク近似は重宝されます。
◎可視化◎
行列$A$の持つ本質的な特徴(情報)を人間が確認するには、人間が認識できる3次元以下の情報に落とし込まなければいけません。そこで使われるのが低ランク近似です。
▽イメージ▽
低ランク近似を、幾何的なアプローチと画像データを使った具体的事例からのアプローチの両側から見てみましょう。
まず、幾何的に、低ランク近似では何が起きているのか見てみましょう。
◎幾何的イメージ◎
結論、低ランク近似$A_{k}$は小さな特異値を含む順に$m-k$次元削減することで行列$A$の本質的な特徴を失わずにモチベーションを満たす手法です。
その理由を順を追って説明して参ります。
最初に$A=UΣV^{T}$の中身を
A =
\left(
\begin{array}{c}
a_{11} & a_{12} & a_{13} & a_{14}\\
a_{21} & a_{22} & a_{23} & a_{24}\\
a_{31} & a_{32} & a_{33} & a_{34}\\
\end{array}
\right)
,U =
\left(
\begin{array}{c}
u_{11} & u_{12} & u_{13}\\
u_{21} & u_{22} & u_{23} \\
u_{31} & u_{32} & u_{33} \\
\end{array}
\right)
,Σ =
\left(
\begin{array}{c}
\color{violet}{σ_{11}} & 0 & 0 & 0 \\
0 & \color{limeGreen}{σ_{22}} & 0 & 0\\
0 & 0 & \color{orange}{σ_{33}} & 0\\
\end{array}
\right)
,V^T=
\left(
\begin{array}{c}
v_{11} & v_{21} & v_{31} & v_{41}\\
v_{12} & v_{22} & v_{32} & v_{42}\\
v_{13} & v_{23} & v_{33} & v_{43}\\
v_{14} & v_{24} & v_{34} & v_{44}\\
\end{array}
\right)
と定義します。ここで、特異値は$\color{violet}{σ_{11}}$>$\color{limeGreen}{σ_{11}}$>$\color{orange}{σ_{11}}$です。この定義から、特異値分解は
A = UΣV^T=
\left(
\begin{array}{c}
a_{11} & a_{12} & a_{13} & a_{14}\\
a_{21} & a_{22} & a_{23} & a_{24}\\
a_{31} & a_{32} & a_{33} & a_{34}\\
\end{array}
\right)=
\left(
\begin{array}{c}
u_{11} & u_{12} & u_{13}\\
u_{21} & u_{22} & u_{23} \\
u_{31} & u_{32} & u_{33} \\
\end{array}
\right)
×
\left(
\begin{array}{c}
\color{violet}{σ_{11}} & 0 & 0 & 0 \\
0 & \color{limeGreen}{σ_{22}} & 0 & 0\\
0 & 0 & \color{orange}{σ_{33}} & 0\\
\end{array}
\right)
×
\left(
\begin{array}{c}
v_{11} & v_{21} & v_{31} & v_{41}\\
v_{12} & v_{22} & v_{32} & v_{42}\\
v_{13} & v_{23} & v_{33} & v_{43}\\
v_{14} & v_{24} & v_{34} & v_{44}\\
\end{array}
\right)
です。
右辺を計算すると、
UΣV^{T}=\\
\begin{pmatrix}
\color{violet}σ_{11}\color{black}u_{11}v_{11}+
\color{limeGreen}σ_{22}\color{black}u_{12}v_{12}+
\color{orange}σ_{33}\color{black}u_{13}v_{13} &
\color{violet}σ_{11}\color{black}u_{11}v_{21}+
\color{limeGreen}σ_{22}\color{black}u_{12}v_{22}+
\color{orange}σ_{33}\color{black}u_{13}v_{23} &
\color{violet}σ_{11}\color{black}u_{11}v_{31}+
\color{limeGreen}σ_{22}\color{black}u_{12}v_{32}+
\color{orange}σ_{33}\color{black}u_{13}v_{33} &
\color{violet}σ_{11}\color{black}u_{11}v_{41}+
\color{limeGreen}σ_{22}\color{black}u_{12}v_{42}+
\color{orange}σ_{33}\color{black}u_{13}v_{43}\\
\color{violet}σ_{11}\color{black}u_{21}v_{11}+
\color{limeGreen}σ_{22}\color{black}u_{22}v_{12}+
\color{orange}σ_{33}\color{black}u_{23}v_{13} &
\color{violet}σ_{11}\color{black}u_{21}v_{21}+
\color{limeGreen}σ_{22}\color{black}u_{22}v_{22}+
\color{orange}σ_{33}\color{black}u_{23}v_{23} &
\color{violet}σ_{11}\color{black}u_{21}v_{31}+
\color{limeGreen}σ_{22}\color{black}u_{23}v_{32}+
\color{orange}σ_{33}\color{black}u_{23}v_{33} &
\color{violet}σ_{11}\color{black}u_{21}v_{41}+
\color{limeGreen}σ_{22}\color{black}u_{22}v_{42}+
\color{orange}σ_{33}\color{black}u_{23}v_{43}\\
\color{violet}σ_{11}\color{black}u_{31}v_{11}+
\color{limeGreen}σ_{22}\color{black}u_{32}v_{12}+
\color{orange}σ_{33}\color{black}u_{33}v_{13} &
\color{violet}σ_{11}\color{black}u_{31}v_{21}+
\color{limeGreen}σ_{22}\color{black}u_{32}v_{22}+
\color{orange}σ_{33}\color{black}u_{33}v_{23} &
\color{violet}σ_{11}\color{black}u_{31}v_{31}+
\color{limeGreen}σ_{22}\color{black}u_{32}v_{32}+
\color{orange}σ_{33}\color{black}u_{33}v_{33} &
\color{violet}σ_{11}\color{black}u_{31}v_{41}+
\color{limeGreen}σ_{22}\color{black}u_{32}v_{42}+
\color{orange}σ_{33}\color{black}u_{33}v_{43}
\end{pmatrix}
と表すことができて、行列$A$の各要素に対応していることが分かります。このことから、各要素には必ず特異値$\color{violet}{σ_{11}}$、 $\color{limeGreen}{σ_{11}}$ 、$\color{orange}{σ_{11}}$が含まれていることも分かります。よって特異値は各要素に与えている影響力と言うことができます。
ここで新たに影響力という概念が登場しましたが、何にどう影響を与えているでしょうか。低ランク近似の過程と共に視覚的に見ていきましょう。
まず、行列$A$を
\boldsymbol a_{1}=
\left(
\begin{array}{c}
a_{11} \\
a_{21} \\
a_{31} \\
\end{array}
\right),
\boldsymbol a_{2}=
\left(
\begin{array}{c}
a_{12} \\
a_{22} \\
a_{32} \\
\end{array}
\right),
\boldsymbol a_{3}=
\left(
\begin{array}{c}
a_{13} \\
a_{23} \\
a_{33} \\
\end{array}
\right),
\boldsymbol a_{4}=
\left(
\begin{array}{c}
a_{14} \\
a_{24} \\
a_{34} \\
\end{array}
\right)
から成る列ベクトル
A=
\begin{pmatrix}
\boldsymbol a_{1}&\boldsymbol a_{2}&\boldsymbol a_{3}&\boldsymbol a_{4}
\end{pmatrix}
とします。
次に、$U$を
\boldsymbol u_{1}=
\left(
\begin{array}{c}
u_{11} \\
u_{21} \\
u_{31} \\
\end{array}
\right),
\boldsymbol u_{2}=
\left(
\begin{array}{c}
u_{12} \\
u_{22} \\
u_{32} \\
\end{array}
\right),
\boldsymbol u_{3}=
\left(
\begin{array}{c}
u_{13} \\
u_{23} \\
u_{33} \\
\end{array}
\right)
から成る列ベクトル
U=
\begin{pmatrix}
\boldsymbol u_{1}&\boldsymbol u_{2}&\boldsymbol u_{3}
\end{pmatrix}
として$UΣV^{T}$を
UΣV^{T}=\\
\begin{pmatrix}
\color{violet}{σ_{11}}\color{black}{\boldsymbol u_{1}v_{11}}+
\color{limeGreen}{σ_{22}}\color{black}{\boldsymbol u_{2}v_{12}}+
\color{orange}{σ_{33}}\color{black}{\boldsymbol u_{3}v_{13}} &
\color{violet}{σ_{11}}\color{black}{\boldsymbol u_{1}v_{21}}+
\color{limeGreen}{σ_{22}}\color{black}{\boldsymbol u_{2}v_{22}}+
\color{orange}{σ_{33}}\color{black}{\boldsymbol u_{3}v_{23}} &
\color{violet}{σ_{11}}\color{black}{\boldsymbol u_{1}v_{31}}+
\color{limeGreen}{σ_{22}}\color{black}{\boldsymbol u_{2}v_{32}}+
\color{orange}{σ_{33}}\color{black}{\boldsymbol u_{3}v_{33}} &
\color{violet}{σ_{11}}\color{black}{\boldsymbol u_{1}v_{41}}+
\color{limeGreen}{σ_{22}}\color{black}{\boldsymbol u_{2}v_{42}}+
\color{orange}{σ_{33}}\color{black}{\boldsymbol u_{3}v_{43}}\\
\end{pmatrix}
とします。
ここまでの変形より、$A=UΣV^{T}$は
A=
\begin{pmatrix}
\boldsymbol a_{1}&\boldsymbol a_{2}&\boldsymbol a_{3}&\boldsymbol a_{4}
\end{pmatrix}=\\
\begin{pmatrix}
\color{violet}{σ_{11}}\color{black}{\boldsymbol u_{1}v_{11}}+
\color{limeGreen}{σ_{22}}\color{black}{\boldsymbol u_{2}v_{12}}+
\color{orange}{σ_{33}}\color{black}{\boldsymbol u_{3}v_{13}} &
\color{violet}{σ_{11}}\color{black}{\boldsymbol u_{1}v_{21}}+
\color{limeGreen}{σ_{22}}\color{black}{\boldsymbol u_{2}v_{22}}+
\color{orange}{σ_{33}}\color{black}{\boldsymbol u_{3}v_{23}} &
\color{violet}{σ_{11}}\color{black}{\boldsymbol u_{1}v_{31}}+
\color{limeGreen}{σ_{22}}\color{black}{\boldsymbol u_{2}v_{32}}+
\color{orange}{σ_{33}}\color{black}{\boldsymbol u_{3}v_{33}} &
\color{violet}{σ_{11}}\color{black}{\boldsymbol u_{1}v_{41}}+
\color{limeGreen}{σ_{22}}\color{black}{\boldsymbol u_{2}v_{42}}+
\color{orange}{σ_{33}}\color{black}{\boldsymbol u_{3}v_{43}}\\
\end{pmatrix}
と表せ、よって
\boldsymbol a_{1}=
\color{violet}{σ_{11}}\color{black}{\boldsymbol u_{1}v_{11}}+
\color{limeGreen}{σ_{22}}\color{black}{\boldsymbol u_{2}v_{12}}+
\color{orange}{σ_{33}}\color{black}{\boldsymbol u_{3}v_{13}}\\
\boldsymbol a_{2}=
\color{violet}{σ_{11}}\color{black}{\boldsymbol u_{1}v_{21}}+
\color{limeGreen}{σ_{22}}\color{black}{\boldsymbol u_{2}v_{22}}+
\color{orange}{σ_{33}}\color{black}{\boldsymbol u_{3}v_{23}}\\
\boldsymbol a_{3}=
\color{violet}{σ_{11}}\color{black}{\boldsymbol u_{1}v_{31}}+
\color{limeGreen}{σ_{22}}\color{black}{\boldsymbol u_{2}v_{32}}+
\color{orange}{σ_{33}}\color{black}{\boldsymbol u_{3}v_{33}}\\
\boldsymbol a_{4}=
\color{violet}{σ_{11}}\color{black}{\boldsymbol u_{1}v_{41}}+
\color{limeGreen}{σ_{22}}\color{black}{\boldsymbol u_{2}v_{42}}+
\color{orange}{σ_{33}}\color{black}{\boldsymbol u_{3}v_{43}}\\
となります。
特異値分解の定義から$U$は直交行列で、$\boldsymbol u$は大きさ1の単位ベクトルかつ互いに直交した正規直交行列なので、幾何的に以下の図の様に表せます。
正規直交基底の$\boldsymbol u$に特異値を掛けた三次元実ベクトル空間なのでそれぞれの軸の長さは異なり大きさは$\color{violet}{σ_{11}}\color{black}{\boldsymbol u_{1}}$>$\color{limeGreen}{σ_{11}}\color{black}{\boldsymbol u_{2}}$>$\color{orange}{σ_{11}}\color{black}{\boldsymbol u_{3}}$の順になっています。この空間上に行列$A$の列ベクトル$\boldsymbol a$をプロットすると各$\boldsymbol a_{i}$の大きさの関係を見ることができます。例えば、行を$m$個のデータ集合、列を$n$個の特徴量とした場合の行列$A$の列ベクトル$\boldsymbol a$は、各特徴量が持つ本質的な特徴(情報)であり保持するべき大切な情報です。
ここで、計算資源節約のために次元削減してみましょう。ただし、保持すべき大切な情報は失わないように削減する次元を上手に選択する必要があります。
まずは、最も小さく影響力の低い特異値を含む次元$\color{orange}{σ_{11}}
\color{black}{\boldsymbol u_{3}}$を削減してみましょう。すると、以下の図の様に$\color{violet}{σ_{11}}\color{black}{\boldsymbol u_{1}}$、$\color{limeGreen}{σ_{11}}\color{black}{\boldsymbol u_{2}}$から成る二次元実ベクトル平面上に各$\boldsymbol a_{i}$がプロットされる形に変換されます。
次元を削減する前と見比べてみてどうでしょうか。$\boldsymbol a_{1}$と$\boldsymbol a_{2}$が低く$\boldsymbol a_{4}$と$\boldsymbol a_{3}$が高いとか、$\boldsymbol a_{2}$と一番近くにあるのは$\boldsymbol a_{4}$みたいな関係が保持されているのが分かると思います。一方、以下の図の様に最も大きく影響力の高い特異値を含む次元$\color{violet}{σ_{11}}\color{black}{\boldsymbol u_{1}}$を削減して$\color{orange}{σ_{11}}\color{black}{\boldsymbol u_{3}}$、$\color{limeGreen}{σ_{11}}\color{black}{\boldsymbol u_{2}}$から成る二次元実ベクトル平面上に各$\boldsymbol a_{i}$がプロットされる形に変換するとどうでしょう。
$\boldsymbol a_{2}$と一番近くにあるのが$\boldsymbol a_{4}$であるという関係性が失われてしまっているのが分かるかと思います。
これらの図は一例ですが、小さい特異値を含む次元は削減しても全体の本質的な特徴は失いづらく、大きい特異値を含む次元を削減すると全体の特徴が保持しづらいことはどんな行列でも共通しています。これは、大きい特異値が全体の本質的な特徴に大きく影響していることを表しており、特異値が影響力と言われる理由だと考えられます。この特異値をどこまで残してどこまで削減するかは、ハイパーパラメータとして人間が設定する必要があります。
よって、低ランク近似$A_{k}$は小さな特異値を含む順に$m-k$次元削減することで行列$A$の本質的な特徴を失わずにモチベーションを満たす手法です。
◎具体的イメージ◎
結論、
この画像を低ランク近似すると、
$k=20$番目までぐらいの画像を足し合わせると行列$A$の本質的な特徴(ここでは画像が何を表しているか)を保持できることが分かりました。故に$m-k$個の次元は削減しても問題ないことになります。大きく計算資源が節約出来ましたね。
もう少し丁寧に説明していきます。
今回低ランク近似に用いた画像は私のアイコンにもなっている画像で、ピクセル数は縦横$2268×3024$で画像のチャンネルを1つにする都合上グレースケール化しています。
この画像を特異値分解すると特異値は$2268$個得られます。幾何的イメージに照らし合わせると、各ピクセル(要素)に必ず$2268$個の特異値が含まれており、それぞれ各ピクセルに影響を与えています。これらの特異値のうち行列$A$の本質的な特徴(ここでは画像が何を表しているか)を保持できる最低限のランクになる$k$を探していきますどうやって探すのかは以下の様にイメージしてください。
特異値分解は画像を各特異値から成る$m$枚の画像に分解することを指し、一番大きい特異値を持つ画像から順に$k$番目まで足していったものがランク$k$の低ランク近似$A_{k}$であり、上記の$k$の推移図の様に出力を見ながらハイパーパラメータ$k$の最適な値を探します。今回の例では$k=20$辺りがおおよそ最適だと言えますね。
このように画像を低ランク近似するのは視覚的にも分かりやすく具体例としては優秀です。
以下のPythonコードから簡単に低ランク近似した画像を保存できるますので是非遊んでみてください。
import numpy as np
from scipy import linalg
from PIL import Image
from matplotlib import pyplot as plt
#画像インポート
img = Image.open('#低ランク近似したい画像のパス')
#画像をグレースケール化&Numpy配列化
img_gray = np.array(img.convert("L"))
#低ランク近似関数
def low_rank_approximation(matrixA,k):
u, s, v = linalg.svd(matrixA)
u_k = u[:, :k]
s_k = np.matrix(linalg.diagsvd(s[:k], k,k))
v_k = v[:k, :]
return np.asarray(u_k*s_k*v_k)
#低ランク近似画像出力関数
def lra_output(img_gray, k_num, rows=3, colms=5, rsize=50, csize=30, fontsize=50):
fig = plt.figure(figsize=(rsize, csize))
X,Y = rows, colms
for n, i in enumerate(k_num):
ax = fig.add_subplot(X, Y, n+1)
ax.set_title(f"k={i}",fontsize=fontsize)
k = low_rank_approximation(img_gray,i)
plt.gray()
plt.imshow(k)
return fig
#低ランク近似画像保存関数
def lra_save(fig=None):
if fig:
fig.savefig('#保存する画像全体のファイル名')
else:
for n, i in enumerate(k_num):
k = low_rank_approximation(img_gray,i)
plt.imsave(f"#保存する各画像のファイル名{n}.jpg",k)
#出力or保存したいランクをリスト化
k_num = [1,2,3,4,5,10,20,30,40,50,100,500,1000,2000,2268]
#低ランク近似画像を出力
fig = lra_output(img_gray, k_num)
#低ランク近似画像全体を保存
lra_save(fig)
#各低ランク近似画像を保存
lra_save()
これにて、長きにわたる特異値分解の解説は終了となります。
最後までお付き合いいただいてありがとうございます!そしてお疲れさまでした
〔特異値分解を解くための重要知識〕
◆随伴行列◆
▽定義▽
随伴行列とは、成分が複素数である行列に対して、全ての成分を複素共役にし、さらに転置行列にしたものです。6
-
複素数
実数を$a$、純虚数を$bi$とした場合、$z=a+bi$で表される$z$のことを複素数と言う。複素数$z$は、$b=0$で実数、$b≠0$で虚数になる。つまり、複素数は、実数と虚数を組み合わせた数である。
なお、複素数を$a+bi$とした場合、$a$を実部、$b$を虚部と言う。
例えば、$a=3,b=0$の場合$z=a+bi=3+0i=3$で実数である。一方$a=3,b=5$の場合$z=a+bi=3+5i$で虚数である。
-
複素共役
複素数の虚部の符号を反転させたものです。例えば、複素数$z=a+bi$の複素共役$z$は、$\overline{z}=a−bi$になる。同様に$\overline{z}=a−bi$の複素共役は$z=a+bi$である。
▽イメージ▽
例えば、
A=\begin{pmatrix}
3+5i & 1-3i & 4 \\
7i & -2 & 1+9i \\
\end{pmatrix}
の随伴行列は、
A^{*}=\begin{pmatrix}
3+5i & 7i \\
1-3i & -2 \\
4 & 1+9i \\
\end{pmatrix}
となります。
すべての成分において虚部が$0$であれば、$A^{*}=A^{T}$となります。
この記事で取り扱う特異値分解は実数のみを想定したものになるので、随伴行列ではなく転置行列として扱っています。
◆転置行列の性質◆
転置行列の基本的な性質として、
(A^{T})^{T}=A\\
(AB^{T})^{T}=(B^{T})^{T}A^{T}=BA^{T}
であるため、
(AA^{T})^{T}=(A^{T})^{T}A^{T}=AA^{T}\\
(A^{T}A)^{T}=A^{T}(A^{T})^{T}=A^{T}A
であることが分かります。
つまり、転置しても変わらない事から$AA^{T}$と$A^{T}A$は対称行列です。
◆対称行列の性質◆
▽性質▽
任意の実対称行列$A$について、異なる固有値に対応する固有ベクトルは直交する。7
▽証明▽
$A$の固有値$\lambda_{1}$に対応する固有ベクトルを$x$、$\lambda_{2}$に対応する固有ベクトルを$y$とすると、
Ax=\lambda_{1}x…①\\
Ay=\lambda_{2}y…②\\
となります。
②の式の随伴行列は
y^{*}A=\lambda_{1}y^{*}…②'
となります。
ここで、$y^{*}Ax$について2通りの変形をします。
$x$についてのの式①より
y^{*}Ax=y^{*}\lambda_{1}x=\lambda_{1}y^{*}x
$y$についての式②’より
y^{*}Ax=\lambda_{2}y^{*}x
よって、
y^{*}x(\lambda_{1}-\lambda_{2})=0・・・③
異なる固有値$\lambda_{1}≠\lambda_{2}$である場合、③が成立するために
y^{*}x=0・・・④
となります。
よって、ベクトルの直交性により$x$と$y$は直交しています。
▽イメージ▽
イメージを掴むために例を用います。例題で用いるのはこの行列です。
A=\begin{pmatrix}
5 & 2 \\
2 & 2 \\
\end{pmatrix}
固有値は、固有方程式$\lambda^{2}-7\lambda+6=0$より、$\lambda_{1}=6,\lambda_{2}=1$です。
固有ベクトルは、$\lambda_{1}=6$については①を解いて$x=\bigl(\begin{smallmatrix}2 \\1 \\ \end{smallmatrix}\bigl) $ 、$\lambda_{2}=1$については②を解いて$x=\bigl(\begin{smallmatrix}1 \\ -2 \\ \end{smallmatrix}\bigl) $です。
②’について、随伴行列は全ての成分が実数であれば転置行列と同義であるため、
y^{*}A=\lambda_{1}y^{*}=\begin{pmatrix}
1 & -2 \\
\end{pmatrix}
\begin{pmatrix}
5 & 2 \\
2 & 2 \\
\end{pmatrix}=
\begin{pmatrix}
5-4 & 2-4 \\
\end{pmatrix}=1
\begin{pmatrix}
1 & -2 \\
\end{pmatrix}
となります。
④について、
y^{*}x=\begin{pmatrix}
1 & -2 \\
\end{pmatrix}
\begin{pmatrix}
2 \\
1 \\
\end{pmatrix}=
2×1+1×(-2)=0
より$x$と$y$は直交しています。図示するとこの通りです。
▽ベクトルの直交性▽
$0$でないベクトル$v_{1}$と$v_{2}$の内積が$0$であるとき、 すなわち、
$(v_{1},v_{2})=0$
であるとき、 $v_{1}$と$v_{2}$が直交するという
同じように、 0 でない n 個のベクトル
$v_{1},v_{2},・・・,v_{n}$
のそれぞれの間の内積が$0$になるとき、 すなわち、
$(v_{i},v_{j})=0$
$(i≠j)(i,j=1,2,…,n)$
であるとき、互いに直交するベクトル、 または直交系を成すベクトルであるという。8
◆正規直交基底◆
▽定義▽
$n$次元ベクトル空間$V$の基底
$v_{1},v_{2},・・・,v_{n}$
の内積が互いに直交し、 ノルムが 1 のとき、 すなわち、
$(v_{i},v_{j})=\left\{\begin{array}{}0 & (i≠j) \\1 & (i=j) \end{array}\right.=\delta_{ij}$
を満たすとき、 正規直交基底 (orthonormal basis) という。 ここで $δij$ はクロネッカーのデルタである。9
-
基底
線形独立なベクトル
$v_{1},v_{2},・・・,v_{n}…(1)$
の線形結合全体の集合をベクトル空間という。
したがって、 ベクトル空間$V$に属する任意のベクトル$W$は必ず
$W=\alpha_{1}v_{1}+\alpha_{2}v_{2}+…+\alpha_{n}v_{n}$
と表される ($αi$ は係数)。
このとき、 (1) をベクトル空間$V$の基底 (basis) または基 と呼ぶ。 また、基底の数$n$を$V$の次元といい、$dimV=n$と表される。9具体例
$v_{1}=\bigl(\begin{smallmatrix}1\\ 2\\ \end{smallmatrix}\bigl) ,v_{}=\bigl(\begin{smallmatrix}1\\ 2\\ \end{smallmatrix}\bigl)$は、2 次元実ベクトル空間$V_{2}$の基底を成す。 なぜなら、$V_{2}$の適当なベクトル$w=\bigl(\begin{smallmatrix}9\\ 12\\ \end{smallmatrix}\bigl)$は、$v_{1}$と$v_{2}$の線形結合によって、
w=\begin{pmatrix} 9 \\ 12 \\ \end{pmatrix}= \begin{pmatrix} 5 + 4 \\ 10 + 2 \\ \end{pmatrix}=5 \begin{pmatrix} 1 \\ 2 \\ \end{pmatrix}+2 \begin{pmatrix} 2 \\ 1 \\ \end{pmatrix}= 5v_{1}+2v_{2}
と表せるからです。また、2次元実ベクトル空間$V_{2}$は$w=\bigl(\begin{smallmatrix}9\\ 12\\ \end{smallmatrix}\bigl)$だけではなく、無数にある任意のベクトル$w$を$v_{1}$と$v_{2}$の線形結合によって定義できます。
図示するとこの通りです。
-
線形独立と線形従属
ベクトルの集合 $\{ x_{1},x_{2},⋯,x_{n} \}$ に対して、
$c_{1}x_{1}+c_{2}x_{2}+…+c_{n}x_{n}=0$
を満たす係数 $ci (i=1,2,⋯,n)$ が
$c_{1}=c_{2}=…=c_{n}=0$
のみであるとき、 $\{x_{1},x_{2},⋯,x_{n}\}$ を (互いに) 線形独立なベクトルという (一次独立ともいう)。
一方で逆に、 ベクトルの集合 $\{y_{1},y_{2},⋯,y_{n}\}$ が$d_{1}y_{1}+d_{2}y_{2}+…+d_{n}y_{n}=0$
を満たすときに、0でない係数が存在するならば、すなわち、
$d_{i}≠0$
である$di$がどれかの$i$に存在するならば、$\{y_{1},y_{2},⋯,y_{n}\}$ は線形従属であるという。9
線形独立と線形従属のイメージはこの通りです。
線形従属の定義として、$d_{1}y_{1}+d_{2}y_{2}+…+d_{n}y_{n}=0$を満たすとき0でない係数$d_{i}$が存在する必要がありますが、具体的なイメージはこの通りになります。
d_{1}y_{1}=1\begin{pmatrix}14\\2\end{pmatrix},
d_{2}y_{2}=1\begin{pmatrix}8\\6\end{pmatrix},
d_{3}y_{3}=1\begin{pmatrix}15\\7\end{pmatrix}
であるとき、係数を変えて
d_{1}y_{1}=-\frac{1}{2}\begin{pmatrix}14\\2\end{pmatrix},
d_{2}y_{2}=-1\begin{pmatrix}8\\6\end{pmatrix},
d_{3}y_{3}=1\begin{pmatrix}15\\7\end{pmatrix}
にすると、係数が0でなくても$d_{1}y_{1}+d_{2}y_{2}+d_{3}y_{3}=0$を満たすので$\{y_{1},y_{2},y_{3}\}$は線形従属であると分かります。
-
補足
線形従属な場合、$\{y_{1},y_{2},⋯,y_{n}\}$のうち少なくともどれか一つのベクトルが、 その他のベクトルの線形結合によって表される。 例えば、di≠0であれば、$yiはy_{i}=\frac{1}{d_{i}}(d_{1}y_{1}+…+d_{i-1}y_{i-1}+d_{i+1}y_{i+1}+…+d_{n}y_{n})$と表される。 一方で、 線形独立な場合には、 このような表現は許されない。
よって、 ベクトルの集合の少なくともどれか一つのベクトルを他のベクトルの線形結合で表すことできるときに線形従属であるといい、 どの一つを取っても、 他のベクトルの線形結合で表すことができないときに線形独立であるという。9引き続き上記の具体例を用いたイメージがこの通りになります。
$d_{1}y_{1}$の係数を$\frac{1}{2}$にすることで、以下のような式が成り立ち、
d_{1}y_{1}+d_{2}y_{2}=d_{3}y_{3} =\frac{1}{2}\begin{pmatrix}14\\2\end{pmatrix} +1\begin{pmatrix}8\\6\end{pmatrix} =1\begin{pmatrix}15\\7\end{pmatrix}
ベクトル$d_{3}y_{3}$はその他のベクトルの線形結合$d_{1}y_{1}+d_{2}y_{2}$によって表せるので$\{y_{1},y_{2},y_{3}\}$は線形従属であると分かります。
-
ノルム($L_{2}$)
ノルムとは、簡単に説明するとベクトル空間上の距離を表しており、その中でも正規直行基底の定義で用いられている$L_{2}$ノルムは、私たちが直感的に想像する距離を表します。つまり、始点から終点までを直線で繋ぐ距離のことです。
この$L_{2}$ノルムは、
\|x\|_{2}=\sqrt{\sum_{i=1}^n|x_{i}|^{2}}=\sqrt{|x_{1}|^{2}+|x_{2}|^{2}+…+|x_{n}|^{2}}
という式で表せます。何故この式で表せるのかは、三平方の定理を思い出して頂ければ分かります。
実例を見てみましょう。
2次元実ベクトル空間$V_{2}$において、基底を成す
v_{1}=\begin{pmatrix}2\\1\end{pmatrix},v_{2}=\begin{pmatrix}2\\4\end{pmatrix}
の線形結合によって定義されたベクトル
w=\begin{pmatrix}
4\\
5
\end{pmatrix}
があるとします。イメージはこの通りです。
このベクトルの距離はどう測ればよいでしょうか。ここで登場するのが三平方の定理です。
三平方の定理を使って計算してみましょう。
4^2+5^2=w^2\therefore w=\sqrt{41}
これでこのベクトルの距離が$\sqrt{41}$であることが分かりました。
$L_{2}$ノルムも考え方はこれと同じで、$n$次元ベクトル空間$V_{n}$のベクトルの距離まで計算が可能になる様により一般化されたものだと考えてください。
実際に$L_{2}$ノルムの式を使って計算してみると、
\|x\|_{2}=\sqrt{|4|^{2}+|5|^{2}}=\sqrt{41}
三平方の定理から導き出した答えと同じであると分かります。
▽イメージ▽
3次元実ベクトル空間$V_{3}$の基底を成す
v_{1}=\begin{pmatrix}1\\0\\0\end{pmatrix},
v_{2}=\begin{pmatrix}0\\1\\0\end{pmatrix},
v_{3}=\begin{pmatrix}0\\0\\1\end{pmatrix}
は、
(v_{1},v_{2})=\begin{pmatrix}1&0&0\end{pmatrix}
\begin{pmatrix}0\\1\\0\end{pmatrix}=0\therefore (v_{2},v_{1})=0\\
(v_{2},v_{3})=\begin{pmatrix}0&1&0\end{pmatrix}
\begin{pmatrix}0\\0\\1\end{pmatrix}=0\therefore (v_{3},v_{2})=0\\
(v_{3},v_{1})=\begin{pmatrix}0&0&1\end{pmatrix}
\begin{pmatrix}1\\0\\0\end{pmatrix}=0\therefore (v_{1},v_{3})=0\\
(v_{1},v_{1})=\begin{pmatrix}1&0&0\end{pmatrix}
\begin{pmatrix}1\\0\\0\end{pmatrix}=1\\
(v_{2},v_{2})=\begin{pmatrix}0&1&0\end{pmatrix}
\begin{pmatrix}0\\1\\0\end{pmatrix}=1\\
(v_{3},v_{3})=\begin{pmatrix}0&0&1\end{pmatrix}
\begin{pmatrix}0\\0\\1\end{pmatrix}=1
により内積が互いに直交しており、$L_{2}$ノルムは
v_{1}:\|x\|_{2}=\sqrt{|1|^{2}+|1|^{2}}=1\\
v_{2}:\|x\|_{2}=\sqrt{|1|^{2}+|1|^{2}}=1\\
v_{3}:\|x\|_{2}=\sqrt{|1|^{2}+|1|^{2}}=1\\
全て1であり、$v_{1},v_{2},v_{3}$はそれぞれ正規直行基底です。
また、正規直交基底の集合${v_{1},v_{2},v_{3}}$のことを正規直行系と言います。
別の基底も用意したのでぜひ自分で正規直行基底であるのか確かめてみてください。
◆直交行列◆
▽定義▽
次の関係
$R^{T}R=RR^{T}=I$
を満たす正方行列Rを 直交行列という。10
▽性質▽
直交行列の性質の1つとして、列ベクトルが正規直行系であるというものがあります。
行列$R$の列ベクトルを
$R=[r_{1},r_{2},…,r_{n}]$
と表すとき、 $R$が直交行列であることと、 これらが正規直交系を成すこと
$(r_{i},r_{j})=\delta_{ij}$
は、 互いに必要十分条件である。 10
証明については、参考文献から確認してみてください。
〔終わりに〕
いかがだったでしょうか?特異値分解について計算手順、機械学習での使い道と解釈は理解できるようになりましたか?
今回は結構な超大作になってしまいました。書き始めたころには2週間以上もかかるなんて思いもしませんでしたが、こだわり癖が発症してこの有様です。タイトルが某汎用人型決戦兵器神話をパロっているのは、勝手に監督の苦悩に重ねていたからかもしれないですね。おこがましすぎますね。はい。でもまあ、おかげで記事のクオリティは満足いくものになったと思いますので、皆さんのお役に立てていれば本望です。
話は変わって、固有値分解から特異値分解まで線形代数の関門について勉強してみて改めて線形代数は頭に幾何的イメージが頭の中に描けるかどうかが全てだなと身を持って深く体感しましたね。イメージを具体的な図に落とし込む作業はなかなか時間のかかるものですが、おかげでしっかりと脳に刻まれています。あとは数学記号と数学用語をスラスラ使えるようになればより厳密な理解が進むといったところでしょうか。皆さんも勉強した内容は脳内にイメージできる形で構造化することをおすすめします。
それから、本記事では特異値と機械学習の関係についても取り上げましたが、これは実は主成分分析とほぼ同じことをしているんですよね。共通点と差異点がまだ不確かなのでそれはまた教師無し学習の記事で触れたいと思います。
とにもかくにも何とか最後まで書き上げられてよかったです。読んでくれてありがとう!!
本記事への感想やご質問、ご指摘などなどお気軽にコメントして頂けると記事の精度がどんどん上がっていきますので是非よろしくお願い致します。それからLGTMやストックをして頂けると記事投稿のモチベーションが爆上がりするのでそちらも是非!
次の記事へ➡【ハックしないE資格対策記-04-】~不確実性を定量化する確率とかいう人類の叡智をイメージしたい~(現在準備中)
【コンテンツツリー】◀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のシラバスを参考に記事を作成しますが、出題範囲の変更分も後々追加で書いていきたいとは考えています。
(もしかしたら別シリーズとして新たにスタートするかもしれません。)
新シラバスのダウンロードはこちらから
【参考文献】
特異値分解の計算方法を手順ごとにまとめてみた - Qiita
【線形代数】特異値分解とは?例題付きで分かりやすく解説!! | 機械学習ナビ
30分でわかる機械学習用語「次元削減(Dimensionality Reduction)」
-
英辞郎 on the WEB『hackの意味・使い方・読み方』 / https://eow.alc.co.jp/search?q=hack / 閲覧2021.12.02 ↩
-
一般社団法人 日本ディープラーニング協会 公式ホームページ ご挨拶 / https://www.jdla.org/about / 閲覧2021.12.02 ↩
-
一般社団法人 日本ディープラーニング協会 公式ホームページ E資格概要 / https://www.jdla.org/certificate/engineer / 閲覧2021.12.02 ↩
-
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 / Σ部分について一部改変して引用 ↩
-
スキルアップAI株式会社 小縣信也/斉藤翔太/溝口聡/若杉一幸 /徹底攻略ディープラーニングE資格エンジニア問題集 第2版/株式会社インプレス/2021/24頁 ↩
-
随伴行列とは - 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 ↩
-
対象行列の固有値と固有ベクトルの性質の証明 / 高校数学の美しい物語 / (https://manabitimes.jp/math/1096) / 閲覧2022.3.5 ↩
-
ベクトルの直交性とは?/ - 理数アラカルト - / (https://risalc.info/src/orthogonality.html) / 閲覧2022.3.5 ↩
-
基底・直交基底・正規直交基底とは? / - 理数アラカルト - / (https://risalc.info/src/basis-cons-dimension.html) / 閲覧2022.3.5 ↩ ↩2 ↩3 ↩4
-
直交行列とは? ~ 公式と性質 ~ (証明付) - 理数アラカルト - / (https://risalc.info/src/orthogonal-matrix-properties.html#cons) / 閲覧2022.3.7 ↩ ↩2