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

ブログ    
ブログ    

推薦する

脳コンピューターインターフェースツール:脳波からテキストまで、必要なのは機械翻訳モデルだけ

[[320655]]この記事はLeiphone.comから転載したものです。転載する場合は、Leip...

IBMは5億行のコードデータセットをオープンソース化したが、最も人気のあるプログラミング言語はPythonではない

Google サービスには 20 億行のコードが含まれており、自動車システムには 1 億行のコードが...

サイバーセキュリティにおける人工知能の長所と短所を探る

急速に進化するデジタル環境において、人工知能 (AI) とサイバーセキュリティの組み合わせは、進化す...

Jia Jiayaのチームが世界初の70B長文大規模言語モデルをオープンソース化し、ProMaxを使って論文や小説を直接読めるようにした。

皆さん、大規模言語モデル(LLM)の長年の課題がついに解決されました!つい最近、香港中文大学とMIT...

ものづくりを変える6つのAI活用法!

1. 欠陥検出のためのディープラーニング[[391865]]製造業では、生産ラインにおける欠陥検出...

インテリジェント PDU について...

専門的な配電設備として、PDU は基本型とインテリジェント型の 2 つのタイプに分けられます。インテ...

コンピュータービジョンとは何ですか?

映画『マトリックス リザレクション』(2021年)では、主人公のネオがコンピューター生成の世界「マト...

2020年のIEEEフェローリストが発表:約30%が中国人で、葉潔平、張同、周博文、熊慧などのAI専門家が選出

本日、IEEE 2020フェローのリストが発表されました。統計によると、280人以上が選出され、その...

機械学習により整形外科画像分析がさらに進化

医療画像解析に機械学習 (ML) を実装することは新しいことではありません。放射線科医は、自動化ツー...

...

マスク氏の最新チップ:脳とコンピューターの相互作用に特化し、視覚障害者が「見る」ことを可能にする

自分で認めなさい!マスク氏のニューラリンクはチップを開発している。この技術は「数年以内」にリリースさ...

PaddlePaddleがAIの旗印を掲げ、国産のディープラーニングフレームワークが人気

[51CTO.com オリジナル記事] Baidu は 2019 年第 2 四半期の財務報告を発表し...

MITチームの新しいテストはAIの推論と人間の思考を比較する

AI が洞察を導き出し、意思決定を行う方法は謎に包まれていることが多く、機械学習の信頼性について懸...

レポート:人材市場の給与は2018年第4四半期に回復し、AI職の平均月給は3万人民元に達した。

最近、インターネット採用プラットフォームBOSS Zhipinは「2018年第4四半期人材誘致レポー...

エンドツーエンドの自動運転に向けて、Horizo​​n Robotics が Sparse4D アルゴリズムを正式にオープンソース化

Horizo​​n Roboticsは1月22日、純粋な視覚ベースの自動運転アルゴリズムであるSpa...