機械学習とかコンピュータビジョンとか

CVやMLに関する勉強のメモ書き。

A Tutorial on Spectral Clusteringを読んだのでメモ その1

はじめに

A Tutorial on Spectral Clusteringを読んだのでメモ. タイトルからわかるようにspectral clusteringを基本の部分から解説した資料. 構成としてはsimilarity graphs\rightarrowgraph laplacians\rightarrowspectral clustering\rightarrowアルゴリズムの解析という感じ.とりあえずここではspectral clusteringの手前のグラフ理論的な話まで.

Similarity graphs

データ点x_1,\dots,x_nが与えられた時,データ点のペアx_i,x_jの類似度をs_{ij}\geq 0とする.ここで,データ間の類似度よりも多くの情報を持っていないとすれば,データを表現する良い方法はsimilarity graph G=(V,E)を作ること.各頂点v_iはデータ点_iに対応し,二つのデータ点間の類似度s_{ij}が正またはある閾値より大きいとすれば,グラフのエッジはs_{ij}によって重み付けられる.このようにグラフのエッジがデータ間の類似度に基づくものをsimilarity graphという.このsimilarity graphを用いてクラスタリングの問題を考えれば,エッジの重みが大きいデータ同士は同じクラスタに所属し,エッジの重みが小さいデータ同士は異なるクラスタに所属するということが直感的に言える.この考えを定式化するために,まずは基本的なグラフの概念を導入する.

graph notation

まずG=(V,E)を無向グラフとして定義する.ただし,二つの頂点v_i,v_jを結ぶ各エッジは非負の重みw_{ij}を持つ,重み付きのグラフとなっている.グラフの重み付き隣接行列(adjacency matrix)をW=(w_{ij})_{i,j=1,\dots,n}と定義し,w_{ij}=0ならばv_i,v_jを結ぶエッジが存在しないことを意味する.また,Gが無向グラフであることからw_{ij}=w_{ji}が成り立つ.頂点v_i\in Vの度数(degree)を次のように定義する.

\displaystyle
d_i=\sum_{j=1}^nw_{ij}

度数d_1,\dots,d_nを対角成分に持つ対角行列を度数行列(degree matrix)をDと定義する.また,頂点の部分集合A\subset Vが与えられた時,その補集合をAを用いてV\setminus Aとして記述する.さらにv_i\in Aを満たすかどうかを示す指示ベクトル(indicator vector)を\mathbb{1}_A=(f_1,\dots,f_n)'\in\mathbb{R}^nで定義し,v_i\in Aが真ならばf_i=1,それ以外ならf_i=0となる.指示ベクトルは式を見ればわかるように,部分集合に含まれる頂点の個数分だけ成分に1を持つベクトルになっている.

ここで部分集合A\subset Vの大きさを測る以下の二つの方法について考える.

\displaystyle
|A|:=\:\mathrm{the}\:\mathrm{number}\:\mathrm{of}\:\mathrm{vertices}\:\mathrm{in}\:A \\ \displaystyle
\mathrm{vol}(A):=\sum_{i\in A}d_i

|A|は頂点の数により定義され,\mathrm{vol}(A)Aに含まれる頂点から伸びる全てのエッジの重みの和によって定義される.Aに含まれる二つの頂点がpathを持ち(どこか他のノードを介してでも繋がっている状態),間にある全ての頂点がAに含まれている場合,Aはconnectedであるといい,Aがconnectedかつ,A\bar{A}の頂点同士がpathをもたない(connectedでない)場合,Aをconnected componentと呼ぶ.

Different similarity graphs

Similarity graphを構成することのゴールはデータ間の局所的な隣接関係をモデル化することで,その方法にはいくつか代表的な方法がある.

The \epsilon-neighborhood graph

これは距離がある閾値\epsilonより小さいデータのペア全てにエッジを張る方法.この方法は接続されたデータ間の距離のスケールが大体同じ(ほぼ\epsilon)になり,重みをつけたところでグラフの持つ情報はほとんど増えないため(ここの理由がよくわからない)重みのないグラフとして構成するのが一般的.

k-nearest neighbor graphs

ここのゴールは頂点v_jv_ik近傍に含まれるときに二つの頂点を接続すること.ただし,この定義だと近傍の関係性が非対称であることから有向グラフを構成する場合がある.そこでk近傍によって作られるグラフを無向グラフにする二つの方法を紹介する.一つは単純にエッジの向きを無視する方法,すなわちどちらか一方の頂点がもう一方の頂点のk近傍であればエッジを張る方法で,これはk-nearest neighbor graphと呼ばれる.もう一つは双方向からエッジが張られる場合のみエッジを張る,すなわちどちらの頂点も相手のk近傍に含まれる時のみエッジを張る方法で,これはmutual k-nearest neighbor graphと呼ばれる.どちらの場合でグラフを作った場合でも,endpointの類似性からエッジの重み付けを行う.

The fully connected graph

これは,単純に正の類似度を持つ全てのデータのペアにエッジを張る方法でエッジの重みはs_{ij}になる.グラフは局所的な隣接関係を表現すべきであるため,この構成方法は類似度関数そのものが局所的な隣接関係を捉えているような場合のみ有効に働く.類似度関数の例としてはGaussian similarity function s(x_i,x_j)=\exp(-||x_i-x_j||^2/(2\sigma^2)などがあげられ,この場合\sigmaがどれくらい離れた頂点を見るか調節する.これは丁度\epsilon-neighborhood graphの\epsilonと似た働きをする.

上記3つの構成方法は全てspectral clusteringで一般的に用いられる.どの構成方法を使えばより良い結果が得られるかという理論的な回答は(このtutorialが執筆された時点では)ないらしい.

Graph laplacians and their basic properties

Spectral clusteringにおいて重要となってくるのはgraph Laplacian matricesで,spectral graph theoryとして古くから研究されているよう.graph convolutional networksなどでもお馴染み."graph Laplacian"という呼称はいろんなところで使われていて文献によってgraph Laplacianの定義が違うので他の文献を読むときには注意とのこと.

以下,Gを無向グラフ,Wをグラフの重み行列として扱い,w_{ij}=w_{ji}\geq 0を満たす.また,ここでは固有ベクトルを使うときは正規化されている仮定は置かず,固有ベクトルは値が小さい順に並んでいるものとする.

The unnormalized graph Laplacian

正規化されていないgraph Laplacian matrixを以下のように,度数行列と重み行列の差として定義する.

\displaystyle
L=D-W

ここではspectral clusteringで必要とされる命題を以下にまとめる.

Proposition 1 (properties of L)

  1. 全てのベクトルf\in\mathbb{R}^nに対し次の関係が成り立つ. \displaystyle
f'Lf=\frac{1}{2}\sum_{i,j=1}^nw_{ij}(f_i-f_j)^2

  2. Lは半正定値対称行列

  3. Lの最小固有値は0であり,対応する固有ベクトル\mathbb{1} (成分が全て1のベクトル)となる.
  4. Ln個の非負の実数固有値を持つ. 0=\lambda_1\leq\lambda_2\leq\dots\leq\lambda_n

証明

  1. d_iの定義より, \displaystyle
\:\\ \displaystyle
f'Lf=f'Df-f'Wf=\sum_{I=1}^nd_if_i^2-\sum_{i,j=1}^nf_if_jw_{ij} \\ \displaystyle
=\frac{1}{2}\left(\sum_{i=1}^nd_if_i^2-2\sum_{i,j}^nf_if_jw_{ij}+\sum_{j=1}^nd_jf_j^2\right)=\frac{1}{2}\sum_{i,j=1}^nw_{ij}(f_i-f_j)^2 \\
       1行目はL=D-Wの関係性とDが対角行列であることから導かれる.また,2行目はf_i^2の項を無理やり二つに分けることで因数分解可能な形にし,d_i=\sum_jw_{ij}を利用して最終的な形を導いた.

  2. Lが対称行列であることはD,Wが対称行列であることから言える.また全てのf\in\mathbb{R}^nに対してf'Lf\geq 0であることから固有値が0以上,すなわち半正定値であることが言える.

  3. Di番目の対角成分はd_i=\sum_{j=1}^nw_{ij}で与えられることから,L=D-Wの関係性よりL\mathbb{1}=0となる.よって固有値固有ベクトルの関係性からL\mathbb{1}=\lambda\mathbb{1}=0\mathbb{1}が得られ,固有値0に対応する固有ベクトル\mathbb{1}であることがわかる.

  4. 自明.

また,以下の命題はspectral clusteringを考える上で重要な命題.

Proposition 2 (Number of connected components and the spectrum of L)

Gを非負の値で重み付けられた無向グラフとする.Lの値0の固有値の数kはグラフのconnected components A_1,\dots,A_kの数と等しい.また,値0の固有値が張る固有空間は各connected componentsの指示ベクトル\mathbb{1}_{A_1},\dots,\mathbb{1}_{A_k}によって張られる.

証明

k=1の場合について考える.fを値が0の固有値に対応する固有ベクトルとする.すると固有値固有ベクトルの関係と命題1の1から以下が成り立つ.

\displaystyle
0=f'Lf=\sum_{i,j=1}^nw_{ij}(f_i-f_j)^2

w_{ij}は非負であることから全ての項が0の時に成り立つ.つまり,二つの頂点v_i,v_jが結ばれている時(つまりw_{ij}\gt 0の時),f_i=f_jが成り立つ必要がある.つまり接続関係にある全ての頂点に対してfは一定である必要がある.グラフがただ一つのconnected componentで構成されている場合,固有値0に対応する固有ベクトル\mathbb{1}のみを持ち,これはconnected componentの指示ベクトルになっていることがわかる.

次にkが2以上の時について考える.この時,一般性を失うことなく頂点を,所属するconnected componentの順に並べることができる.すると,各頂点は異なるconnected componentに含まれる頂点とは接続を持たないためadjacency matrix Wはブロック対角行列になる.よってL=D-Wの関係からLも同様にブロック対角行列になる.すなわちi番目のconnected componentに関数graph Laplacian matrix L_iを対角成分に持つ行列として表現できる.k=1の場合の議論を考えれば各graph Laplacian matrix L_iの0固有値に対応する固有ベクトルはその集合の指示ベクトルになるため,Lの0固有値に対応する固有ベクトルは各connected componentの指示ベクトルになることが言える.よって0固有値の個数とconnected componentの数は等しいことが言える.

The normalized graph Laplacians

先ほどまでは正規化されていないgraph Laplacianを扱ってきた.今度は正規化されたgraph Laplacianを考える.正規化されたgraph Laplacianには以下の2種類の表現方法がある.

\displaystyle
L_{sym}:=D^{-1/2}LD^{-1/2}=I-D^{-1/2}WD^{-1/2} \\ \displaystyle
L_{rw}:=D^{-1}L=I-D^{-1}W

L_{sym}は対称行列になっていて,L_{rw}はrandom walkと密接な関係がある.以下にL_{sym},L_{rw}に関する命題を示す.

Proposition 3 (Properties of L_{sym} and L_{rw})

  1. 全てのf\in\mathbb{R}^nにおいて以下が成り立つ.

\displaystyle
f'L_{sym}f=\frac{1}{2}\sum_{i,j=1}^nw_{ij}\left(\frac{f_i}{\sqrt{d_i}}-\frac{f_j}{\sqrt{d_j}}\right)^2

2.\lambda固有ベクトル w=D^{1/2}uに対応するL_{sym}固有値であるとき,\lambda固有ベクトル uに対応するL_{rw}固有値になる.

3.\lambdauが一般化固有値問題Lu=\lambda Duの解ならば,\lambda固有ベクトル uに対応するL_{rw}固有値になる.

4.0固有値に対応するL_{rw}固有ベクトル\mathbb{1}.また,0固有値に対応するL_{sym}固有ベクトルD^{1/2}\mathbb{1}

5.L_{sym},L_{rw}は共に半正定値でn個の非負な実数固有値0=\lambda_1\leq\dots\leq\lambda_nを持つ.

証明

  1. 基本的には命題1の1と同様の方針で,L_{sym}=I-D^{-1/2}WD^{-1/2}を代入して解ける.計算式は省略.

  2. \displaystyle
L_{sym}w=D^{-1/2}LD^{-1/2}w=\lambda w \\ \displaystyle
D^{-1}LD^{-1/2}w=\lambda D^{-1/2}w \\ \displaystyle
L_{rw}D^{-1/2}w=\lambda D^{-1/2}w \\ \displaystyle
L_{rw}u=\lambda u

  3. \displaystyle
L_{rw}u=D^{-1}Lu=\lambda u \\ \displaystyle
Lu = \lambda Du

  4. 3からL\mathbb{1}=0D\mathbb{1}となり,D^{-1}L\mathbb{1}=L_{rw}\mathbb{1}=0\mathbb{1}が得られる.また,2よりL_{sym}固有ベクトルD^{1/2}\mathbb{1}

  5. L_{sym}に関しては命題1の2と同様1の右辺が正であることから言える.L_{rw}に関しては2のL_{sym}との関係性から言える.

また,以下の命題により,正規化されたgraph Laplacianの0固有値の個数はconnected componentの数と関係があることが言える.

Proposition 4 (Number of connected components and spectra of L_{sym} and L_{rw}

L_{rw}L_{sym}の0固有値の個数kはグラフのconnected componentの数と等しい.L_{rw}の固有空間は指示ベクトル\mathbf{1}_{A_i}によって張られ,L_{sym}D^{1/2}\mathbb{1}_{A_i}によって固有空間が張られる.

証明

命題3の内容を使って命題2と同様の手順により導けるので割愛.

まとめ

Graph Laplacianとかは流行りの?graph convolution等との関係も深く他にもいろんな場面で見る気がするのでそれなりに勉強できてよかった.

最近生成モデルを中心に勉強してたから久しぶりに線形代数に触れられて楽しい.