タイトル: グラフ ニューラル ネットワーク (GNN)
日付:
タグ:
- エッセイ
- ナレッジポイントの
カテゴリ: - 【勉強ノート】
グラフ ニューラル ネットワーク (GNN) の概要
記事ソース:https://distill.pub/2021/gnn-intro/
まえがき: この記事を書こうと思った理由を教えてください。最近「グラフ ニューラル ネットワーク」についてよく聞くようになりましたが、それが何なのか全く理解していなかったので、今回はグラフ ニューラル ネットワークについて簡単に理解する機会を設けました。 . 始めましょう 本題に入ります。
記事全体では内容を章分けしておらず、最初から最後まで解説しているだけなので、ここでは原文の順序に従って順番にメモを埋めていきます。
記事には最初にこんな一文があったWe are starting to see.....
。この文の導入部は、現在のグラフ ニューラル ネットワークがまだ新興段階にあるため、一定の発展の見通し、つまり課題と機会の両方がまだあることを示しています。
著者はグラフニューラルネットワークとは何かを以下の4つの側面から解説・解説しています(この記事の主旨でもあります)。
- グラフとして表現できるデータの種類
- グラフと他のデータの違いは何ですか。
- GNN を構築します。
- GNNプレイグラウンドを提供します。
グラフとは何ですか
次の図に示すように、グラフはエンティティ ノード間の関係を表します。
ここで、U はグラフ全体を表します。
ノード、関係、グラフ全体とは何かをさらに説明するために、グラフとは何か (ベクトルの形式で表現) を表す次の方法を使用できます。
さらに、グラフは無向グラフおよび有向グラフとして表すことができます。
データはグラフとして表現されます
では、他のデータをどのようにしてグラフとして表現できるのでしょうか?
グラフとしての画像
画像データのピクセル点をノードとみなしてグラフを構築します。
テキストをグラフとして表示
グラフを使用してテキストを表す場合、それは有向グラフで表され、段落内で各文字、単語、トークンなどをグラフのノードとして使用できます。
もちろん、画像とテキストを画像で表現すると、冗長な表現が発生してしまうため、現状では両者の符号化方式は一般的ではないことも記事では説明されている。生成された。
他の形式のデータ表現
-
分子グラフの表現:
-
ソーシャルネットワークの表現:
- 競争関係の表現 (この例について簡単に説明します。テコンドー競技における各個人と他の人々の関係です。競争するかどうかに関係なく、グラフの形式で表現できます):
解決した問題または応用
では、グラフはどのような問題を解決できるのでしょうか? それは次の 3 つの側面から考えることができます。
- グラフレベル
- ノードレベル (ノードレベル)
- エッジレベル
1 つ目はグラフ レベルのタスクです。記事では、タスクは分子グラフに 2 つのループがあるかどうかを確認することであると述べています。
このような問題は、画像の分類問題やテキストの感情分析タスクに似ています。
ノード レベルのタスク、この記事で示されている例はテコンドー競技の問題です。競技中にインストラクターの Hi 氏と管理者の John H の間に意見の相違があると仮定し、ノードは競技に参加する人員を表します。エッジが関係を表している場合、タスクは次のとおりです。 —参加者を Mr. Hi 側または John H 側に正しく分類します。
次に、画像では、画像のセグメンテーション タスクと同様に、各ノードがピクセルを表します。
テキストでは、文の品詞タグ付けで単語の品詞を予測するのと似ています。
エッジ レベルで考えると、この論文ではそのようなシナリオを提案します。ゲームではキャラクターがノードで表現され、ノード間の関係を表現するためにエッジが使用されると仮定します。
つまり、タスクはノード間の関係の予測に変わります。これは、ナレッジ マップでの関係の抽出と非常によく似ています。
機械学習の問題
この記事では、ニューラル ネットワークに存在する問題、つまり、ニューラル ネットワークをグラフ上で使用する場合にグラフをどのように表現するかについて主に説明します。
これまでのところ、グラフには考慮する必要がある 4 つのプロパティがあることがわかっています。
- ノード;
- 側;
- 完全な画像属性情報。
- 接続性
最初の 3 つはベクトルで表現することもできますが、最も表現が難しいのは最後のグラフの接続性、つまり 2 つのノードの接続性をどのように表現するかです。
隣接マトリックスを使用して接続性のストレージ表現を実現できると言う人もいますが、これにはいくつかの問題があります。
-
大量のデータを前提としているため、グラフを保存できません。
-
スパース行列で表現するとGPU上で並列計算が実現できません(これも現時点で解決すべき課題です)。
-
隣接行列のもう 1 つの特徴は、グラフの情報をさまざまな隣接行列で表現できることです。では、ニューラル ネットワークはさまざまなデータ入力をどのように処理すべきでしょうか? つまり、非順次表現を実現するためにデータを処理する方法です。
この論文では次の表現を提案しています。
- グラフ内のノードについては、ワンホット表現方法と同様に、スカラーを使用して表現します (グラフ内のノードに番号を付けます)。
- グラフ内のエッジもスカラーで表現し、One-hotと同様の手法で表現します。
- ここでの接続性は隣接リストによって表され、リストの長さは入力エッジの数を表し、リスト内の要素は 2 つのタプルであり、どの 2 つのノードがエッジの両側で接続されているかをそれぞれ示します。
グラフニューラルネットワークとは何ですか?
この記事では、まず GNN の概念について説明します。
GNN は、グラフの対称性 (順列不変性) を維持する、グラフのすべての属性 (ノード、エッジ、グローバル コンテキスト) に対する最適化可能な変換です。
言い換えると、グラフ ニューラル ネットワークは、グラフのプロパティを変換し、グラフ上の対称情報を維持できるグラフです。
対称情報とは、ノードの位置を並べ替えた後でもグラフの構造が変化しないことを意味します。
記事では、このフレームワークはmessage passing neural network
GNN の構築に使用されていると述べていますが、もちろん表現用の他のネットワークもあります。このネットワークでは、入力はグラフ ネットワークですが、出力もグラフ ネットワークのままです。
最も単純な GNN
最も単純な GNN の例を構築してみましょう。下の図に示すように、頂点ベクトル (つまり、前述したノード ベクトル)、エッジ ベクトル、グローバル ベクトルに対して、それぞれ多層パーセプトロンを構築します。
このように、3 つの MLP で GNN の層が構成されます。
この層の機能は、対応する入力頂点ベクトル、エッジ ベクトル、およびグローバル ベクトルを MLP に入力し、対応するグラフを入力することです。グラフの属性のみが変更されており、接続性や構造は変更されていません。
どのように予測するか
次に、どうやって予測するかを考えてみましょう。
- シンプルなケース
最初に最も単純な二値分類問題を考えてみましょう。頂点については、すべての頂点ベクトル情報がすでにあります。これらの頂点ベクトル情報を通じて、その後ろに出力サイズ 2 の全結合層を追加し、最後にソフトマックスを使用して次のことを行うことができます。分類は可能です。
同様に、多分類問題の場合は、出力の後に出力サイズ n の全結合層を追加し、最後に予測としてソフトマックスを追加するだけで済みます。
線形回帰問題の場合、出力サイズ 1 の接続層が 1 つだけ必要です。
以下の図の意味は、最後の層 (グラフ) の出力が与えられた後、全結合層に頂点を入力し、最終的に予測された出力を取得することを意味します。
すべてのノードが同じ全結合層のパラメータを共有し、同様に、すべてのエッジも同じ全結合層のパラメータを共有することに注意してください。
- 複雑な状況
頂点情報がないが、頂点の状況を予測する必要がある場合、どのように対処すればよいでしょうか。
この記事で言及されている方法の 1 つはプーリングです。これは 2 つのステップに分かれています。
- プールする必要がある要素 (ここでの要素とは、頂点情報のない隣接するエッジを指します) については、そのベクトル表現を収集します。
- 収集したすべてのベクトルを加算して合計し、新しいベクトルを取得します。この時点では、このベクトルが目的の頂点ベクトルになります。
- (グローバルベクトルも追加する必要がありますが、本文中では触れていませんが、これが何なのかはグローバル情報の共有のところで説明します)
数式法で表すと以下の図のようになります。
上図では点がなくエッジのみがあることを示していますので、点情報のみでエッジがない場合は以下の方法で表現できます。
したがって、上記の方法では、どのようなデータが欠損していても、プール法に従って欠損データを取得できることがわかります。
したがって、単純な GNN を要約するには、次の図を使用してそれを表します。まず、画像を入力し、次に MLP を通じて最終出力を取得します。データが不足している場合は、プーリング層を使用して処理できます。分類層を通過して、最終的な予測結果を取得します。
情報伝達
上記の方法には、グラフの構造情報を予測に使用できないという大きな制限がありますが、上記の方法は、接続関係を使用せずに、点、エッジ、および大域情報の属性を独立して変更するだけであることがわかります。この問題を解決するには、パスが有効です。
実際、メッセージ パッシングのプロセスはプーリングのプロセスと非常に似ており、次の図で表すことができます (隣接ノード情報を合計)。
式で表すと次のようになります。
上記のプーリングは最終出力層の後に行われますが、提前
この方法で属性を完成させることは可能でしょうか?
答えは「はい」です。
点
以下はこの方法に基づいており、グラフ内の边
情報を共有・分散することができます。これは本質的にはベクトルの加算です(加算できるのは隣接する辺のみ、つまり点 V に接続する隣接する辺のみです)。点 V のベクトルを辺に追加するには、同じ推論が点に追加されます。)
ただし、最初に点セットからエッジ セットに追加する方が良いか、最初にエッジ セットから点セットに追加する方が良いか (2 つの方法では異なる結果が得られます) はまだ決定されていません。さらに、この記事では、交互に収束するプールなどの他の方法も説明されていますが、ここでは説明しません。
グローバルな情報の共有
これまでの事例では、直接隣接していない頂点や辺の情報を共有できないという問題がありました。
これが、グローバル変数の情報または概念を導入する理由です。
この記事で提案する方法は、または とU
呼ばれるグラフを導入することです。この U はグラフ内のすべての辺と点を結び、情報伝達の橋渡しとして使用できます。具体的には、次のグラフで表すことができます。master node
context vector
GNN を構築する
この部分は本文中にインタラクティブなグラフがあり、GNN がハイパーパラメータの調整に非常に敏感であることを示していますが、このグラフが何を意味するのかは明確ではありませんが、ここでは詳しく説明しません。
記事の最後にたくさんの議論があるので、時間があるときに追加します。