ハンドティアグラフ機械学習、グラフニューラルネットワーク

ニューラル ネットワークは、さまざまな形式でさまざまな種類のデータを処理できる非常に強力なツールです。NLPシリーズの記事では、シーケンスデータにおけるサイクリックネットワークの利用法(記事はテキスト情報が中心、音声情報処理はあまり関与していないため、まとめは行っておりません)、関連解説やTransformerやアテンションメカニズムの説明などを掲載しています。応用。Gephi チュートリアルでは、Gephi ソフトウェアに基づいたグラフの描画といくつかのグラフ分析および視覚化が紹介されていますが、Gephi はグラフ分析の氷山の一角に過ぎません。実際、グラフの背後にある情報をマイニングして解釈するための十分なツールがありません。グラフ解析も配列情報の一種ですが、この配列情報はむしろ相関関係や因果推論に関するものです。したがって、グラフの分析は、NLP の方向とは独立して、探索および学習する新しい方向として行うことができます。この記事では、補足としてグラフ機械学習とディープラーニングに関する関連する理論的な内容を主にまとめます。さらに、コード実装の作業負荷は膨大であるため、コードを整理するために別のドキュメントが作成され、サポート ノートにハイパーリンクが添付され、オンデマンドで読むことができます。グラフの知識には多数のグラフ理論と行列関連の演算が含まれるため、この記事の終了後も、関連する数学的内容を整理するために新しいドキュメントが引き続き開かれます。関連する古典的なアルゴリズムの論文を集中的に読むことになります。グラフシリーズ記事の補足コンテンツとして使用されます。

手动防爬虫,作者CSDN:总是重复名字我很烦啊,联系邮箱daledeng123@163.com

1. なぜでしょうか?
従来の機械学習の分野では、データ サンプル A とデータ サンプル B、C、D の関係は考慮されておらず、これらのパラメータ変数はデフォルトで、何の関係もない独立した等分布変数として設定されています。お互い。もちろん、類似度行列を使用してこれらの変数間の類似性と相関関係を記述することもできますが、これは機械学習の本来の目的ではありません。グラフはそのようなデータ関係を記述するための単なる共通言語であり、グラフ情報を使用することでより多くの関連情報をマイニングできます。
ここに画像の説明を挿入
2. どのように?
データマイニングにノードとエッジの関係を最大限に活用します。ネットワークを使用してグラフ データを処理したい場合は、グラフの入力データ サイズが固定されておらず、ノードは N 点との関係を形成する可能性があり、この N は非常に巨大で無制限になる可能性があることを最初に明確にする必要があります。データ。コンボリューションカーネルの畳み込み処理は、画像データ(畳み込みネットワーク)処理の場合は左から右、上から下への走査処理となりますが、テキストデータ(循環ネットワーク)処理の場合も左から右への計算処理となります。グラフデータは初期アンカーポイントがなく、例えば、ある音楽の人気が作曲家や歌手に関係している場合もあれば(テキストデータ)、聴衆のポートレートが関係している場合(テキストデータ)もあるなど、マルチモーダルな特性を持っています。 , そしてそれは、MVがカッコいい・リズムがダイナミックかどうか(音声データ)に関係するかもしれませんし、アルバムジャケットがカッコいいかどうか(画像データ)にも関係しているかもしれません。したがって、グラフ データ処理は基本的に、ノード情報をエンドツーエンド学習の d 次元ベクトルに変換するさまざまな畳み込み演算、正則化演算、教師あり学習演算などの組み合わせです。このプロセスはグラフ埋め込みと呼ばれます。)、グラフ埋め込みを適切に行う方法を見つけることは、NLP で単語埋め込みを適切に行うことと同じくらい重要です。

3. 応用
(1) 最短経路(グラフ理論問題)。
(2)ノード重要度分析(次数中心性評価)。
(3) コミュニティ検出 (広範なグループ間で類似点を共有する重要なグループを見つけます)。
(4) 類似性と関連性の予測 (遠く離れたノード間に接続がある可能性があります)。
(5) 共同効果検出 (臨床医学的検出の能力を超えて組み合わせの可能性が大きい場合、グラフはこれらのノードの潜在的な相関関係を見つけることができます。たとえば、a+k は臨床的に検証されていないため、グラフ分析 a+ k は臨床成績に有益です)。
(6) グラフ埋め込み問題(ディープラーニングとの接続確立の核心)。

前面とサポートリンクに記載 (訪問者は必ずお読みください)

このテキストでは、グラフ ネットワークとグラフ学習の原理がわかりやすい言葉で説明されています。いくつかの簡単な数学的推論が含まれます。主要な結論の完全な数学的推論は、後で時間があるときに補足として書かれます。すべてのグラフこの記事に関係する機能記述メソッドは、関連するコードを使用して実装できます。現在の主流のグラフ マイニング ツールキットには、Gephi、NetworkX、PyG が含まれます。Gephi は、コンピュータにローカルにインストールされる統合ソフトウェアです。グラフ描画、グラフ視覚化が組み込まれています。 、およびいくつかの簡単なクラスタリング分析関数。入門に最適です。NetworkX は、統計とトポロジに基づいたグラフ分析ツールのセットです。インストールが簡単で、完全なドキュメントがあり、ある程度のデータ マイニングと分析機能を備えています。グラフ機械学習を始めるためのツールとして適しています。PyG は、pytorch に基づくグラフ ニューラル ネットワーク ツールです。主流のグラフ マイニング ニューラル ネットワーク フレームワークを統合しています。グラフ情報のマルチモーダルおよび多次元マイニング機能を備えています。非常に強力なグラフ分析ツールですが、特定の GPU が必要です. 高度な選択に適したリソース。関連コンテンツは現在も継続的に更新されているため、サポート リンクが完全ではない可能性があり、後で追加されます。
ワークロードが重いため、学習後に個人的な感想を更新するよう促すプライベート メッセージを送信しないでください。実際、グラフ マイニングの核心は依然として NLP 手法ですが、これは特定のシーケンスの認識を弱め、位相構造の認識を強化します時間と空間を調整する ディメンションの一連のモデル手法は、学習の観点から見ると、依然として GNN よりも NLP が優先されます。
NLP は 0 から始まります (主にコーディングの章の Word2Vec の考え方を参照)
Gephi グラフ視覚化ツールは、
NetworkX の基本操作とグラフ分析関連の計算のコードを使用します
[紙の精読シリーズ、グラフに向けたグラフ機械学習の先駆的研究]ディープラーニング】DeepWalk、ランダムウォーク 自然言語処理とグラフ処理を初めて統合したグラフ埋め込みの技術
【手書きコード再現】DeepWalk実戦

グラフの基本的な表現

グラフの基本パラメータ

ノード: ノード/頂点NNサイドN
: リンク/egdesEEE
システム: ネットワーク/グラフG ( N , E ) G(N,E)G ( N E )

ここに画像の説明を挿入
たとえば、これら 2 つのインフォグラフィックは、基本的に 1 つのグラフ (ノード数 4、接続数 4) として描画できます。実際、グラフのデザインは、問題を解決したい実際の関係に応じて決定する必要があります。

グラフのクラス

無向グラフと有向グラフがあります。
関係の種類としては、n 次元の異種グラフに分けることができます。
G = ( V , E , R , T ) vi ∈ V 、血圧、病気、年齢、性別などの環境要因 ( vi , r , vj ) ∈ E 、これらの環境要因の共同効果 r ∈ Rノード カテゴリ T ノード カテゴリ TG=(V,E,R,T) \\ v_i \in V 、血圧、病気、年齢、性別などの環境要因 \\ (v_i, r, v_j) \in E 、これらの環境要因の共同効果 \\ エッジ関係 r \in R\\ ノード カテゴリ T ノード カテゴリ TG=( V R v私はV 、血圧、病気、年齢、性別などの環境要因。( v私はr vjE 、これらの環境要因の複合効果エッジ関係rRノード カテゴリTノード カテゴリT
の最も一般的な異種グラフ作品と名前の関係、著者と発表論文のタイトルなど。このような 2 部グラフは直接展開できます。
ここに画像の説明を挿入

ノード接続数(ノード次数)

上図の Paper2 の場合、ノードの接続数は 3 で、kpaper 2 = 3 k_{paper2}=3として記録されます。k2あたり_ _=3
次の結合kavg = < k > = 2 EN k_{avg}=<k>=\frac {2E}{N}kビデオ_=<k>=N2E_ _
有向グラフの場合、ノードの共有はありません このとき、同点次数kavg = < k > = EN k_{avg}=<k>=\frac {E}{N}kビデオ_=<k>=NE
ノードの重要性はノード次数で説明できます。

グラフの行列表現(隣接行列)

ここに画像の説明を挿入
無向グラフの場合、その隣接行列は対称行列であり、無向グラフは非対称行列です。数学的言語:
A ij = 1、ノード i からノード j へのリンクがある場合、そうでない場合は 0 A_{ij}=1、\ がある場合\ a\ リンク\ から\ ノード\ i\ から\ ノード \ j、その他\ 0イジ=1 nodeiからnodejリンクある場合_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _          e l se 0 
無向グラフの隣接行列は対称行列であるため、総接続数L = 1 2 ∑ A ij L=\frac{1}{2} \sum A_{ij}L=21イジ接続の総数L = ∑ A ij L=\sum A_{ij}L=イジ

考察 1: なぜグラフを行列形式で表現する必要があるのか​​?
考え方 2: 一見完璧な隣接行列は、実際にはほとんどが疎行列です。

リンクリストと隣接リスト

接続リスト: 接続されたノードペアが存在するリストのみを記録します。上記の有向グラフは次のように記録できます: (1, 3) (1, 4) (2, 1) (3, 2) (3, 5) (3, 6) (5, 6) 隣接リスト: 隣接のみを記録します
。ノード。上記の有向グラフは次のように記録できます: (グラフ情報を表すために 4 つの線のみが使用されます)
1: 3, 4
2: 1
3: 2, 5, 6
4:
5: 6
6:

他の写真

ここに画像の説明を挿入

従来のグラフ機械学習 (特徴量エンジニアリング + 機械学習)

グラフには、(1) ノード情報、(2) 接続情報、(3) 領域情報の 3 つの層の情報があり、ベクトルの形式で記述することができます。しかし、ノード情報に含まれる属性は、人物のアバター(画像情報)や個人の署名(文字情報)など、マルチモダリティであることが多い。ただし、機械学習ではマルチモダリティに対応することが難しいため、従来の機械学習では主に、このノードがコミュニティ全体でどのような役割を果たしているかなど、ノード間の接続特徴情報をマイニングしていました。

グラフ特徴量エンジニアリングのやり方(ノードレベル)

簡単に言えば、この部分で行うことは、すべてのノード情報を使用して未知のノードの情報を推測することです。たとえば、成都の地下鉄ネットワーク内のすべてのノードのカテゴリを使用して、墨子橋駅が地下鉄の駅であるかどうかを推測します。 。ノード情報をD次元ベクトルに編集し、アルゴリズムをインポートして計算する方法です。
G = ( V , E ) f : V → RG=(V,E)\\ f:V→ \mathbb{R}G=( V E )f:VR は
、あるノードの D 次元ベクトルを入力し、そのノードがあるクラスである確率を出力します。これの鍵となるのは、D 次元ベクトルがどのように構築されるかです。
一般的に、従来の機械学習には次の 4 つの情報を含めることができます: (1) ノードの次数、次数 (2) ノードの中心性、重要度 (3) クラスタリング係数、集約係数 (4) グラフレット、サブグラフ分割

ノード次数中心性 - 単一類似性

ここに画像の説明を挿入

接続性のみを使用して説明することは、単一の次元の類似性のみを説明でき、1 と 7 などのより多くの情報をカバーすることはできません。明らかに品質は異なりますが、ノード次数は 1 です。したがって、グラフ情報をさらに詳しく説明するには、他の重要性メトリックが必要です。(ここでの次数ベクトルは実際にはノード次数中心性です)

固有ベクトル中心性 (固有ベクトル中心性) - 羽の鳥が群れを成す

これは非常に従来の考え方です。ノードとその隣接ノードが両方とも重要であれば、このノードも重要です。cv c_v
を使用しますcvノード v の重要度を示します。この時点でのこのノードの重要度は次のとおりです。
cv = 1 λ ∑ cu c_v=\frac{1}{\lambda} \sum c_ucv=1cあなたここで、λ \ラムダλは隣接行列cu c_ucあなたv は隣接するノードの重要性です。つまり、v の隣接ノードの重要度が合計され、その後正規化されて v のノードの重要度が得られます。
そして、この問題は古典的な再帰的問題になります。この場合、固有ベクトルを使用して解決できます。
cv = 1 λ ∑ cu ≡ λ c = A c c_v=\frac{1}{\lambda} \sum c_u \equiv \lambda \bm{c} = \bm{A} \bm{c}cv=1cあなたλc _=A c
ここで、A は隣接行列です。このようなプロセスは、行列のランクの観点から理解できます。v ノードが 4 つのノードに隣接していると仮定すると、左側についてはλ c \lambda \bm{c}λ cは 4x1 行列です。右側の場合、隣接行列 A は 4x4 行列、c は 4x1 行列であり、その結果は依然として 4x1 行列です。
λ [ abcd ] 4 ∗ 1 = [ 0 a 12 a 13 a 14 b 11 0 b 13 b 14 c 11 c 12 0 c 14 d 11 d 12 d 13 0 ] 4 ∗ 4 [ abcd ] 4 ∗ 1 \lambda \ left[\begin{array}{c} a \\ b \\ c \\ d \end{array}\right]_{4*1} = \left[\begin{array}{c} 0\ a_{ 12}\ a_{13}\ a_{14}\\ b_{11}\ 0\ b_{13}\ b_{14}\\ c_{11}\ c_{12}\ 0\ c_{14}\\ d_{11}\ d_{12}\ d_{13}\ 0 \end{array}\right]_{4*4} \left[\begin{array}{c} a \\ b \\ c \\ d \end{配列}\right]_{4*1} あるbcd 4 1= 0a _ 12 ある13 ある14b11 0b _ 13 b14c11 c12 0c _ 14d11 d12 d13 0 4 4 あるbcd 4 1
この場合、c \bm{c}cは A の固有ベクトルです。そして、このc \bm{c}cは、取得する必要がある固有ベクトルの中心性です。

媒介中心性 - 中心

この重要度指標は主にノードが中心にあるかどうかを測定するために使用されます。たとえば、メーデー北京コンサートの場合、メーデーはすべてのつながりの中心になければなりません。相互重要性の計算方法は次のとおりです:
cv = ∑ v を通る最短経路を持つノードのペアは何組ありますか? v ノードを除く、ペアごとのノードのペアの数 c_v = \sum \frac{ノードのペアは何組ありますか? v を通る最短パス { v ノードに加えて、ペアワイズ ノードのペアの数}cv=v -ノード以外のペアワイズ ノードのペアの数vを通る最短パスを持つノードのペアは何組あるか
例を使ってわかりやすく説明します。
ここに画像の説明を挿入

相互重要度から、CとDはグラフ全体の交通動脈の位置にあり、BはCDに隣接しているものの、明らかにBの重要度はCDほど高くないことがわかります。

最短経路の重要性 (近さ中心性) - どこにでも近い

重要度は以下の式で計算できます。
cv = ∑ 1 ノード v から他のノード u までの最短経路 c_v = \sum \frac{1}{ノード v から他のノード u までの最短経路}cv=ノードvから他のノードuへの最短パス1
上の画像も例として使用してください。ノード A の最短パス重要度は次のとおりです:
ca = 1 2 + 1 + 2 + 3 = 1 8 c_a=\frac{1}{2+1+2+3}=\frac{1}{8}c=2+1+2+31=81
ノード パス長は ACB (2)、AB (1)、ACD (2)、ACDE (3) に分割され、
ノード C の最短パス重要度は次のようになります:
cc = 1 1 + 1 + 1 + 2 = 1 5 c_c =\frac{1}{1+1+1+2}=\frac{1}{5}cc=1+1+1+21=51
cc > ca c_c>c_a
であるため、ノード パス長は CA (1)、CB (1)、CD (1)、CDE (2) に分割されます。cc>c, したがって、点 c の重要性は点 a よりも高くなります。これは、点 c がすべてに近く、点 a には郊外の感覚があることを意味します。

クラスタリング係数 (クラスタリング係数) - 暖かさを保つために団結します

ev = v ノードの隣接ノードによって形成される三角形の数 v ノードの隣接ノードのペアごとのペアの数 e_v=\frac{v ノードの隣接ノードによって形成される三角形の数}{ノードのペアごとのペアの数v ノードの隣接ノード}ev=vノードの隣接ノードのペアワイズ ペアvノードの隣接するノードによって形成される三角形の
ここに画像の説明を挿入
3 番目のev e_vが見つかりますev最初のev e_vより大きいevこれは、v ノードの場合、3 番目のグループの方がより深刻であることを示しています。このような中心がつながり、つながった点が新たなネットワークを形成することもあり、このようなネットワークを自己中心的ネットワークと呼ぶこともできます。

サブグラフ ベクトル (グラフレット次数ベクトル)

ノード v のローカル近傍トポロジは、自分で定義したいくつかのトポロジ構造を通じて表現できます。これは、ヒストグラムを作成し、自分で定義したノードの役割をそれぞれ記述することと同じです。また、GDVはノードの類似度などの計算にも利用できる。定義するノード数が 5 の場合、位相構造は 73 個存在することになり、この場合、GDV は 73 次元のベクトルとなり、ノードの位相情報の記述がより包括的になります。
ここに画像の説明を挿入

いくつかの考え

ノード間の重要度をどのように記述しても、ノードのグラフ情報のみが記述でき、ノードの属性情報は記述できない。この場合、たとえ特徴量エンジニアリングが最も優れていたとしても、コミュニティ分類を達成することは困難です。たとえば、同じグラフが 3 つあり、それらは朝陽区、海淀区、西城区に属しているというようになります。非常に難しい それらを 3 つのカテゴリに分割し、究極の特徴量エンジニアリングを達成します。3 つが表現する情報の一貫性が高いほど、1 つのカテゴリに分割される可能性が高くなります。これが機械学習の欠点です。したがって、計算能力が無制限の場合、情報のできるだけ多くの次元を考慮してグラフを記述するのが最も現実的な方法です。

グラフ特徴量エンジニアリングのやり方(接続レベル)

この部分では、ノード間の接続をD次元ベクトルとして表現し、ノード間の接続情報を通じて未知のノード間の接続情報の予測と解析を実現する必要があります。したがって、この D 次元ベクトルをどのように抽出するかが鍵となります。

アイデア 1: リンク情報を直接 D 次元
ベクトルに抽出する アイデア 2: リンクの両端のノード情報を D 次元ベクトルに結合することは、
実際には前のノード情報マイニングと同じであり、接続構造情報は次のようになります。上司Aと社員Aのノード情報では、このような上司と社員の所属関係の接続情報を表現することができません。したがって、この方法はお勧めできません。

最短経路距離

ここに画像の説明を挿入

ここで、A から B、B から E、C から E までの最短経路長はすべて 2 ですが、CD が重みの高い点である場合、2 つの接続 ACB と ACD の品質が異なることがわかります。 。したがって、距離の長さにのみ焦点を当てると、品質情報が失われます。

近所付き合い

(1) 共通の隣人(共通の友人の数)。
∣ N ( v 1 ) ∩ N ( v 2 ) ∣ |N(v_1) \cap N(v_2)|N ( v1N ( v2)
(2)ジャッカード係数(交并比)
∣ N ( v 1 ) ∩ N ( v 2 ) ∣ ∣ N ( v 1 ) ∪ N ( v 2 ) ∣ \frac{|N(v_1) \cap N( v_2)|}{|N(v_1) \cup N(v_2)|}N ( v1N ( v2) N ( v1N ( v2)
上図を例にとると、AB ノードの交差が C、AB ノードの和集合が CD である場合、AB ノードの交差と和の比率は1 2 \frac{1}{2}となります。21
(3)アダム-アダル指数∑ u ∈ ∣ N ( v 1 ) ∩ N ( v 2 ) ∣ 1 log ( ku ) \sum_{u\in{|N(v_1) \cap N(v_2)|} }
\frac{1}{log(k_u)}u N ( v1) N ( v2) l o g ( kあなた1
上の図を例にとると、ノード AB の共通の友人は C だけです。このとき、Adamic-Adar インデックスは1 log 3 \frac{1}{log3}です。l o g 31一般に、2 つのノードの共通の友人が共通点 (神牛や海王星と同様) である場合、2 つのノード間のつながりはそれほど強くありません。たとえば、Xiaoming と Xiaohong が両方とも四川大学に所属している場合、Xiaoming と Xiaohong になります。赤は必ずしも交差を過剰に生成するわけではありません。逆に、たとえば、2 つのノードの共通の友人が社会的テロリストである場合、シャオ ミンとシャオ ホンは両方とも研究グループのシャオ ワンを知っています。そうすれば、シャオミンとシャオホンのつながりはより強くなります。このとき、シャオ・ワンが一年中研究室で暮らす引きこもりの人物だとすると、シャオ・ミンとシャオ・ホンはジン・ジアンよりも恋仲になる可能性が高い。

思考法(カッツ指数)

2つのノードに共通の友達がいない場合、この時点では共通の友達数もクロスユニオン率も全て0となるが、実際には2つのノード間に何らかのつながりがある可能性がある。したがって、この場合は、完全な画像情報を確認する必要があります。これは多くの場合、ノード u とノード v の間の長さ k のパスの数を表す Katz インデックスで表されます。katz インデックスは、隣接行列の検出力を使用して計算できます。
ここに画像の説明を挿入
証明:
P uv ( 2 ) = ∑ i A ui ∗ P iv ( 1 ) = ∑ i A ui ∗ A iv = A uv 2 P_{uv}^{(2)}=\sum_i A_{ui}*P_{ iv}^{(1)}=\sum_i A_{ui}*A_{iv}=A_{uv}^{2}P紫外線( 2 )=あなたはP私はv( 1 )=あなたは私はv=紫外線2
理解:
A u i A_{ui} あなたは近隣 i がノード u から 1 ステップ離れていることを示します、P iv P_{iv}P私はvi が u から 1 歩離れているかどうかを示します。引き続きノード 12 を例として使用します。この時点では u=1、v=2、A 1 i A_{1i}1ノード 1 から 1 つ離れたノード、つまりノード 2 と 4 を示します。隣接行列は [0 1 0 1] の最初の行ベクトル、Pi 2 P_{i2 }P2次数 1 はA i 2 A_{i2}と同等です2はい、隣接行列は [1 0 0 1] の 2 番目の列ベクトルです。ここで、i と u は 1 ステップ、i と v は 1 ステップ離れていますが、実際には u と v は 2 ステップ離れています。

继续证明:
P uv ( 2 ) ≡ A uv 2 P uv ( 3 ) = ∑ i A ui ∗ P iv ( 2 ) = ∑ i A ui ∗ A iv 2 = A uv 3 … … P uv ( l ) = A uvl P_{uv}^{(2)} \equiv A_{uv}^{2}\\ P_{uv}^{(3)}=\sum_i A_{ui}*P_{iv}^{(2) }=\sum_i A_{ui}*A_{iv}^{2}=A_{uv}^{3}\\……\\P_{uv}^{(l)}=A_{uv}^{l }P紫外線( 2 )紫外線2P紫外線( 3 )=あなたはP私はv( 2 )=あなたは私はv2=紫外線3……P紫外線( l )=紫外線

さらに、この長さを無限大(1、2、3、...、∞)に加算することができます。この場合、ノード v1 と v2 のすべてのパス長の合計は次のようになります。
S v 1 v 2 = ∑ i = 1 β i A v 1 v 2 i S_{v_1v_2}= \sum_{i=1} \beta ^i A_ { v_1v_2}^iSv1v2=i = 1bv1v2私は
ここで、β \betaβは低減係数で、通常は0 < β < 1 0<\beta<10<b<1 . 長さが長くなるほど、減少量は大きくなります。
実際には、S = ∑ i = 1 ( β A ) i S= \sum_{i=1} {(\beta A)}^iS=i = 1( β A )iは等比数列の合計であり、等比数列で拡張できます。
S = ∑ i = 1 ( β A ) i = ( I − β A ) − 1 − IS= \sum_{i=1} {(\beta A)}^i=(I-\beta A)^{- 1}-私S=i = 1( β A )=(βA _1I
对这个公式进行一个证明:
( I + S ) ( I − β A ) = ( I + β A + β 2 A 2 + ⋯ + β n A n ) ( I − β A ) = I + β A + β 2 A 2 + ⋯ + β n A n − ( β A + β 2 A 2 + ⋯ + β n + 1 A n + 1 ) = I (I+S)(I-\beta A)\\ =(I+ \beta A + \beta ^2A^2+\dots+ \beta ^nA^n)(I- \beta A)\\ =I+ \beta A + \beta ^2A^2+\dots+ \beta ^nA^n-( \beta A + \beta ^2A^2+\dots+ \beta ^{n+1}A^{n+1})\\ =I (+βA _=(+βA _+b2A_ _2++b_n )(βA _=+βA _+b2A_ _2++b_n( βA _+b2A_ _2++bn + 1A _n + 1 )=I
因此:
S = ( I − β A ) − 1 − I S=(I-\beta A)^{-1}-I S=(βA _1

グラフの特徴量エンジニアリングを行う方法 (グラフ全体レベル)

BoWからBoNへ

この部分では、画像全体の特性を記述するために D 次元ベクトルを抽出する必要があります。NLP がトランスフォーマーの時代に入る前は、まだ機械学習 (N-Gram) の段階にあり、文字情報をどのようにベクトル情報に変換してコンピュータに入力するかという同じ問題に直面していました。このとき、非常に素晴らしいアイデアが提案されました (bag-of-words、BoW)。このアイデアの核心は、テキスト内の特定の単語の出現数を数え、それをベクトル形式にエンコードすることです。たとえば、「私はあなたを愛しています、そしてあなたは彼を愛しています」という文は、私とhe が 1 回、love you が 2 回出現すると、この文は [1,2,2,2,2,1] としてエンコードできます。もちろん、このエンコード方法は荒削りで問題が多く、単語の分割を考慮していないため問題も多いですが、このアイデアはテキスト情報からテンソル情報への変換における重要なステップを実現します。ちなみに、前回の記事の宣伝をさせてください。NLP 関連のコンテンツについてさらに詳しく知りたい場合は、私のブログの NLP シリーズの記事を読むことができます。NLP はゼロから始める
BoWの考え方に基づいて、グラフのノードを単語とみなしてバッグオブノード(BoN)の考え方を提案します。
ϕ ( G 1 ) = [ ノード 1 の番号 , ノード 2 の番号 , … ] \phi (G_1) = [ノード 1 \ 番号, ノード 2 \ 番号, \ドット ]ϕ ( G1=[ノード1 _ _ _ _ _ _ ノード2 _ _ _ _ _ _ もちろん
、この考え方には多くの欠点もありますが、最も致命的な点は、ノード情報のみを持ち、接続情報がないことです。そのため、この考え方をさらにアップグレードする必要があります。

BoNからBoNDへ

ノードや接続の数ではなく、ノード次数の数のみを確認してください。
ここに画像の説明を挿入
BoN の考え方を使用する場合、2 つのグラフのベクトル表現は同じであり、各点は 1 回だけ表示されます (4 つのノードは同じではありません)。区別することができます。

BoG(グラフレットの袋)

ここに画像の説明を挿入

このとき、 2つのグラフのf G f_GがfG量の積を計算します。つまり、K ( G , G ' ) = f GT f G ' K(G,G')=f_G^T f_{G'}K ( G G _=fGTfG、これは 2 つのグラフ間の類似性を反映することができます。もちろん、2 つの地図の数値が大きく異なる場合、たとえば、1 つは北京の地下鉄網、もう 1 つは阿里地区の交通流網である場合、たとえそれらが類似していても、数値の積は次のようになります。非常に大きい。したがって、一般的にはf G f_Gする必要があります。fG正規化処理を行います。
h G = f G ∑ f GK ( G , G ' ) = h GT h G ' h_G=\frac{f_G}{\sum f_G}\\ K(G,G')=h_G^T h_{G'}hG=fGfGK ( G G _=hGThG

しかし、n 個のノードを持つ巨大なネットワーク グラフがある場合、グラフ全体のノードに対してサブグラフ マッチングを実行する必要があり、計算量が nkn ^ k であるため、この k サイズのサブグラフ マッチング計算を行うのは非常に不経済ですnk

BoC(ヴァイスファイラー・リーマン・カーネル)

これはカラーリファインメントに基づいた方法です。
ここに画像の説明を挿入
初期ノードを 1 とすると、カラーリファインメントとハッシュマップのプロセスを経て、それが一番下の形になります。この場合、1,1 は 2、1,11 は 3、1,111 は 4、1,1111 は 5 に対応します。もちろん、この絵はこのプロセスを繰り返し、2,4 が 6 に対応し、2,5 が 7 に対応し、3,44 が 8 に対応する、というように繰り返すことができます。次に、グラフを 13 次元ベクトルに変換できます。
左側のグラフの場合: [6,2,1,2,1,0,2,1,0,0,2,1,0]
右側のグラフの場合: [6,2,1,2, 1、1、1、0、1、1、1、0、1]

グラフ埋め込み学習 (ノード埋め込み) - ランダム ウォークと行列因数分解

この部分は上記に続き、従来のグラフ機械学習の部分にも属するはずですが、その考え方は非常に重要であるため、グラフ機械学習であってもグラフニューラルネットワークであっても、グラフデータを低次元にマッピングする必要があるためです。連続密ベクトル、つまりノードの埋め込みプロセスは、モデルの品質を左右すると言えます。したがって、章として分けて整理させていただきます。
ノード埋め込みの出現は、人工特徴量工学が徐々に歴史の舞台から退き、グラフ表現やランダムウォーク手法が徐々に人々の視野に入ってきたことを意味します。同じランダムウォークシーケンス内に一緒に出現するノードは類似したノードとみなされ、Word2Vec と同様の自己教師あり学習シーンが構築されます。DeepWalkやNode2Vecなどのランダムウォークに基づくグラフ埋め込み手法が派生しています。数学的には、ランダム ウォーク法と行列因数分解は同等です。次に、グラフ全体の埋め込み方法について説明します。これは、全ノードのベクトル集合の埋め込み、仮想ノードの導入、匿名ランダムウォークなどの方法によって実現できます。

このランダム ウォーク手法を導入する前に、 DeepWalkNode2Vecの論文を集中的に読むことをお勧めしますNode2Vec は Word2Vec とある程度似ているので、グラフ ネットワークを学びたいだけであれば、私の記事「NLP 0 から自然言語から機械語エンコーディングへ」の章を直接読んで、浅い理解を得ることができます。

おすすめ

転載: blog.csdn.net/D_Ddd0701/article/details/131008455