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

ブログ    
ブログ    

推薦する

タッチから音声へ: 音声テクノロジーが IoT 環境をどう変えるか

猛威を振るう新型コロナウイルス感染症のパンデミックは、経済と社会に大きな打撃を与えている。この世界的...

プライベートコレクション、オープンソースのトップディープラーニングプロジェクト9つ

[[203962]]過去数年間で、コンピューター科学者は人工知能 (AI) の分野で大きな飛躍を遂げ...

ピリパインテリジェントファイナンス&タックス2018エンタープライズサービス+ウィズダムフォーラムが成功裏に終了

ピリパ・インテリジェンス・アンド・タックスが主催する2018年企業サービス+ウィズダムフォーラムが、...

OpenAI エンジニア必読: 苦い教訓

OpenAIが動画生成モデルSoraをリリースしてから1週間が経ちましたが、その人気は衰えていません...

計算知能とは何ですか?今日の世界における人工知能と機械学習

テクノロジーは発見に依存し、発見はテクノロジーの進歩に依存します。これは計算知能の文脈ではまさに真実...

ビデオ生成における新たなブレークスルー:PixelDance、複雑な動きやクールな特殊効果を簡単に表現

最近では、画面を占め続ける大規模な言語モデルに加え、動画生成技術も大きく進歩し、多くの企業が新たなモ...

...

...

マイルストーンではありません! Facebookの100言語翻訳モデルは過大評価され、疑問視されている

[[347640]] Facebookはまた失敗したのか?フェイスブックは昨日、自社の機械翻訳が画期...

Google の研究者が GPT-4 を使用してレビュー システムを破る AI-Guardian

海外メディアの報道によると、8月2日、Googleの研究者らは、OpenAIのGPT-4を研究アシス...

...

ディープラーニングの「記憶喪失」に応えて、科学者たちは類似性に基づく重み付けインターリーブ学習を提案し、PNASに掲載された。

人間とは異なり、人工ニューラル ネットワークは新しいことを学習するときに以前に学習した情報をすぐに忘...

...

SQL Server 2005 のデータ マイニング アルゴリズム拡張メソッド

SSAS は 9 つのデータ マイニング アルゴリズムを提供していますが、実際の問題に基づいて適切な...