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

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

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

ブログ    

推薦する

アプリオリアルゴリズム原理の要約

[[182123]]関連付けアルゴリズムは、データ マイニングにおける重要なタイプのアルゴリズムです...

ディープラーニング プロジェクトの例: オートエンコーダを使用したぼやけた画像の復元

より鮮明な写真を撮るには、カメラ レンズの優先フォーカスを使用して同じ写真を再度撮影するか、ディープ...

ベクトル監視なしのベクトル画像生成アルゴリズムがCVPR 2021に選出

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

...

...

早期がん検査、医療AI:2020年の医療の10の進歩は注目に値する

過ぎ去ろうとしている2020年、私たちが戦っているのは新型コロナウイルスだけではありません。人間の健...

WaymoとGoogleが自動運転のマルチ軌道行動予測を実現するTNTモデルを提案

はじめに: Waymo は最近、フェニックス地域で安全担当者なしの無人タクシーの運行を開始すると発表...

...

...

2022年の人工知能ロボットの5つのトレンド

ロボット工学は近年驚異的な進歩を遂げました。ロボティックプロセスオートメーションなどの分野は、ますま...

「ロボット排除の3原則」を破る方法

2013年に私は2つの文章を書きました。1つは「デジタル化できるものはすべてデジタル化される」という...

6つの主要な人工知能アプリケーションの主要技術の詳細な説明

01ロボティックプロセスオートメーション(RPA) RPA (ロボティック プロセス オートメーショ...

Meta、Google、Tesla、競合他社が団結してOpenAIについて不満を訴える!ソラは物理世界を理解していません。GPT3 だけです。

編集者 | ヤン・ジェン制作:51CTO テクノロジースタック(WeChat ID:blog)先週、...

「ロボットが私にそうさせた」:ロボットは人々にリスクを取るよう促すことができると研究で判明

[[404036]] 「仲間からのプレッシャーがリスクの高い行動につながることはわかっています。オン...

AIとIoTが公共交通機関をよりスマートかつ安全に

スマート デバイスを通じてモビリティを向上させる人工知能 (AI) ソリューションは、買い物習慣から...