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

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

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

ブログ    
ブログ    
ブログ    

推薦する

...

商用アプリケーション向けディープラーニング画像キャプション技術

[51CTO.com クイック翻訳]人工知能を使用して画像上のピクセルシーケンスをテキストに変換する...

ドローンの出現と市場の需要の変化

ドローンの市場、入手可能性、需要が長年にわたってどのように増加してきたかを学びます。映画の架空の世界...

超強力なPytorchオペレーション! ! !

こんにちは、Xiaozhuangです!ここ数日、ディープラーニングに関するコンテンツをいくつか共有し...

ディープラーニングと機械学習を混同しないでください。

[[313942]] [51CTO.com クイック翻訳] ご存知のとおり、ディープラーニングは人...

...

機械学習アルゴリズムが NDA の法的分析テストで 20 人の弁護士に勝利

ロボット工学と人工知能の発展により、多くの仕事が機械に置き換えられるでしょう。機械は、一部のタスク、...

...

ゼロサンプルのパフォーマンスが小サンプルのパフォーマンスを上回り、Google の新しい 1370 億パラメータ モデルは GPT-3 よりも強力

[[422681]] NLP の分野では、事前トレーニングの微調整とプロンプトチューニングの手法に...

現代の分散ストレージシステムをサポートするアルゴリズム

アプリケーションによって処理されるデータの量が増え続けるにつれて、ストレージの拡張はますます困難にな...

人工知能は第4世代に入り、人工直感が開発の次のステップとなる

AI はこれまでに開発された最も強力なテクノロジーの 1 つですが、すでに 4 回の進化を経ています...

アルゴリズム学習のための動的プログラミング戦略の紹介

1. コンセプト動的プログラミング戦略、分割統治戦略。貪欲戦略と同様に、通常は最適解問題を解決するた...

AI がモノのインターネットをよりスマートにする 5 つの方法

第三者の介入なしに何十億ものデバイスを接続してデータを交換できるため、モノのインターネット (IoT...

CMU は、日常の家具の操作方法を正確に学習する新しい器用なロボットアルゴリズムを公開しました

日常生活で人々が接触する家具のほとんどは、引き出しレール付きの引き出し、垂直回転軸付きの扉、水平回転...

このモデルは数十万ドルの費用がかかり、数え切れないほどのプロジェクトを導いたのに、使用されたネガティブサンプルがゼロだったことが判明したのですか?

今日の人気のディープラーニング モデルはブラック ボックスであるとよく言われます。つまり、入力を与え...