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

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

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

ブログ    
ブログ    
ブログ    

推薦する

「バーチャル老黄」はあなたを騙しましたが、夏玉氷の手に触れることができますか?

昨年のNVIDIAのGTCで「Virtual Huang」はどのようにして作られたのでしょうか? ブ...

...

世界をリセットし、すべてをつなげる5Gは人工知能にどんな機会と課題をもたらすのか

[[274397]] 5G時代は人工知能にどのような新たな機会をもたらすのでしょうか?人工知能と5G...

分散型ディープラーニングの新たな進歩:「分散」と「ディープラーニング」の真の統合

近年、急速に発展している人工知能の分野のひとつであるディープラーニングは、NLP、画像認識、音声認識...

顔認識を禁止した後、サンフランシスコは検察官の事件処理を支援するためにAIを活用

最近、海外メディアの報道によると、サンフランシスコ市は7月1日に導入予定の「偏見削減ツール」を発表し...

FPGA と GPU を使用したニューラル ネットワークの作成

現代の CPU は、命令を順番に実行し、アルゴリズムを 1 つずつロードされて実行される命令に分解し...

...

データ構造とアルゴリズムシリーズ - 深さ優先と幅優先

序文データ構造とアルゴリズムシリーズ(完了部分):時間計算量と空間計算量の分析配列の基本的な実装と特...

...

マイクロソフト、機械学習モデル向けの高性能推論エンジン ONNX をオープンソース化

Microsoft は、Linux、Windows、Mac プラットフォーム向けの ONNX 形式の...

Google の医療モデルが Nature に掲載、Med-PaLM が重要な秘密を明らかに! AI医師は人間と同等の能力を発揮する

5月のI/Oカンファレンスでは、Med-PaLM 2が大幅にアップグレードされ、エキスパートレベルに...

近年、「人工知能」が私たちの生活に静かに登場している

科学技術と産業技術の継続的な発展により、私たちの生活は大きく向上し、「人工知能」という言葉も徐々に私...

...