logo

スパース行列 📂行列代数

スパース行列

定義

自然言語において、スパースsparse(希薄な、まばらな)とは、値が00である場合、ほぼ存在しないものとみなされることからきた言葉だ。スパーシティsparsityは、どれだけ多くの00から構成されているかの度合いを指す。

スパース行列

大部分の成分が00である行列スパース行列という。

SS-スパース 1

vRd\mathbf{v} \in \mathbb{R}^{d}が多くても、SdS \ll d個の00でない成分がある場合、x\mathbf{x}は**SS-スパース**であると言われる。ここで、整数SZS \in \mathbb{Z}ベクトルv\mathbf{v}サポートsuppv={k:vk0}\operatorname{supp} \mathbf{v} = \left\{ k : \mathbf{v}_{k} \ne 0 \right\}に対して次の不等式を満たす。 card(suppv)S \operatorname{card} \left( \operatorname{supp} \mathbf{v} \right) \le S ここで、card\operatorname{card}カーディナリティを意味する。

説明

語彙的には希薄行列疎行列があるが、通常、どちらも使わず、英語の発音そのままに[スパース・マトリックス]と読むことが多い。スパース行列は、その名の通り、行列に「意味ある」情報がスパース(希薄)である行列として定義されるが、「大部分が」という言葉から推測できるように、数学的に厳密な定義ではない。具体的なSSが与えられ、それが「十分にスパース」であると表現されると、その定義ははっきりする。

最適化理論

最適化理論では、スパース回帰回帰問題において解のスパーシティを最大化すること、つまりSSを最小限にする最適化問題を指す。

グラフ理論

グラフ理論では通常、データとして与えられるランダムネットワーク隣接行列はスパース行列とみなされる。

データ構造

実用的な計算の領域では、スパース行列はデータ構造に近い。例えば、最後の成分だけが2\sqrt{2}で、他はすべて00X,YR106×106X,Y \in \mathbb{R}^{10^{6} \times 10^{6}}を考えてみる。この行列を保存するためには、浮動小数点で埋められた210122 \cdot 10^{12}スロットの配列が必要だが、その情報がスパース行列であることが確実であれば、使われない00をすべて保存する必要はなく、最後のスロットだけがあれば十分である。これは、単に保存が便利なだけでなく、演算でも効率良く行える。これら2つの行列は非常に大きいが、その積は簡単に XY=[000000002] X Y = \begin{bmatrix} 0 & 0 & \cdots & 0 \\ 0 & 0 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & 2 \end{bmatrix} のように計算できる。この乗算をシュトラッセンのアルゴリズムで計算したとしても、それが賢明とは言えないだろう。「コンピュータでスパース行列を計算する」とは、これらの行列を少ない容量で読み書きでき、00がある部分を省略して非常に速く計算できることを意味する2


  1. Needell, D., Vershynin, R. Uniform Uncertainty Principle and Signal Recovery via Regularized Orthogonal Matching Pursuit. Found Comput Math 9, 317–334 (2009). https://doi.org/10.1007/s10208-008-9031-3 ↩︎

  2. https://ko.wikipedia.org/wiki/%ED%9D%AC%EC%86%8C%ED%96%89%EB%A0%AC ↩︎