高度な 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と人工知能の統合

推薦する

...

遅い二次アルゴリズムと高速ハッシュマップについての簡単な説明

[[424110]]こんにちは、みんな!昨日、プログラミング面接の準備をしていて、アルゴリズムの基礎...

その本を読むのは時間の無駄だ!ロボットは北京大学入試数学テストに挑戦し、105点を獲得した。

6月7日、成都ハイテクの人工知能システム「AI-MATHS」数学大学入試ロボットが2017年度大学...

生死に関わる問題:病院のICU病棟で人工知能は何ができるのか?

病院の集中治療室 (ICU) では、重病の患者を一日中一連の機器に接続し、いつでもバイタルサインを監...

...

...

百度が「AI+X」を実践、AI教育が未来に向けて加速

3月25日〜26日、「新たな始まり、新たな発展、新たなシステム」をテーマにした第3回中国コンピュータ...

EU諸国の4分の1がAIによるサイバーセキュリティ管理を望んでいる

予想外かもしれませんが、消費者のかなりの部分は、サイバーセキュリティを生身のサイバーセキュリティ専門...

セキュリティ業界における顔認証アクセス制御の発展展望

数年前までは、アクセス制御は鍵や IC アクセス カードによって行われていたことは誰もが知っています...

...

AI スタートアップの品質を測定するにはどうすればよいでしょうか?

編集者注: Zetta Venture のパートナーである Ivy Nguyen 氏は最近、Tech...

IoTとAI: この強力な組み合わせの5つの興味深い応用

人工知能は現代世界のあらゆる分野を征服しつつあります。しかし、それらはすべて私たちにとって良いことな...

...

...