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

ブログ    
ブログ    
ブログ    

推薦する

...

...

マーケティングにおける人工知能の 4 つの実際の応用

人工知能 (AI) は誕生以来長い道のりを歩み、大きな進歩を遂げています。これは、Amazon や ...

1行のコマンドで顔認識を実装する方法を教えます

[[207803]]環境要件ウブントゥ 17.10 Python 2.7.14環境構築1. Ubun...

テンセント・ロボティクス・ラボの第一人者が起業、ヒューマノイドロボット業界に新たな重鎮が加わる

テンセントのRobticsXロボティクス研究所の第一社員が始めたバイオニックロボットプロジェクトがつ...

ディープラーニング: オートエンコーダの基礎と種類

ディープラーニングが私たちの社会に大きな影響を与えようとしていることは明らかです。 Mobibit ...

AI導入時に解決すべき無線ネットワークの運用・保守における4つの大きな課題

無線通信ネットワークの発展に伴い、今後のネットワークは周波数帯域やネットワーク構成の面でより複雑化し...

AIエンジニアの成長ストーリー~働き方編~

[[409282]]この記事では、特に仕事の方法について取り上げます。エンジニアの中には非常に頭の...

通信会社は AI と機械学習をどのように活用して利益率を向上させることができるでしょうか?

過去 10 年間で世界中のスマートフォン ユーザーの数は急増しており、今後も同様の増加傾向が続くと思...

...

将来、仕事はロボットに置き換えられるのでしょうか?専門家:現段階ではまだ困難はあるものの、人工知能は人々をより自由にするだろう

3月23日(北京特派員 柯李)冬季オリンピックの水中聖火リレーを完走するロボットから、冬季パラリンピ...

人工知能は商業用不動産にどのような影響を与えるでしょうか?

AI は商業用不動産業界を変革し、あらゆるものをより効率的、アクセスしやすく、透明性の高いものにし...

中国の人工知能特許ランキングで、百度、テンセント、マイクロソフト、インスパーが上位4社にランクイン

12月2日、国家工業情報セキュリティ発展研究センターは「中国人工知能特許技術分析報告書」を発表し、百...

ICML 2022の審査結果は「包囲」された、ヤン・ルカン:3つの論文を提出したが、3つとも却下された

ちょうど今、チューリング賞受賞者のヤン・ルカン氏がツイッターにメッセージを投稿した。「3本の論文を提...