高度な API、異種グラフ: Google が TensorFlow でグラフ ニューラル ネットワークを作成するための TF-GNN をリリース

高度な API、異種グラフ: Google が TensorFlow でグラフ ニューラル ネットワークを作成するための TF-GNN をリリース

  [[435974]]

本日、TensorFlow 公式ブログで TensorFlow Graph Neural Networks (TensorFlow GNN) ライブラリがリリースされました。これにより、ユーザーは TensorFlow を使用する際にグラフ構造化データを簡単に処理できるようになります。

これまで、TensorFlow GNN の初期バージョンは、スパムや異常の検出、トラフィックの推定、YouTube コンテンツのタグ付けなど、さまざまな Google アプリケーションで使用されてきました。特に、Google のデータは多種多様であることを考慮して、ライブラリは異種グラフを念頭に置いて設計されています。

プロジェクトアドレス: https://github.com/tensorflow/gnn

GNN を使用する理由は何ですか?

グラフは、現実世界でも、私たちが設計するシステムでも、あらゆるところに存在します。オブジェクトまたはさまざまな人々のグループとそれらの間のつながりは、通常、グラフを使用して説明できます。通常、機械学習のデータは構造化またはリレーショナルであるため、グラフを使用して記述することもできます。 GNN の基礎研究には数十年の歴史がありますが、交通予測、フェイクニュースの検出、病気の伝染モデル化、物理シミュレーション、分子に匂いがある理由の理解など、いくつかの進歩が見られたのは近年になってからです。

グラフは、Web ページ (左)、ソーシャル関係 (中央)、分子 (右) など、さまざまな種類のデータ間の関係をモデル化できます。

グラフを定義するにはどうすればいいですか?簡単に言えば、グラフは一連のエンティティ (ノードまたは頂点) 間の関係 (エッジ) を表します。各ノード、エッジ、またはグラフ全体を記述して、グラフの各部分に情報を保存できます。さらに、グラフのエッジに方向性を割り当てて、情報や情報の流れを記述することもできます。

GNN は、これらのグラフに関する複数の特性に関する質問に答えるために使用できます。 GNN は、画像分類やセグメンテーションと同様に、グラフのノードを分類し、グラフ内のパーティションと相関を予測するノードレベルのタスクに使用できます。最後に、エッジ レベルで GNN を使用して、エンティティ間の接続を検出できます。

テンソルフローGNN

TF-GNN (TensorFlow GNN) は、TensorFlow で GNN モデルを実装するためのビルディング ブロックを提供します。モデリング API に加えて、ライブラリには、テンソルベースのグラフ データ構造、データ処理パイプライン、ユーザーがすぐに使い始めることができるサンプル モデルなど、グラフ データを処理するためのツールも用意されています。

TF-GNNワークフローコンポーネント

TF-GNN ライブラリの初期リリースには、初心者と経験豊富なユーザーの両方を対象とした次のような多くのユーティリティと関数が含まれています。

  • 高レベルの Keras スタイルの API を使用して GNN モデルが作成され、他のタイプのモデルと簡単に組み合わせることができます。 GNN は、ランキングやディープ検索と組み合わせて使用​​されるか、他の種類のモデル (画像、テキストなど) と組み合わせて使用​​されることがよくあります。
  • グラフ トポロジを宣言するための明確に定義されたスキーマと検証ツール。このパターンはトレーニング データのサイズを記述し、他のツールをガイドするために使用されます。
  • GraphTensor 複合テンソル型は、グラフ データの保存に使用でき、バッチ処理も可能で、グラフ操作ルーチンも利用できます。
  • GraphTensor 構造操作ライブラリ: ノードとエッジに対するさまざまな効果的なブロードキャストおよびプーリング操作、および関連操作用のツール。機械学習エンジニアや研究者が簡単に拡張できる標準のベイクド畳み込みライブラリ。高レベル API により、エンジニアは詳細を気にすることなく GNN モデルを迅速に構築できます。
  • モデルは、グラフ トレーニング データのエンコーディングからさまざまな機能を抽出できるほか、このデータをデータ構造に解析するためのライブラリも利用できます。

次の例では、TF-GNN Keras API を使用して、ユーザーの視聴コンテンツとお気に入りのジャンルに基づいて映画を推奨できるモデルを構築します。

このタスクを実行するには、ConvGNNBuilder メソッドを使用してエッジ タイプとノード構成を指定します。つまり、エッジに WeightedSumConvolution (以下で定義) を使用します。

  1. テンソルフローをtfとしてインポートする
  2. tensorflow_gnnをtfgnnとしてインポートします
  3. # モデルのハイパーパラメータ:
  4. h_dims = { 'ユーザー' : 256 , '映画' : 64 , 'ジャンル' : 128 }
  5. # モデルビルダーの初期化:
  6. gnn = tfgnn.keras.ConvGNNBuilder(
  7. ラムダエッジセット名: WeightedSumConvolution(),
  8. ラムダノードセット名: tfgnn.keras.layers.NextStateFromConcat(
  9. tf.keras.layers.Dense(h_dims[ノードセット名]))
  10. # ターゲット ノード セットへの 2 ラウンドのメッセージ パッシング:
  11. モデル = tf.keras.models.Sequential([
  12. gnn.Convolve({ 'genre' }), # 映画からジャンルにメッセージを送信します
  13. gnn.Convolve({ 'user' }), # 映画とジャンルからユーザーにメッセージを送信します
  14. tfgnn.keras.layers.Readout(ノードセット名= "user" )、
  15. tf.keras.layers.dense( 1 ) の構文
  16. ])

場合によっては、GNN をさらに強力にしたいことがあります。たとえば、前の例では、モデルにおすすめの映画を提示するときに重み付けをさせたい場合があります。カスタム グラフ畳み込みと重み付けエッジを備えたより高度な GNN は、次のコード スニペットで定義されています。次のコードは、エッジ値をすべてのエッジの重みの合計にプールできる WeightedSumConvolution クラスを定義します。

  1. クラスWeightedSumConvolution(tf.keras.layers.Layer):
  2. ソース ノードの状態の加重合計。」 「」
  3. def call(self, グラフ: tfgnn.GraphTensor,
  4. edge_set_name: tfgnn.EdgeSetName) -> tfgnn.Field:
  5. メッセージ = tfgnn.broadcast_node_to_edges(
  6. グラフ、
  7. エッジセット名、
  8. tfgnn.ソース、
  9. 機能名 = tfgnn.DEFAULT_STATE_NAME)
  10. 重み = graph.edge_sets[エッジセット名][ '重み' ]
  11. weighted_messages = tf.expand_dims(weights, - 1 ) * メッセージ
  12. プールされたメッセージ = tfgnn.pool_edges_to_node(
  13. グラフ、
  14. エッジセット名、
  15. tfgnn.ターゲット、
  16. 削減タイプ = '合計'
  17. feature_value=重み付けメッセージ)
  18. pooled_messagesを返す

畳み込みはソース ノードとターゲット ノードのみを考慮して記述されていますが、TF-GNN ではそれが適用可能であり、異種グラフ (さまざまな種類のノードとエッジを持つ) をシームレスに処理できることが保証されていることに注意してください。

インストール

現時点では、これが tensorflow_gnn をインストールする唯一の方法です。仮想環境の使用を強くお勧めします。

tensorflow_gnn をクローンします。

  1. $> gitクローンhttps://github.com/tensorflow/gnn.git tensorflow_gnn

TensorFlow をインストールします。

  1. $> pip でTensorflowをインストール

Bazel をインストールします。Bazel ではパッケージをビルドするためにソース コードが必要です。インストール手順については、https://docs.bazel.build/versions/main/install.html を参照してください。

GraphViz をインストールします。このパッケージは、視覚化ツールとして GraphViz を使用します。インストールは、Ubuntu などのオペレーティング システムによって異なります。

  1. $> sudo apt-get をインストール graphviz graphviz-dev

tensorflow_gnnをインストールします。

  1. $> cd tensorflow_gnn && python3 -m pip install .

<<:  Github ホットリスト: 2021 年の最もクールな AI 論文 33 件をレビュー!多くの中国人作家が選ばれた

>>:  将来のモバイル通信ネットワーク、6Gと人工知能の統合

ブログ    
ブログ    
ブログ    

推薦する

北京大学の学部生がチップ研究で世界大会で優勝!筆頭著者はトップクラスのEDAカンファレンスで8本の論文を発表

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

...

アダプティブコンピューティングがAI製品化の課題にどのように対処するか

[[389356]]今日、人工知能技術は急速に発展しており、イノベーションのペースは加速しています。...

DGX-2 および SXM3 カードが GTC 2018 で発表されました

最近、GTC 2018 で、Vicor チームは NVIDIA DGX-2 の発表を目撃しました。 ...

[ディープラーニングシリーズ] PaddlePaddleとTensorflowでGoogLeNet InceptionV2/V3/V4を実装する

前回の記事では、GoogLeNet InceptionV1のネットワーク構造を紹介しました。この記事...

...

ウー・ジアン:nEqual は、優れたユーザー エクスペリエンスで企業がスマートなビジネスを構築できるよう支援します

[原文は51CTO.comより] 1月中旬に開催されたAdMaster再編メディアカンファレンスで、...

人工知能の「想像力」を実現する

[[416371]] [51CTO.com クイック翻訳]まず、オレンジ色の猫を頭の中で想像してくだ...

DNAを使って画像を直接保存する「生きた細胞カメラ」は96ピクセルの解像度を持つ

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

コンピュータビジョンにおけるステレオビジョンと奥行き知覚の例

人工知能と画像処理の魅力的な世界では、これらの概念は、機械が人間の目と同じように私たちの周りの三次元...

.NET が提供する暗号化アルゴリズムの概要

データは、対称暗号化アルゴリズムまたは非対称暗号化アルゴリズムを使用して暗号化できます。対称暗号化は...

次世代IoTシステムにおける環境CV技術

現在、コンピューター ビジョン (CV) テクノロジは転換点を迎えており、主要なトレンドが収束して、...

いくつかの一般的な暗号化アルゴリズムのPython実装

私たちは日常生活の中で、暗号化アルゴリズムによく遭遇します。今日は、これらの暗号化アルゴリズムの P...

GTA6のトレーラーは1億回以上再生されており、3人のAI巨人も数秒でGTAギャングに変身できる

新しいGTAゲームの予告編を見ましたか?この予告編は3つのギネス世界記録を破り、再生回数は1億回を超...