グラフ表現学習 アルゴリズム学習

グラフ表現学習


グラフ ニューラル ネットワークの概要

困難:

  1. データ構造の観点: ピクセル データと同様の正準グリッドではなく、グラフ データの近傍データの数が固定されていないため、画像内の畳み込みニューラル ネットワークを直接使用することはできません。
  2. 従来のシーケンス ニューラル ネットワークは一般に 1 次元の線形データに適しているため、シーケンス モデルをグラフ データに直接使用するのは困難です
  3. 深層学習では、サンプル分布に関して、サンプルが独立かつ同一の分布を満たすことを前提としており、深層学習における重要な演算子の一般化と定義は、ここ数年で徹底的に研究開発されてきました。

サンプリング: 工業規模の大きなグラフはメモリに直接ロードできないため、多くのアルゴリズムはポイントサンプリングやレイヤー サンプリングなど、グラフのバッチ サンプリング用に設計されています。


グラフ表現学習の概要:

  • 目的: 高次元の疎なグラフ構造データを密なベクトルにマッピングし、ネットワーク トポロジとネットワーク ノードの情報を同時にキャプチャします。

埋め込みの粒度に応じて、グラフ表現学習は頂点埋め込みと全体グラフ表現学習の2 つのカテゴリに分類されます。

  • 頂点埋め込み: 各ノードの低次元ベクトル表現を生成します。細かい粒度。通常はノード分類など、ノード レベルでの予測に使用されます。

  • 画像全体の学習: 一般に画像全体の予測に使用される粗い粒度で画像全体のベクトルを生成します。

行列分解ベース、ランダムウォークベース、深層学習ベースの3 つのカテゴリに分類されます。

一般的なストレージ グラフは、統計、特定のサブセット、または隣接行列によって表されます (メモリ消費量が大きすぎます)。

したがって、高次元の疎なグラフ データを低次元の密なベクトルにマッピングし、ネットワーク トポロジをキャプチャし、グラフ データの計算を高速化する必要があります。

行列分解に基づく

グラフ構造の表現には通常、隣接行列とラプラシアン行列が含まれます。

主に行列分解によりグラフ内のノードベクトル列を取得します。

頂点のセットがわかったところで、エッジを作成するにはどうすればよいでしょうか?

古典的な方法の 1 つ: 隣接距離に基づいてエッジを構築する

  • 2 つの点が中心点の半径内にある場合、つまりエッジがある場合は、重みを割り当てることもできます。

次元削減の鍵は、元の空間にできるだけ近づけることです。

ラプラシアンマップ分解

LE アルゴリズムの中心的な考え方: 次元削減後のデータ構造の特性を可能な限り維持するために、次元削減後の空間内で接続された点が可能な限り近くに描画されることが望まれます

主な目的:高次元空間から低次元空間への写像関係を学ぶこと

この問題は最適化問題に変換されます。
W ij ∣ ∣ yi − yj ∣ ∣ 2 W_{ij}||y_i-y_j||^2Wイジ∣∣ y私はyj2
分2YTLY分2Y^TLY2以上TLY L}
v_i=\lambda_iv_iLv私は=私はv私は


struc2vec: 構造同一性からノード表現を学習する

ノードの構造的同一性に対する潜在表現の学習 : 構造的特徴からのノードの潜在的表現の学習
ノード表現 : ノード表現 構造
的同一性 : 構造的特徴

struct2Vec は、構造アイデンティティからノードの特徴を学習するための新しい柔軟な学習フレームワークです。階層を使用してさまざまなスケールでノードの類似性を測定し、多層グラフを構築して構造の類似性をエンコードし、ノードの構造コンテキストを生成します

  • 構造的特徴を捉える学習において優れたパフォーマンスを示すため、分類タスクにおけるアルゴリズムの改善は主に構造的特徴の学習に依存します。

通常、異なるノードはネットワーク内で同様の機能を実行するため、ノードはネットワーク構造内で実行する機能によって同じカテゴリに分類されます。

ノード構造特徴の測定方法

  1. 距離
    ノード近傍を使用する距離関数を使用して、すべてのノード ペア間の距離を測定し、クラスタリングまたはマッチングによってノードを同等のクラスに配置します。
  2. 再帰
    隣接するノードで再帰を構築し、収束するまで繰り返し拡張し、最終値を使用して同値クラスを決定します。

这两种方法各有优劣,所以我们提出了代替的方法

教師なしノード構造特徴の学習に基づいて、分類タスクと予測タスクで優れたパフォーマンスを発揮します。
フィールドでは、ノードのコンテキストは一般にエンコードされ、w はランダム ウォークのステップ サイズです。
フィールド内で同様のノード セットを持つ同じフィールドを持つノードは、同様の潜在的な表現を持つ必要があります。

キーポイント:

  1. ほとんどの実際のネットワークの多くのノード機能は、強力な均一性を示します。

例: 同じ政治的傾向を持つ 2 人のブロガーは、ランダムにリンクされるよりもリンクされる可能性が高くなります。

  1. 特定の特性を持つノードの隣接ノードは、同じ特性を持つ可能性が高くなります。

ネットワーク内で近いノードと潜在表現は特徴を共有する傾向があり、同様にネットワーク内で遠くにある 2 つのノードは、ローカル構造とは無関係に潜在表現で分離される傾向があります。

  • 構造的等価性は、基礎となる表現では適切に捕捉されません。

ただし、均質性ではなく構造的同一性に依存する特徴を分類する場合、これらの最近の方法は、構造的同一性の根底にある表現を捕捉することで優れたパフォーマンスを発揮する可能性があります。

アルゴリズムのコアのアイデア

  1. ノードとエッジ、およびネットワーク内での位置とは独立して、ノード間の構造的類似性を評価します。
    ネットワークの場所やノード ラベルに依存せず、同様のローカル構造を持つ 2 つのノードを考慮し、ネットワーク接続も必要とせず、異なる接続コンポーネント間で構造的に類似したノードを識別します。
  2. 構造の類似性を測定するために階層が確立され、構造の類似性の概念はますます厳密になっています。
    階層の最下位では、ノード間の構造の類似性はその程度のみに依存しますが、階層の最上位では、類似性はネットワーク全体に依存します。
  3. ノードのランダム コンテキストを生成し、多層グラフの重み付きランダム ウォークによって観察される同様の構造を持つノードを分割します。
    同様のコンテキストに現れる 2 つのノードは、同様の構造を持つ可能性が高く、このコンテキストは言語モデルを通じてノードの潜在的な表現を学習できます。
  4. ノードの潜在的な表現間の距離は、それらの構造的類似性に密接に関連しているはずです。同じ構造特性を持つが異なる構造特性を持つノードは遠く離れている必要があります
  5. ノードの構造的アイデンティティは、ネットワーク内のその「位置」から独立していなければなりません
  6. ノードの基礎となる表現は、ノード ラベルを含むノードまたはエッジのプロパティに依存してはなりません。
  7. 類似性の尺度は階層的であり、近隣サイズの増加に対応し、構造的類似性のより反復的な概念を捉える必要があります。
  8. 同じ次数を持つ 2 つのノードは構造的に似ていますが、隣接するノードも同じ次数を持つ場合、構造的にさらに似ています。

要約: Struct2Vec アルゴリズムは、特定の構造類似性測定や表現学習フレームワークを必要としません。

例:

画像

  • 2 つのノード U と V は類似した構造を持ち、グラフの次数も類似していますが、それらの間の距離は非常に遠いです

DeepWalk和node2vec不能捕捉到结构特征,在分类任务中节点标签更依赖于结构特征,struct2vec在分类任务中更优越

ディープウォークアルゴリズム

キーワード: ノードの埋め込み

基础知识补充:

コンテキストとは何ですか?

2 つの異なる単語が非常に似た「コンテキスト」を持つ場合 (つまり、「キティが木に登った」と「猫が木に登った」など、ウィンドウの単語が似ている)、モデルのトレーニングを通じて、これら 2 つの単語の埋め込み非常によく似たものになります。
では、2 つの単語が似た「文脈」を持つとは、具体的には何を意味するのでしょうか? たとえば、同義語の「インテリジェント」と「スマート」については、これら 2 つの単語には同じ「文脈」があるべきだと考えます。「エンジン」や「トランスミッション」などの関連語も同様の文脈を持つ可能性があります。

実際、この方法はステミングにも役立ちます。たとえば、ニューラル ネットワークは、「ant」と「ants」という単語の類似した単語ベクトルを学習します。

ステミングは、接辞を削除して単語の語根を取得するプロセスです。

埋め込みとは何ですか

深層学習の分野におけるこの概念の元々の入り口は、いわゆる多様体仮説(多様体仮説)です。多様体仮定とは、「自然の元データは、元データが存在する高次元空間に埋め込まれた(埋め込まれた)低次元多様体である」という意味です。そして、深層学習のタスクは、高次元の生データ (画像、文章) を低次元多様体にマッピングし、高次元の生データが低次元多様体にマッピングされた後に分離可能になるようにすることであり、このマッピングは埋め込みと呼ばれます(埋め込み)。埋め込みは実際にはマッピングであり、単語を元の空間から新しい多次元空間にマッピングします。つまり、単語の元の空間を新しい空間に埋め込みます。たとえば、Word Embedding は、単語で構成される文を表現ベクトルにマッピングします。しかしその後、何が起こっているのかわからず、低次元多様体の表現ベクトルを Embedding と呼び始めましたが、これは実際には誤用です。ディープラーニングコミュニティの共通理解(実際には本来の意味からは逸脱していますが)に従って、
直感的な観点から理解してみましょう、猫と子猫という単語は意味的に似ていますが、犬と子猫はそれほど似ていません。 iphone という言葉 言葉と子猫の意味はさらに異なります。語彙内の単語のこの数値表現を学習する (つまり、単語を単語ベクトルに変換する) ことで、そのような値に基づいてベクトル化操作を実行して、いくつかの興味深い結論を得ることができます。たとえば、単語ベクトル kitten、cat、dog に対して次の操作を実行すると、kitten - cat + Dog となり、結果の埋め込みベクトルは単語ベクトル puppy と非常に似たものになります。

  • 要約すると、埋め込みとは、元のデータ、つまりニューラル ネットワークを介してマッピングされた後の低次元ベクトルから抽出された特徴です。

Word2Vecとは何ですか?

Word2Vec は、大規模なテキスト コーパスから教師なしの方法で意味論的な知識を学習するためのモデルであり、自然言語処理 (NLP) で広く使用されています。では、自然言語処理にどのように役立つのでしょうか? Word2Vec は、実際には、テキストを学習することによって単語の意味情報を単語ベクトルの形式で表します。つまり、埋め込み空間を通じて、意味的に類似した単語がこの空間内で非常に近くにあります。

スキップグラムモデル

参考リンク:

Word2Vec モデルには主に Skip-Gram と CBOW の 2 つのモデルがあり、直感的に理解すると、Skip-Gram は与えられた入力単語を入力して文脈を予測します。そして、CBOW には入力単語を予測するためのコンテキストが与えられます。

画像
画像

Skip-Gram モデルは実際には 2 つの部分に分かれており、最初の部分はモデルを構築することであり、2 番目の部分はモデルを通じて埋め込み単語ベクトルを取得することです。Skip-Gram のモデリング プロセス全体は、実際にはオート エンコーダーのアイデアに非常に似ており、最初にトレーニング データに基づいてニューラル ネットワークを構築します。モデルがトレーニングされるとき、このトレーニング済みのデータは使用されません。モデルは新しいタスクを処理します。本当に必要なのは、隠れ層の重み行列など、トレーニング データを通じてモデルによって学習されたパラメーターです。これらの重みが実際に Skip で学習しようとしているものであることが後でわかります。グラム 「単語ベクトル」。トレーニング データのモデリング プロセスに基づいて、これに「Fake Task」という名前を付けます。これは、モデリングが最終的な目標ではないことを意味します。

上記の方法は、教師なし特徴学習 (教師なし特徴学習) で実際に見られます。最も一般的なのは自動エンコーダー (自動エンコーダー) です。入力を隠れ層でエンコードおよび圧縮し、次に出力層でエンコードします。データをデコードして初期状態に戻します。トレーニングが完了したら、出力層を「切断」し、隠れ層のみを保持します。

偽のタスク

モデルをトレーニングする本当の目的は、トレーニング データに基づいてモデルによって学習された隠れ層の重みを取得することであると上で述べました。これらの重みを取得するには、まず「フェイク タスク」として完全なニューラル ネットワークを構築する必要があります。次に、「フェイク タスク」を通じてこれらの単語ベクトルを間接的に取得する方法を確認するために戻ってきます。

  • 例: 次に、ニューラル ネットワークをトレーニングする方法を見てみましょう。「犬は郵便配達員に向かって吠えた」という文があるとします。

画像

  • テキスト内の単語のペアをニューラル ネットワークに供給することで、上記の確率計算を実行するようにニューラル ネットワークをトレーニングします。トレーニング サンプルのいくつかの例を下の図に示します。「素早い茶色のキツネが怠惰な犬を飛び越える」という文を選択し、ウィンドウ サイズを 2 (window_size=2) に設定します。つまり、入力単語と結合する入力単語の前後 2 つの単語だけを選択します。下の図では、青色が入力単語を表し、ボックスがウィンドウ内の単語を表します。

画像

  • モデル表現: まず、ニューラル ネットワークが数値入力のみを受け入れることができ、単語の文字列を入力として受け取ることができないことは誰もが知っているため、これらの単語を表現する方法を見つける必要があります。最も一般的な方法は、トレーニング ドキュメントに基づいて独自の語彙を構築し、その単語をワンホット エンコードすることです。

ニューラルネットワークの構造:

画像

  • 隠れ層は活性化関数を使用しませんが、出力層は sotfmax を使用します。

単語のペアに基づいてニューラル ネットワークをトレーニングします。トレーニング サンプルは (入力単語、出力単語) の単語のペアです。入力単語と出力単語は両方ともワンホット エンコードされたベクトルです。最終モデルの出力は確率分布です。

  • 隠れ層

単語のエンコードとトレーニング サンプルの選択について説明した後、隠れ層を見てみましょう。ここで、単語を表すために 300 個の特徴を使用したいとします (つまり、各単語は 300 次元のベクトルとして表すことができます)。この場合、隠れ層の重み行列は 10,000 行、300 列になるはずです (隠れ層には 300 個のノードがあります)。

画像

自然言語処理の分野でのスパース データに対する高密度の埋め込みベクトルの生成

  • 行列は非常に疎です。上図の行列演算を見てみましょう. 左側は 1 x 5 と 5 x 3 の行列です. 結果は 1 x 3 の行列になるはずです. 行列の乗算の規則に従って、最初の行は結果の最初の列は、同様に、他の 2 つの要素も 12 と 19 として取得できます。10,000 次元の行列に対してこのような計算方法を使用するのは非常に非効率です。

  • 計算を効率的に実行するために、このスパース状態では行列の乗算計算は実行されません。行列の計算結果は、実際には、行列に対応するベクトルの値 1 を持つインデックスであることがわかります。上の例では、左ベクトルの値は 1 の対応する次元は 3 (添字は 0 から始まります) であり、計算結果は行列の 3 行目 (添字は 0 から始まります) - [10, 12, 19] になります。モデル内の隠れ層の重み行列は「ルックアップ テーブル」となり、行列の計算を行う際には、入力ベクトルの値 1 を持つ次元に対応する重み値を直接確認します。隠れ層の出力は、各入力単語の「単語埋め込み」です。

  • 出力: ニューラル ネットワークの隠れ層の計算後、単語 ant は 1 x 10000 のベクトルから 1 x 300 のベクトルに変化し、出力層に入力されます。出力層はソフトマックス回帰分類器であり、その各ノードは 0 から 1 までの値 (確率) を出力し、出力層内のすべてのニューロン ノードの確率の合計は 1 になります。

画像

ノード2vecアルゴリズム

ターゲットを最適化する

これは、頂点を埋め込みベクトルにマッピングするマッピング関数であり、グラフ内の各頂点について、サンプリング戦略によってサンプリングされた頂点の隣接する頂点のセットです。

node2vec 最適化の目標は、各頂点の与えられた条件下で、隣接する頂点の発生確率を最大化することです (隣接する頂点をどのように定義するかが非常に重要です)。

2 つの仮定: 1. 条件付き独立性の仮定 2. 特徴空間の対称性の仮定

頂点シーケンスのサンプリング戦略

Node2vec は引き続きランダム ウォークを使用して頂点の隣接シーケンスを取得します。違いは、node2vec がバイアスされたランダム ウォークを使用することです。

画像

  • パラメータ p は、訪問したばかりの頂点を繰り返し訪問する確率を制御します。
  • q はウォークが外側に向かうか内側に向かうかを制御します。q>1 の場合、ランダム ウォークは頂点を訪れて頂点に近づく傾向があります (BFS に偏ります)。q<1 の場合、遠く離れた頂点を訪問する傾向があります (DFS に偏ります)

アルゴリズムのステップ

ステップ 1: 構造的類似性を評価する

ノードやエッジから独立した類似性の定義を定義する必要があり、さらに、この類似性の尺度は階層的であり、より多くの構造的な類似性を捕捉するために近傍サイズの増加に対応する必要があります。直観的には、同じ次数を持つ 2 つのノードは構造的に似ていますが、隣接するノードも同じ次数を持つ場合、それらの構造はより類似します。重み付けされていないグラフを例にとると、ある 2 つのノードの次数が 5 であれば、その構造は完全に似ています。似ている

コード学習リンク: https://blog.csdn.net/u012151283/article/details/87255951

ステップ 3: ノードのコンテキストを生成する

多層グラフ構造 (ノード情報をまったく持たずに 2 つのペア間の構造的類似性を捕捉) により、各ノードのコンテキストが生成されます。

  1. Sturct2vec は、ランダム ウォーク (マルコフ連鎖状態接続) を通じてノードのシーケンスを生成しますが、この場合、グラフ行列の重みに従って、バイアスのあるランダム ウォークを通じて生成されます。
  2. ランダム ウォークの各ステップの前に、レベルを変更するかどうかによって異なります (確率が 0 より大きい場合は使用されません)。

ランダム ウォークでは、類似性の高いノードが優先され、類似性の低いノードは回避されます。

  • 現在のレベルに留まる場合 (p>0):
    ノード u から v への確率は次のように定義されます。

    画像

Z は、k レベル
定義における単語ベクトル u の正規化係数です。
画像

- 確率が 1-q の場合、レベルを変更し、関連するノードとレベル +1 または -1 に移動して、エッジの重みを定義する必要があります。
画像

レイヤー内でランダム ウォークが行われるたびに、レイヤーとは独立して、現在の頂点がコンテキストの一部として取得されることに注意してください。
所以,词向量u不仅在k层有上下文,而且在k+1层也有上下文,因为结构相似度不能随着层级上升而增加

核心:这是一个跨层的层次化上下文的概念

プロセス全体: 最初の層で関連するノード間でランダム ウォークを開始します。ランダム ウォークの長さ
(ステップ数) は固定されており、比較的短いものになります。その後、プロセスが特定の回数繰り返され、複数の結果が得られます。自立歩行

学習言語モデル

关键词:词向量映射,节点序列
SKip-Gram アルゴリズムは、単語のシーケンスの代わりにノードのシーケンスを生成し、シーケンス内のコンテキストの可能性を最大化します。一方、struct2vec は、多層グラフのランダム ウォークを使用し、階層的なソフトマックス マッピング (次のように説明されています) を使用します。 2 カテゴリ ツリー モデル、ノードとレベルの対応)
画像

ここにノードが埋め込まれており、SKip-Gramだけでなく他の技術も利用可能

複雑さと最適化

計算の複雑さを考慮します。各層では、各ノード ペア間の構造的距離を計算し、DTW 距離を使用して 2 つのシーケンス間の距離を計算する必要があります。計算量は O(n2) で、各層には 2n 個のノード ペアがあります、ネットワーク内の最大次数は k、合計時間計算量は O(k*n3) です。

最適化アイデア 1: 次数シーケンスの長さを短縮する

シーケンス内の各次数を計算するにはコストがかかりすぎ、ネットワーク内で多くのノードが同じ次数を持っているため、計算量を減らすために圧縮された次数シーケンス (次数とイベントの発生数を含むタプル) を提案する必要があります。

DTW 距離を置き換えます:
画像

  • 圧縮された順序次数シーケンスを使用して元のシーケンスを計算すると、同じ次数が生成され、DTW 距離も同様になることに注意してください。ただし、シーケンス自体は縮小されており、DTW 距離も変化するため、影響はありません。
最適化のアイデア 2: ペアごとの類似性計算を削減する

元のフレームワークは、各層 k のノードの各ペア間の類似性を評価しますが、次数が大きく異なる 2 つのノードは最下層 (k=0) でも構造的な距離があることを考慮すると、これは明らかに不必要に見えます。したがって、それらの間のエッジの重みは小さくなり、**これらのノードのコンテキストを生成するときにランダム ウォークがこのエッジを横断する可能性が低いという事実につながります。したがって、M にこのエッジが存在しないことによる影響は無視できるため、各ノードに対するペアごとの類似度計算の数を制限します。 **

階層グラフ構造における M のノード u に隣接するノードのセットを Ju とします。これは各層で同じです。Ju にはノード u に構造的に最も類似したノードが必要です。Ju を決定するには、 u 最も類似した次数を持つノードは、ネットワーク内のすべてのノードの順序付けされた次数シーケンス (ノード u の次数) に対して二分法を実行し、各方向で Log(n) 個の連続したノードを取ることによって計算できます。これは実際には次のように計算されます。本来は n 個の類似ノードを計算する必要がありましたが、logn 個の類似ノードが計算されるようになり、保存されたエッジの空間複雑度も O(n2) から O(logn) に変わりました。

層の数を減らす k

ネットワークの直径 k∗ によって、階層グラフ M の層の数が決まります。ただし、多くのネットワークでは、直径が平均距離よりもはるかに大きくなる可能性があります (極端な例では、グラフ内の 2 つのノードは 1000 ホップ離れていますが、他のノードはそのうちの 1 つからわずか 1 ホップしか離れていません)。また、k が k に近づくほど、つまり階層構造 M の最上位に向かうほど、次数列の長さが相対的に短くなるため (層の数が多いほど、ノードの k ホップのノードが少なくなり、fk(u,v) と fk-1(y,v) の差は小さくなります。そのため、実際には、それほど多くの層を構築する必要はありません。グラフのレイヤーでは、k<k を取得して構築します**。たとえば、それをハイパーパラメーターとして設定し、手動で設定します。

おすすめ

転載: blog.csdn.net/RandyHan/article/details/130285447