Microsoft のエンジニアが PyTorch を使用してグラフ アテンション ネットワークを実装し、驚くべき視覚効果を実現

Microsoft のエンジニアが PyTorch を使用してグラフ アテンション ネットワークを実装し、驚くべき視覚効果を実現

最近、グラフアテンションネットワークの視覚化に関するプロジェクトが多くの研究者の関心を集めており、開始からわずか 1 日で 200 を超えるスターを獲得しました。このプロジェクトは、わかりやすい視覚化を含む、PyTorch で実装された Graph Attention Networks (GAT) に関するものです。

プロジェクトアドレス: https://github.com/gordicaleksa/pytorch-GAT

プロジェクトを正式に紹介する前に、まずグラフ ニューラル ネットワーク (GNN) について説明しましょう。 GNN は、グラフ情報を処理するためのディープラーニングに基づく手法の一種です。 GNN は、その優れたパフォーマンスと解釈可能性により、最近広く使用されるグラフ分析手法となっています。計算生物学、計算薬理学、推奨システムなどで広く使用されています。

GNN はグラフ構造にディープラーニングを適用します。グラフ畳み込みネットワーク GCN はグラフ上で畳み込み演算を実行できますが、GCN にはいくつかの欠陥があります。そのため、3年前、BengioチームはGCNの問題を解決するためにGraph Attention Network (GAT)を提案しました。

GAT は空間 (畳み込み) GNN の代表です。 CNN はコンピューター ビジョンの分野で大きな成功を収めたため、研究者はそれをグラフィックスに拡張することを決定し、GAT が誕生しました。

現在、誰かが PyTorch を使用して GAT 視覚化を実装しました。このプロジェクトがどのように実施されたかを見てみましょう。

視覚化

コーラの視覚化

GNN に関しては、Cora データセットを導入する必要があります。 Cora データセットは多くの機械学習論文で構成されており、近年のグラフディープラーニングで人気のデータセットです。 Cora のノードは研究論文を表し、リンクはこれらの論文間の引用を表します。プロジェクト作成者は、Cora を視覚化し、基本的なネットワーク分析を行うためのユーティリティを追加しました。 Cora は以下のとおりです。

ノードのサイズは、そのランク(つまり、インバウンド エッジとアウトバウンド エッジの数)に対応します。エッジの厚さは、エッジの「人気」や「接続性」にほぼ対応します。以下は、Cora 上のランク (インバウンド エッジとアウトバウンド エッジの数) の分布を示すグラフです。

無向グラフを扱っているため、インレベルとアウトレベルのグラフは同じです。下のグラフ(順位分布)では、[2, 4]の範囲に興味深いピークが発生していることがわかります。これは、ほとんどのノードには少数のエッジがあるが、169 個のエッジを持つノードが 1 つあることを意味します (大きな緑色のノード)。

注意の視覚化

トレーニングされた GAT モデルを使用すると、特定のノードによって学習された注意を視覚化できます。次の図に示すように、ノードはアテンションを使用して周囲のノードを集約する方法を決定します。

これは、最も多くのエッジを持つ Cora ノードの 1 つです (参照)。色は同じクラスのノードを示します。

エントロピーヒストグラム

GAT が Cora で注意パターンを学習しない (つまり、一定の注意を学習している) ことを理解する別の方法は、ノード近傍の注意重みを確率分布として見て、エントロピーを計算し、各ノード近傍に情報を蓄積することです。

GAT の注目分布は偏っていると予想されます。オレンジ色のヒストグラムは理想的な均一分布であり、水色のヒストグラムは学習した分布であり、まったく同じであることがわかります。

Cora 埋め込み空間 (t-SNE) の解析

GAT の出力テンソルの形状は = (2708, 7) です。ここで、2708 は Cora のノード数、7 はクラスの数です。 t-SNE を使用してこれらの 7 次元ベクトルを 2D に投影すると、次のようになります。

使い方

方法 1: Jupyter Notebook

Anaconda コンソールから Jupyter Notebook を実行するだけで、デフォルトのブラウザでセッションが開きます。開始するには、注釈付き GAT.ipynb を開きます。

注意: win32api のインポート中に DLL のロードに失敗しました: 指定されたモジュールが見つかりませんでした。その場合は、pip uninstall pywin32 または pip install pywin32 を実行するか、pywin32 をインストールしてください。

方法2: 好みのIDEを使用する

選択した IDE を使用している場合は、Python 環境とセットアップ セクションを接続するだけで済みます。

トレーニングGAT

CoraでGATをトレーニングするために必要なものはすべてすでにセットアップされており、実行するにはpython training_script.pyを呼び出すだけです。

さらに、次のこともできます。

グラフデータを視覚化するには、--should_visualize を追加します。

データのテストセクションで GAT を評価するには、--should_test を追加します。

--enable_tensorboard を追加しました - メトリック (精度、損失) の保存を開始します

コード セクションには適切なコメントが付いているため、トレーニング自体がどのように実行されるかを理解できます。

スクリプトは次のようになります。

checkpoint*.pthモデルをmodels/checkpoints/にダンプします。

最終的な*.pthモデルをmodels/binaries/にダンプします。

メトリクスはruns/に保存され、Anacondaでtensorboard --logdir=runsを実行するだけで視覚化できます。

定期的にトレーニングメタデータをコンソールに書き込む

コンソールで tensorboard --logdir=runs を呼び出し、ブラウザに http://localhost:6006/ URL を貼り付けることで、トレーニング中にメトリックを視覚化できます。

視覚化ツール

t-SNE 埋め込みを視覚化する場合は、visualize_gat_properties 関数のコメントに従って、visualization_type を次のように設定します。

VisualizationType.ATTENTION - ノードの周囲の注目を視覚化する場合

VisualizationType.EMBEDDING - 埋め込みを視覚化する場合(t-SNE経由)

VisualizationType.ENTROPY - エントロピーヒストグラムを視覚化する場合

すると、優れた視覚化効果チャートが得られます (VisualizationType.ATTENTION はオプション)。

ハードウェア要件

GAT には非常に強力なハードウェア リソースは必要ありません。特に Cora のみを実行する場合は、2GB を超える GPU で十分です。

GAT のトレーニングには、RTX 2080 GPU で約 10 秒かかります。

1.5 GB の VRAM メモリが予約されています (PyTorch のキャッシュ オーバーヘッド。実際のテンソルに割り当てられるメモリははるかに少ないです)。

モデル自体はわずか 365 KB です。

ビデオリンク: https://v.qq.com/x/page/v3225t65a0q.html?start=8

<<:  健康コードがないと旅行するのは難しいですか?顔認識により健康コードのバリアフリー利用が可能に

>>:  人工筋肉における大きな進歩がサイエンス誌に掲載されました!複数の国の科学者が共同で新たな駆動メカニズムを実現

推薦する

ジェネレーティブ AI が画像検索をどのように再定義するか

翻訳者 | 李睿レビュー | Chonglou生成 AI は、ユニークなテキスト、サウンド、画像を作...

ビジネスにおけるAIとIoTの重要性

人工知能とモノのインターネットは、ビジネスの運営方法に革命をもたらしています。一方、AI は、リアル...

2021年に注目すべき5つのRPAトレンド

RPA ツールの使用はここ数年で急増しています。今年のパンデミックにより、組織は、特に RPA が最...

ビッグデータの3つの柱:データ、ブロックチェーン、アルゴリズム

[[180308]]環境は常に変化し、新しいテクノロジーが登場し、新しい組織が絶えず構築されており、...

...

科学:ChatGPTは労働者と非労働者の間の格差を縮小する

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

MITは超伝導体を使用して、人間の脳に近いエネルギー効率を持つ極めて低電力のニューロンを作成します。

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

将来のAIの世界における興味深い仕事

現在、人工知能 (AI) システムは反復的で非創造的なタスクを実行するのが得意ですが、スクリプトから...

「ビッグデータが古い顧客を殺す」といった混乱が顕著になる中、どのような「アルゴリズム」が必要なのでしょうか?

次のような経験をしたことはありませんか。求人検索サイトで仕事の希望に関するアンケートに答えると、サイ...

...

...

2020 年に AI、分析、データ ガバナンスに影響を与える 5 つのトレンド

企業レベルの人工知能は、まさに臨界質量に達しました。 AI があらゆるビジネスの主要な構成要素となる...

Meta がピクセルレベルのモーション トラッキング モデルを発表、簡易版はオンラインで利用可能

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

PyTorch Lightning モデルを本番環境にデプロイするにはどうすればいいですか?

[51CTO.com クイック翻訳] 機械学習の分野を見ると、ソフトウェアエンジニアリングの原理を...

ByteDance によって否定された中国版 Sora の何がそんなに素晴らしいのでしょうか?

執筆者 | Yun Zhao制作:51CTO テクノロジースタック(WeChat ID:blog)最...