论文阅读 - Graph-ToolFormer: ChatGP によって拡張されたプロンプトを介してグラフ推論能力を LLM に強化する

 

目次

まとめ

1 はじめに

2 関連作品

2.1 グラフニューラルネットワーク

2.2 言語モデル

2.3 迅速なチューニング

3 記号、用語の定義、問題の定式化

3.1 基本的な表記法

3.2 用語の定義

3.3 問題の定式化

4 提案手法

4.1 フレームワークの概要

 4.2 API 呼び出しによるプロンプト

4.3 グラフ推論指向のプロンプト

4.3.1 グラフィックデータのロード

4.4 ChatGPT による迅速な拡張

4.5 グラフ推論のための LLM の微調整

4.7 LLM の推論とグラフ推論のクエリ解析、実行、後処理


論文リンク: https://arxiv.org/pdf/2304.11116.pdf

まとめ

        この論文は、複雑なグラフ データを推論できる大規模言語モデル (LLM) を開発することを目的としています。現在、LLM はさまざまな自然言語学習タスクで目覚ましい結果を達成しており、その拡張機能はマルチモーダル データを学習する視覚タスクにも適用されています。しかし、グラフ学習タスクに関しては、既存の LLM は、正確な数学的計算、複数ステップの論理的推論、空間的および位相的要因の認識、および時間プロセスの処理の実行における固有の弱点により、非常に深刻な欠陥に悩まされています。これらの課題に対処するために、この記事では、既存の LLM にグラフ推論機能を提供する原理、方法、アルゴリズムを検討します。これらは、LLM とグラフ学習に関する現在の研究に多大な影響を与えるでしょう。最新の ChatGPT および Toolformer モデルからインスピレーションを得て、ChatGPT で強化されたプロンプトを通じて LLM に外部グラフ推論 API ツールを自分で使用できるように教える Graph-ToolFormer (グラフ推論用のツールフォーマー) フレームワークを提案します。具体的には、この記事では、Graph-ToolFormer にさまざまなグラフ データ推論タスクを処理する方法を学習します。これには、(1) 単純なグラフの順序とサイズからグラフの直径とペリフェラルに至るまで、非常に基本的なグラフ データの読み込みとグラフ プロパティの推論タスクが含まれます。 (2) 書誌論文引用ネットワーク、タンパク質分子グラフ、逐次レコメンダー システム、オンライン ソーシャル ネットワーク、ナレッジ グラフなど、より高度な現実世界のグラフ データ推論タスク。

        技術的には、Graph-ToolFormer を構築するには、グラフ推論タスクごとに指示と少数のプロンプト テンプレートを個別に手作りすることをお勧めします。これらの指示とプロンプト テンプレートの例に基づいたコンテキスト学習を通じて、ChatGPT を採用して、グラフ推論ステートメントのより大きなデータセットに注釈を付けて強化し、最も適切な外部 API 関数を呼び出します。これらの強化されたプロンプト ステートメント データセットは、選択的フィルタリングを通じて後処理され、既存の事前トレーニング済み因果 LLM (GPT-J や LLaMA など) を微調整するために使用され、出力生成でグラフィカル推論ツールの使用方法を学習します。Graph-ToolFormer の有効性を証明するために、私たちはさまざまなグラフ推論データセットとタスクについて広範な実験研究を実施し、さまざまなグラフ推論機能を備えた LLM のデモンストレーションを開始しましたGraph-ToolFormer フレームワークのすべてのソース コード、グラフ推論デモ、グラフおよびプロンプト データセットは、プロジェクトの github ページでリリースされました。

1 はじめに

        近年、大規模言語モデル (LLM) [8、34、50] はさまざまな自然言語処理タスク [32、34、49] で目覚ましい結果を達成しており、その拡張機能は他の多くの問題を解決するためにも広く使用されています。異なるスキーマ データ [10、32、40、41]。GPT-3.5 および GPT-4 に基づく ChatGPT および Microsoft Bing Chat の発表により、LLM は人々の日常の生産や生活にも広く使用されるようになりました。同時に、これらの LLM は、その固有の制限により、正確な計算を実行できない [36]、複数ステップの論理推論問題を解くのが難しいなど、使用中に多くの批判を受けてきました。空間的および位相的推論を実行できない [1]、時間要因の進行を認識できない [9]。自然言語処理とコンピューター ビジョンの並行開発に伴い、トランスフォーマーに基づくグラフ構造データの深層学習モデルも、近年あらゆる分野から幅広い注目を集めています [16、56、60]。グラフは、現実世界の多くの相互接続されたデータの統一された表現を提供し、ノードのさまざまなプロパティとノード間の密な接続の両方をモデル化できます。離散数学とアルゴリズムのコースで学んだ古典的なグラフ構造 (図 1 を参照) に加えて、書誌ネットワーク [47]、プロトタンパク質分子グラフ [47] など、現実世界の多くのデータもグラフ [45] でモデル化できます。 52]、推奨システム[28]、オンラインソーシャルネットワーク[31]、ナレッジグラフ[18]。

        同時に、視覚データと言語データを LLM に組み込んで野心的な AGI 開発計画を設計するという精力的な研究探求と比較すると [33]、研究者は「意図せずに」または「意図的に」広範なグラフィック データを無視しているように見えます。計画は、AGI を実装するために構築された LLM にそれを組み込むことです。ここで、研究者が「意図せずに」グラフを無視していると言っているのは、私たちが日常的に扱っているテキストや画像と比較して、グラフは長い間、実世界のデータの中間モデル データ構造としてのみ使用されており、一般的にグラフと直接対話することはないからです。 . インタラクション。AIGC を作成し、AGI システムを構築するこの段階では、グラフに焦点を当てるべきではないと考えるのは自然です。同時に、グラフ学習には、(1) グラフ特性の広範な数学的計算、(2) リンクを介したマルチホップ論理的推論、および (3) 広く接続されたグラフのキャプチャが含まれる可能性があるため、研究者が「意図的に」グラフを無視した可能性があるとも述べています。 (4) 時間の経過とともに変化する動的なグラフィックスも扱う必要がある場合があります。注意深い読者は、グラフ学習で言及したこれらの要件が実際に的を射たものであることに気づいたかもしれません。これは、冒頭で述べた現在の LLM の弱点に相当します。

        私たちが直面する潜在的な課題に関係なく、「グラフィック推論機能のない AGI は、私たちが望む AGI になることはありません。」この動機に基づいて、私たちはさまざまなグラフ推論タスクのためにグラフ データを LLM に組み込むことを試みるためにこの文書を書きました。一方で、OpenAI、Microsoft、Google、Meta などの現在の AI をリードする企業が、AGI の実装計画とミッションを策定する際に、グラフ構造化データ推論を考慮に入れて、グラフ学習コミュニティが次のことを行えるようになることを心から望んでいます。言語および視覚コミュニティと交流する AGI システムを構築するために、私たちの努力を一緒に貢献しましょう。一方で、既存の LLM が複雑なグラフ推論タスクのグラフ構造データを処理する際のパフォーマンスの弱点を克服できるようにしたいとも考えています。

          したがって、新しく開発された LLM は、さまざまなグラフ推論タスクを解決する際に、グラフ学習コミュニティにも利益をもたらすことができます。現在の言語モデルとその非常に高い事前トレーニング コストを考慮すると、グラフ推論を可能にする事前トレーニング機能を備えた新しい LLM を根本的に再設計することは不可能です。このような LLM をゼロから事前トレーニングすることは、学術界のほとんどの研究グループや産業界のほとんどの企業にとって実行不可能な作業です。NLP 手法の一般的な実践に適応するために、この記事では、既存の事前トレーニング済み LLM (GPT-J や LLaMA など) を微調整することにより、グラフ推論用のツール フォーマー フレームワーク (Graph-ToolFormer) を紹介します技術的に言えば、図 1 に示すように、OpenAI の最新の ChatGPT と Meta の Toolformer モデル [43] に基づいて、既存の事前トレーニング済み LLM (GPT-J や LLaMA など) を提供して、さまざまな複雑なグラフ推論タスク機能を実行することを提案します。他の事前トレーニング済みグラフ ニューラル ネットワーク モデルや既存のグラフ推論ツールキットなどの外部グラフ学習ツールを使用します。Graph-ToolFormer を普遍的なグラフ推論インターフェイスにするために、LLM を微調整して、グラフ データをどこで取得するかだけでなく、どのツールを使用するか、またそれらのツールをいつどのように使用するかをモデルが決定できるようにします。外部グラフ学習ツールによって使用されるステートメントおよび関数呼び出しに手動でハードコーディングされたグラフ データの読み込み。

        Graph-ToolFormer モデルの技術的な詳細については、以下の方法論セクションで説明します。一般的なグラフ推論タスクに LLM を使用する最初の調査の試みとして、この論文の貢献を次のように要約します。

        グラフ推論に LLM を使用する: この論文は、グラフ推論タスクを処理できる汎用 LLM (つまり、Graph-ToolFormer) の提案を試みた最初の論文です。これは、既存のグラフ推論 LLM の欠点を効果的に補います。さらに重要なのは、グラフ学習コミュニティを、言語および視覚学習コミュニティが主導する LLM および AIGC の最近の開発に結び付けるのに役立ちます。したがって、グラフ学習コミュニティの人々は、現在の AIGC 時代と将来の AGI 時代における私たちのスキルと専門知識を披露するステージも持つことになります。

        - グラフ推論プロンプト データセット: この論文では、人間が書いた多数の言語命令と、グラフ学習ツールの使用方法のプロンプトの例を作成します。自己教師ありコンテキスト学習に基づいて、ChatGPT を使用して、さまざまな外部グラフ学習ツールへの API 呼び出しを使用して大規模なグラフ推論データセットに注釈を付け、拡張します。これらのデータセットも選択的フィルタリングを通じて後処理されます。github ページ 1 を通じて、この記事で使用したグラフ生データセットと生成されたグラフ推論プロンプト データセットを将来の調査のためにコミュニティにリリースします。

        広範な実験研究: 最も基本的なグラフ データの読み込みや一般的なグラフ プロパティの計算タスク、およびいくつかのより高度なタスクを含む、実世界で研究されたさまざまなグラフ推論ベースのアプリケーション タスクにおいて、提案した Graph-ToolFormer の有効性を広範囲にテストしました。 。具体的には、実験では、文献ネットワークでの論文トピック推論、分子グラフ関数予測、オンライン ソーシャル ネットワーク コミュニティ検出、レコメンダー システムでのパーソナライズされた逐次推薦、ナレッジ グラフ エンティティとリレーショナル推論など、いくつかの挑戦的な高レベルのグラフ推論タスクを研究します。 。

        この記事の残りの部分は次のように構成されています。関連する研究についてはセクション 2 で簡単に紹介します。セクション 3 では、いくつかの用語の定義と研究課題の定式化を説明します。セクション 4 では、Graph-ToolFormer フレームワークについて詳しく説明します。graph-ToolFormer の有効性は、現実世界のベンチマーク グラフ データセットに対する広範な実験を通じてセクション 5 でテストされます。最後に、セクション 6 でこの論文を締めくくり、セクション 7 で将来の可能性のある探索の方向性について簡単に説明します。

2 関連作品

        このセクションでは、グラフ ニューラル ネットワーク、言語モデル、言語モデルに基づくグラフ学習、プロンプト調整など、この記事で提案する Graph-ToolFormer フレームワークに関連するいくつかの研究トピックについて説明します。

2.1 グラフニューラルネットワーク

        グラフ ニューラル ネットワーク (GNN) は、グラフ構造データの埋め込み表現を学習することを目的としています。提案されているグラフ ニューラル ネットワークの代表的な例としては、GCN [19] や Graph-Bert [60] があり、これらにはさまざまな拡張バリアントも導入されています [20, 46, 51]。上で述べたように、GCN とそのバリアント モードは近似グラフ畳み込み演算子 [13] に基づいており、ディープ モデル アーキテクチャでは一時停止アニメーションの問題 [59] や過度の平滑化問題 [23] が発生する可能性があります。文献 [12、23、59] では、その理由について理論的な分析が行われています。このタイプの問題に対処するために、[59] はグラフの元の残差項を一般化し、グラフ残差学習に基づく方法を提案し、[23] は GCN アーキテクチャで残差/密結合と拡張畳み込みを使用することを提案しました。GCN や Graph-Bert に基づく方法に加えて、[17, 46] な​​どの他の研究でも、深いグラフ表現学習にリカレント ネットワークを使用しようとしています。

2.2 言語モデル

        Transformer [50] の導入以来、大規模言語モデル (LLM) がさまざまな NLP タスクの主流の深層モデルになっています。事前トレーニングの支援を受けて、大手テクノロジー企業も、Google の BERT [8]、Meta の BART [22]、OpenAI の GPT [5、38、39]、AI2 の ELMo [37] など、さまざまな LLM の独自バージョンを立ち上げています。および Microsoft の MT-DNN [25]。これらの LLM の多くはオープンソース化されており、モデル アルゴリズムと学習パラメーターは研究とアプリケーションの目的でコミュニティにリリースされています。この研究に密接に関連する研究論文は Meta の Toolformer [43] で、外部 API を言語モデルに組み込むことを提案しています。これらの外部 API を使用すると、モデルはどのツールをどのように使用するかを自動的に決定できます。一方、Toolformer モデルが登場する前でも、他のいくつかの論文 [29、35] では、外部ツールを使用して言語モデルを強化することが検討されています。

2.3 迅速なチューニング

        プロンプトは事前トレーニングされた言語モデルを効果的に調整してゼロまたは少量の学習を実現できることが証明されています [5]。これにより、従来の微調整タスクと比較して言語モデルの学習が速くなります。これまで、プロンプト調整方法の 3 つのカテゴリ、すなわち個別プロンプト [44]、連続プロンプト [24]、およびガイダンス [5] を見てきました。個別プロンプト[44] は、いくつかのテンプレート テキストを使用してデータ インスタンスを再フォーマットします。たとえば、

         通常、個別のプロンプトはモデルのすべてのパラメータを調整します。一方、連続ヒント [24] は、サンプルの前に特別にラベル付けされた埋め込みベクトルを追加します。これは、はるかに小さいモデル パラメーターのセットのみを更新します。離散プロンプトや連続プロンプトとは異なり、GPT-3 で最初に採用された「プライミング」[5] は、ターゲット評価例の前にいくつかのプライミング例を事前に設定します。

         [54] で報告された分析によると、離散ヒントは数ショットのチューニングではうまく機能しますが、連続ヒントは数ショットの設定では成功したと報告されていませんが、起動コストは非常に高く、次のような場合にはうまく機能するようです。最大級のGPT-3(175B)モデル。

3 記号、用語の定義、問題の定式化

        このセクションでは、まずこの記事で使用される用語を紹介します。その後、いくつかの一般的に使用される用語の定義と、この論文で検討したグラフ推論タスクの定式化を示します。

3.1 基本的な表記法

この記事の残りの部分では、スカラーを表すために小文字 (例: x )、列ベクトルを表すために太字の小文字 (例: x ) 、セットまたは高次テンソルを表すために太字の大文字 (例: )        を使用します。行列Xが与えられると、X(i, :) と X(:, j) をそれぞれ i 行と j 列として表します。行列 X の (i_th, j_th) 項目は X(i, j) と表すことができます。X⊤ と x⊤ を使用して、行列 X とベクトル x の転置を表します。ベクトルxの場合、そのノルムを と表します行列 X のフロベニウス ノルムは次のように表されます  。同じ次元のベクトル x と y の要素ごとの積は x ⊗ y で表され、それらの連結は x ⊔ y で表されます。\mathbf{\chi }

3.2 用語の定義

        この記事では、グラフ構造データに関する推論のタスクを学習します。この記事で調査したグラフ データセットはすべて異なるドメインに由来しており、非常に異なる構造と非常に異なる特性を持っています。このサブセクションでは、この記事で検討したさまざまなグラフ構造データの一般的な用語の定義を示します。

        定義 1. (グラフ): 一般に、この記事で検討するグラフは G= (V, E) と表すことができます。表記上、記号 V = {v1,v 2, - - -, } はグラフ内のノードのセットを表し、これらのノード間のリンクのセットを表します。通常、 |V| = n および |E| = m はグラフの次数とサイズとも呼ばれます。

        アプリケーションドメインに応じて、調査対象のグラフデータは非常に異なる特性と構造情報を持っている場合があります。一部のグラフでは、ノードがいくつかの特徴とラベル情報を保持する場合があり、これらはそれぞれマッピング: V →R^{d_x} および: V →によってR^{d_y} 表すことができます。各ノード ∈ V について、その特徴を 、 ラベル ベクトルを で表すv_iことができます 。ここで、 と はそれぞれ特徴とラベル空間の次元を表します。グラフ G のリンクにも特徴とラベルが付けられている場合、同様の方法を使用して、リンクの対応する特徴とラベルのベクトル ∈ E を表すこともできます。それぞれ および として表され ます d_xd_ye_{i,j}x_{e_{i,j}} \in R^{d_x}

        書誌ネットワーク、オンライン ソーシャル ネットワーク、推奨システム、ナレッジ グラフなどの複数の分野のグラフ データの場合、データ セット内に単一の大規模なグラフ構造が存在しますが、グラフには数千、数百万、さらには数十億のグラフが含まれる場合があります。グラフの構造。この大規模なグラフは上記の定義で完全に表現できます。一方、離散数学のコースで学ぶ特殊なグラフ構造や生化学の分子グラフなど、他の多くの分野のグラフの場合、データ セット内に非常に小さなグラフ インスタンスが多数存在し、それぞれのグラフには通常数十のグラフが含まれます。インスタンス、または数百のノードとリンク。これら 2 つのタイプのグラフ構造データを区別するために、一部の既存の研究 [57] では、最初のタイプのグラフを巨大ネットワーク、2 番目のタイプのグラフを小さなグラフ インスタンス セットと名付けています。同時に、このような小さなグラフインスタンスセットを表現するために、次のようにアトラスの概念を導入します。

        定義 2 (Atlas): 生成された特別なグラフ インスタンス (この記事で紹介します) と生化学分子グラフ インスタンスの場合、これらのデータ セット内のグラフ インスタンスのセットを G = {g1, g2, - -, として表すことができます。ここで、 G = (V , E ) は単一のグラフ インスタンスを表し、上記のグラフ定義に従って表現できます。

        一部のアプリケーション分野では、上記のアトラスでは、各グラフ インスタンスが、グラフ インスタンスの位相属性とラベルを表す独自の特性とラベル情報を持つこともあります。形式的には、アトラス G 内のグラフ インスタンス ∈ G について g_i、その元の特徴ベクトルとラベル ベクトルをそれぞれ x∈ R および y∈ R と表すことができます。

3.3 問題の定式化

        このペーパーは、グラフ推論タスクを実行する既存の事前トレーニング済み LLM の能力を強化することを目的としています。前述したように、この記事で検討するグラフ推論タスクには次のものが含まれます。

        (1) 基本的なグラフ属性推論、(2) 書誌論文トピック推論、(3) 生化学分子グラフ関数推論、(4) レコメンダー システム シーケンス推奨推論、(5) オンライン ソーシャル ネットワーク コミュニティ推論、(6) 知識グラフ エンティティおよび関係論的推論。

        具体的には、この記事で学習するグラフ推論タスクは慎重に選択されており、最も基本的なグラフ学習問題の次の 6 つのカテゴリに分類できます。

         - 属性計算: 基本的なグラフ属性推論などのタスクでは、実際には、グラフ内のノード/リンクの単純な数から、グラフの半径と直径、より複雑なグラフに至るまで、入力グラフ データの明示的または暗黙的な属性を計算したいと考えています。およびノー​​ドペアリングの短いパス長。

        ノード分類: 書誌論文トピック推論タスクでは、書誌ネットワーク内の学術論文のトピックを予測することが目標であり、実際にはノード分類タスクとしてモデル化できます。論文ノードとその隣接ノードの生の特徴を通じて、論文を、論文の特定のトピックに対応するさまざまなカテゴリに分類できます。

        - グラフ分類: 生化学分子グラフ関数推論タスクの場合、私たちの目標は、グラフ状態分類タスクとして定義できる分子グラフ構造に基づいて生化学分子の潜在的な機能を推論することです。分子グラフの構造と基本的な特性を通じて、グラフのインスタンスを分類できます。

        リンク予測: 逐次レコメンダー システムの再推奨タスクの場合、私たちの目標は、アイテムとのユーザーの履歴インタラクション記録に基づいて、システム内の特定のアイテムに対するユーザーの潜在的な好みを推測することです。これは、次のリンク予測タスクとして定義できます。グラフ学習 (ユーザーとプロジェクトの接続)。レコメンデーション システムの設定に応じて、ユーザーがアイテムに興味があるかどうかを示すリンクのラベルの存在を予測したり、ユーザーがアイテムを評価するかどうかを示す潜在的なリンクの重みを推測したりできます。

        - グラフ分割/クラスタリング: オンライン ソーシャル ネットワーク コミュニティ推論タスクの場合、私たちの目標は、グラフ分割/クラスタリング タスクとして定義できるオンライン ソーシャル ネットワークのコミュニティ構造を推論することです。ユーザーの社会的交流パターンに基づいて、オンライン ソーシャル ネットワーク内のユーザーをさまざまなクラスターに分割し、各クラスターが非常に頻繁に社会的交流を行うユーザーで構成されるソーシャル コミュニティを表すことを期待しています。

        グラフ検索: ナレッジ グラフ推論タスクの場合、私たちの目標は、グラフ検索問題としてモデル化できる、入力パラメーターに基づいて潜在的なエンティティまたは関係を推測することです。私たちの目標は、入力エンティティまたは関係から開始して、関連するエンティティまたは関係を拡張および検索して、入力の必要なセマンティクスを効果的に保存できる出力を生成することです。

        上記のさまざまなグラフ推論タスクを LLM で解決するために、外部グラフ学習ツールの API 呼び出しをグラフ推論ステートメントにシームレスに組み込むことを提案します。上記の表記に基づいて、現実世界のさまざまなグラフ タスクに対する一連のグラフ推論 API 呼び出しを設計します。これらの API 呼び出しには、外部グラフ学習ツールの名前とパラメーターが含まれており、通常のテキストと区別するために特殊な記号で囲まれています。ChatGPT を利用して、GPT-J や LLaMA などの LLM を微調整するための API 呼び出しを含む大規模な言語モデリング プロンプト データセットを生成します。この記事で学習する LLM はすべて事前トレーニングされており、生成されたヒント データセットのみを使用して微調整します。これらのタスクを解決するための技術的な詳細については、以下の方法論セクションで説明します。

4 提案手法

        このセクションでは、この記事で提案した Graph-ToolFormer フレームワークを紹介します。まず、セクション 4.1 で Graph-ToolFormer フレームワークについて簡単に説明します。その後、セクション 4.2 でグラフ推論 API 呼び出しの一般的な表現方法を紹介し、セクション 4.3 で特定のグラフ推論タスクの API 呼び出しを紹介します。セクション 4.4 では、ChatGPT を使用してプロンプト データ セットを拡張する方法を紹介します。セクション 4.5 では、拡張プロンプト データ セットを使用した言語モデルの微調整方法を詳しく紹介します。同時に、Graph-ToolFormer がいくつかの基本的なグラフ推論の質問と回答も処理できるようにするために、セクション 4.6 でいくつかのグラフ推論の質問と回答プロンプトも導入します。これは、LLM 微調整用のステートメント プロンプトにマージされます。 。最後に、言語モデルによって生成された API 呼び出しを含む出力文に基づいて、セクション 4.7 では、API 呼び出しの解析、実行、グラフ タスクの推論、および出力の後処理を目的としたグラフ推論タスクを紹介します。

4.1 フレームワークの概要

        図 2 は、Graph-ToolFormer フレームワークの概要を示し、Graph-ToolFormer の内部機能コンポーネントとパイプラインを示しています。フレームワークの概要に従って、ChatGPT を使用して、手書きの指示と少数のヒントの例に基づいて、グラフ推論 API 呼び出しステートメントの大規模なヒント データセットに注釈を付けて拡張します。生成されたヒント データセットを使用して、GPT-J [11、53] や LLaMA [49] などの既存の事前トレーニング済み因果 LLM を微調整し、外部グラフ推論ツールの使用方法を教えます。LoRA (Low-Rank Adaptation) [15] と 8 ビット Adam およびモデル量子化テクノロジー [7] を利用することで、Graph-ToolFormer は、Nvidia GeForce RTX 4090 (24GB RAM) などの非常に小さなメモリ空間を持つ GPU で微調整できます。または Nvidia GeForce RTX 1080Ti (11GB RAM) も可能です。微調整された Graph-ToolFormer は推論の目的で使用されます。入力クエリ ステートメントと質問を指定すると、Graph-ToolFormer は、対応するグラフ推論 API 呼び出しを出力ステートメントの最も適切な位置に自動的に追加します。次のサブセクションでは、上記のコンポーネントの詳細と Graph-ToolFormer を構築する手順について詳しく説明します。

 4.2 API 呼び出しによるプロンプト

        この記事では、f (args) を使用して外部グラフ学習ツールの API 呼び出しを表すことができます。f は外部ツールの関数名、args は関数のパラメーター リストを表します。式を簡略化するために、タプル表記 c= (f, args) を使用してこの API 呼び出しを表すこともできます。これは、この記事の残りの部分で頻繁に使用されます。単に外部 API 呼び出しを出力として受け取るのではなく、生成された出力ステートメントに API 呼び出しを埋め込むことをお勧めします。これにより、LLM はテキストの通常のダイアログを通じてグラフ推論タスクを処理し、応答できるようになります。

        API 呼び出しを出力ステートメントに挿入するには、API 呼び出しのトークン シーケンス c= ( f,args ) を次のように表すことができます。

         API 呼び出し関数を囲む「<API>」と「</API>」は、生成された出力ステートメント内の他のトークンと区別するために使用される特別なタグです。Graph-ToolFormer フレームワークの場合、「<API>」タグと「</API>」タグを生成すると、フレームワーク パーサーはトークンが API 関数呼び出しを表すことを認識します。2 番目の API 呼び出し表記では、記号 r は f(args) の戻り結果を表します。トークン「→r」による API 呼び出しの場合、Graph-ToolFormer はクエリの解析と実行後に API 呼び出しの結果を置き換えてステートメントに挿入します。それ以外の場合、API 呼び出しはバックエンドで実行され、返された結果は次のように記録されます。記憶の中の仕事。出力ステートメント API 呼び出しの解析、実行、後処理の詳細については、セクション 4.7 で説明します。関数 f(args) と推論タスクの API 呼び出しのコンテキストに基づいて、後で微調整された LLM が出力結果を出力ステートメントに挿入するかどうかを自動的に決定します。

        [43] で研究された Calendar、Calculator、WikiSearch などの非常に単純な API 呼び出しとは異なり、グラフ推論では、一部の API 呼び出しにはさまざまな外部関数への複雑なネストされた呼び出しが含まれる場合があります。たとえば、1 つの API 呼び出しの一部のパラメーターが実際には他の API 呼び出しの戻り結果である場合や、グラフ推論タスクを完了するために複数の連続する API を同時に呼び出す必要がある場合があります。以下のセクション 4.3 で特定のグラフ推論タスクについて説明するときに、このような複雑なグラフ推論 API 呼び出しがいくつか登場します。

        このような複雑なグラフ推論タスクを解決するために、この記事では、Graph-ToolFormer が特別なタグ "<API>" と "</API>" で囲まれたネストされた連続 API 呼び出しを生成できるようにします。たとえば、2 つの API 呼び出し c1 = (f1, args1) と c2 = (f2, args2) が両方とも独自の入力パラメーターを持っているとすると、最初の API 関数 f1 は、2 番目の API 関数 f2 の戻り結果を入力パラメーターとして使用する必要があります。 、このネストされた API 呼び出しは次のように表すことができます。

         記号「c1|c2」は、これら 2 つの API 呼び出しがネストされていることを示します。

        同時に、タスクが c1 = (f1, args1) および c2 = (f2, args2) など、複数の連続するアプリケーション プログラム インターフェイスを同時に呼び出す必要がある場合、この連続するアプリケーション プログラム インターフェイス呼び出しを次のように表すことができます。

         同時に、より複雑なグラフ推論の状況では、他の API 呼び出しまたは深くネストされた API 呼び出しによって表されるより多くの入力パラメーターを使用して、上記の API 呼び出し表現を書き直すことができます。

         このようなグラフ推論関数 API 呼び出しは、LLM による後の微調整のためにステートメントに挿入されます。LLM の語彙セットと事前トレーニングされたマーク シンボル ジェネレーターを変更せずに、特殊なマーク シンボル「< をいくつかの一般的ではないマーク シンボル (「[」、「]」、「->」など) API>" に置き換えることができます。 </API>」と「→」。

        この記事では、さまざまなグラフ学習 API 呼び出しを伴ういくつかの非常に異なるグラフ推論タスクについて説明します。これについては、次のサブセクションで読者向けに詳しく説明します。

4.3 グラフ推論指向のプロンプト

        この記事では、非常に基本的なタスク (一般的なグラフ プロパティの推論など) からより高度なタスク (さまざまな特定のアプリケーション ドメインのグラフの推論タスクなど) まで、Graph-ToolFormer を使用したいくつかのグラフ推論タスクを学習します。セクション 3 で前に紹介したように、この文書で検討するこれらのグラフ推論タスクは慎重に選択されており、グラフ属性の計算、ノード分類、グラフ分類、リンク予測、グラフの分割/クラスタリングなど、さまざまな種類の基本的なグラフ学習タスクに分類できます。そしてグラフ検索。これらすべての基本的なグラフ学習タスクは、現実世界のグラフ データ推論タスクに幅広く応用できます。この記事で説明したタスクに加えて、API 呼び出しに若干の変更を加えることで、Graph-ToolFormer をグラフ推論に関連する他のアプリケーション タスクに適用することもできます。

4.3.1 グラフィックデータのロード

        テキストや画像とは異なり、現実世界のグラフ データは、比較的大きなサイズ、広範囲に接続された構造、および複雑なプリミティブ プロパティを持つ場合があります。いくつかの小さな手作りグラフの例を除けば、推論のためにグラフ構造データをラベル付きシーケンスとして LLM に手動で入力することはほとんど不可能です。したがって、このペーパーでは、提供されたデータセット名、ローカル ファイル パス、またはオンライン リポジトリ URL リンクに基づいて、オフライン ファイルまたはオンライン リポジトリから必要なグラフ データを自動的にロードする機能を Graph-ToolFormer モデルに提供することを提案します。技術的に言えば、この記事で説明する最初の API 呼び出しはグラフ データの読み込みのためのもので、グラフ全体、または 1 つまたはいくつかのノードとリンクを含むサブグラフのみを読み込むことができます。

         このうち、「GL()」は「Graphics Loading」関数名の略称を表し、関数パラメータ「File Path」、「Node Subset」、「Link Subset」はそれぞれローカルグラフィックスデータのファイルパス(データが存在する場合)を指定します。ネットワーク上に保存されている場合は、オンライン リポジトリ URL)、ノードの特定のサブセット、およびリンクのサブセットを指定します。記号「→G」は、グラフィックス データが参照変数 G = (V, E) を使用してロードされることを明示的に意味します。これは、アプリケーションのタスクと設定に応じて、実際にはオプションです。さらに、「GL()」関数がローカル ファイル ディレクトリまたはオンライン リソース ライブラリのルート URL を事前に提供している場合は、この API 関数を呼び出すときに、特定の「ファイル パス」を単純化するだけで済みます。グラフィック名」

        また、パラメータ「node-subset」(ノードサブセット)および「リンクサブセット」(リンクサブセット)が省略されている場合、またはそれぞれ「すべてのノード」および「すべてのリンク」として指定されている場合、API 関数呼び出しは直接グラフ全体をロードします。場合によっては、ロードするノードのサブセット (図の {vi,vj, - -, v,k} ⊂ V) のみを指定できますが、すべての関連リンクを列挙することはできません。この場合、「 「ノード サブセット」および「リンク サブセット」パラメータには、それぞれ「{ vi, vj , - - , vk}」および「関連するすべてのリンク」という値が割り当てられます (または、「リンク サブセット」パラメータが省略されます)。これにより、提供されたノードのセットとその内部リンクに基づいてサブグラフをロードする際の柔軟性が向上します。同様に、リンクのサブセットのみを指定することもできます。「ノード サブセット」を「関連するすべてのノード」として指定するか、このパラメーターを省略すると、表に示すように、提供されたリンクを構成するグラフ データ内のノードが自動的に読み込まれます。 1 2 番目のグラフ データ読み込みプロンプトの例。この例 (表 1 の上部に表示) に加えて、入力されたテキスト ステートメントに基づいて (ローカル) ファイルから要求されたグラフ データを取得してロードする、他のグラフ データ ロード API 呼び出しのヒントの例も提供します。

         4.3.2 グラフ属性の推論。

        グラフ構造データには、直径、密度、中心、最短経路などのさまざまな属性がある場合があります。これらの属性は、グラフ データのさまざまな特性を捉えることができ、現実世界のグラフ構造データに幅広く応用できます。このようなグラフのプロパティを推論するには、モデルは通常、プロパティの定義を知っているだけでなく、そのようなプロパティを計算するための強力な論理的推論と数学的計算能力も必要とされます。既存の言語モデルの場合、マスクされた言語モデルであっても、自己回帰言語モデルであっても、入力グラフに基づいてこのような複雑な属性推論プロセスを実行することは困難です (ほぼ不可能です)。

        このペーパーでは、LLM がグラフ属性について推論できるようにするために、言語モデルがこれらの属性について推論するために呼び出すことができる外部 API のセットを導入します。Graph-ToolFormer がこのようなグラフ プロパティ推論タスクをどのように処理するかを説明するために、図 1 に示す小さなロリポップ グラフ (左上隅の緑色のグラフ) を例として取り上げます。

         読み込まれたグラフでは、シンボル Gl も使用できます。わかりやすくするために、次のセクションでは、グラフ属性推論 API を読者に紹介する例として、上で読み込んだロリポップ グラフも取り上げます。

注文とサイズ

        形式的には、ロードされたロリポップ グラフ G = (V, E) などのグラフが与えられると、その次数はグラフ内のノードの数、つまり |V| を表し、そのサイズはグラフ内のリンクの数を表します。つまり |E| です。ロリポップ グラフの順序とサイズのプロパティを推論するための API 呼び出しを次のように表現できます。

         ロリポップ グラフが他の API 呼び出しを通じてプリロードされている場合、それを Gl と呼びます。上記の API 呼び出しは次のように簡略化することもできます。

         このうち、記号GR()は「グラフ推論」関数名の略称を表し、パラメータ「order」と「size」は推論するグラフの属性を表す。「toolx:desired_property」は、toolxツールキットを使用した推論に必要なグラフプロパティを示します。toolxは、この記事でnetworkxをベースにGraph-ToolFormer用に作成したグラフプロパティ計算ツールキットです。この記事で使用したグラフ推論モデルとツールキットについては、次の記事詳細について. 記号「→」は、グラフ属性推論 API 呼び出しの出力結果が出力ステートメントに含まれることを示します。前述したように、実際には API 呼び出しの出力結果マーク「→」が返されます。オプションであり、コンテキストと適用されるタスクを推論するために含まれるかどうかによって異なります。

        密度:

         グラフ密度は、グラフ内のノード間の潜在的なリンクの数に対する、グラフ内の既存のリンクの数の比率を表します。入力ロリポップ グラフ G= (V, E) が有向グラフの場合、その密度は として表すことができ、無向グラフの場合、その密度は として表すことができますグラフ密度を計算するための API 呼び出し形式は次​​のとおりです。

         ブール値パラメーター「is -directed (有向)」は、密度計算において有向グラフと無向グラフを区別します。

最短経路

        グラフ内の 2 つのノード間の最短パスは、グラフ内のノードとリンクを介してそれらを接続する最短長のパスです。グラフ内の 1 から 2 までの最短パス長に対する推論 API 呼び出しは、次のように表すことができます。

         同時に、グラフ内のすべてのノードの最短パスの平均長は、次のアプリケーション インターフェイス呼び出しを通じて取得できます。

         平均最短経路長に加えて、次のようにグラフの最大最短経路長と最小最短経路長についても推論できます。

         偏心

        ロリポップ グラフ G = (V, E) などの接続グラフの場合、ノード vi ∈ V の離心率は、グラフ内の他のノード vj ∈ V からの最大グラフ距離を表します。この定義によれば、切断されたグラフの場合、すべてのノードは無限の離心率を持つように定義されます。次の 2 つの API 呼び出しを通じて、グラフ全体 (つまり、グラフ内のすべてのノード) または特定のノードの偏心率を計算できます。

         基本的なグラフ推論 API 呼び出しの概要: 上記の説明に基づいて、読者はこれらのグラフ プロパティには非常に複雑な論理推論が必要な場合があることに気づいたはずです。いくつかの予備的な実験テストを通じて、現在の LLM (ChatGPT や LLaMA など) はそれらをうまく処理できません。同時に、上記の推論特性 (最短経路など) は、現実世界のグラフ推論タスク (交通ネットワーク推論や輸送ルート計画など) でも非常に広く使用されています。現在、LLM は空間交通データ (異なる場所間の走行距離や時間の推定など) について正しい推論結果を提供できないという批判を受けています。交通ネットワーク属性に基づいた上記の最短パス API 呼び出しを使用すると、LLM がそのようなクエリを処理するためのより正確な推論結果を提供できます。これを言語モデルに組み込むために、指定されたデータ ソースからグラフ データをロードし、上で説明したいくつかの一般的なグラフ プロパティについて推論できる上記の API 呼び出しの例を表 1 に示します。

4.3.3 高度なグラフ推論タスク。

        この論文では、基本的なグラフ属性推論タスクに加えて、(1) 書誌ネットワークに基づく学術論文トピック推論、(2) タンパク質グラフ構造など、より複雑な構造を持つ実世界のグラフ データに関するいくつかの高度な推論タスクも研究します。 (2) レコメンダーシステムに基づく逐次製品推奨推論、(4) オンラインソーシャルネットワークに基づくソーシャルコミュニティ推論、(5) ナレッジグラフに基づく意味論的推論。この記事で説明していない他の多くの高度なグラフ推論タスクについては、Graph-ToolFormer フレームワークにわずかな変更を加えるだけで、対応する API 呼び出しを推論ヒントに追加することで、Graph-ToolFormer に効果的に統合できます。Graph-ToolFormer フレームワークは、共通インターフェイスとして LLM を使用してさまざまなグラフ推論アプリケーション タスクを実行するためのバックボーンとして機能します。セクション 7 では、この論文の最後で読者のために、将来の研究の可能性をいくつか紹介します。

参考文献エッセイのトピックの推論:

        書誌ネットワーク [47] は、学術論文、著者、機関、出版場所などのさまざまなエンティティ、および引用リンク、著者リンク、所属などのこれらのエンティティ間のさまざまなリンクを含む、複雑なグラフ構造のデータを定義します。関係リンクと出版物リンク。このセクションでは、学術論文の書誌ネットワークベースのトピック推論タスクについて説明します。論文の主題は、論文自体のテキスト記述からだけでなく、その論文が引用/引用した他の論文からも推測できるため、グラフ推論モデルには論文の元のテキストの特徴だけでなく、その特徴も活用する必要があります。広範な引用リンク。形式的には、セクション 3.2 で前に示した用語の定義に従って、書誌ネットワークを = (V, E) として表すことができ、これはアプリケーション インターフェイス呼び出しを通じてロードできます。

         各論文は書誌ネットワーク内でノード vi∈V として表され、元の特徴ベクトル x とラベル ベクトル y を持ちます。元の特徴ベクトルには論文のテキスト情報 (タイトルや要約など) が含まれており、ラベル ベクトルは論文のトピックを表します。既存のグラフ ニューラル ネットワーク (GNN) は、生の特徴と接続された近傍情報の表現を学習することによって紙のトピックを推測します [19、60]。これをさらにトピック タグ ベクトルの推測に使用できます。この記事で紹介する Graph-ToolFormer モデルでは、事前トレーニングされた Graph-Bert [60] を書誌ネットワークのデフォルトのトピック推論モデルとして使用します。上記の説明に基づいて、次の API 呼び出しを通じて、グラフ ニューラル ネットワーク モデルを通じて論文トピックの推論を表現できます。

         関数表記は、これが Graph-Bert モデル [60] を使用した論文トピック推論アプリケーション インターフェイスであることを示しています。実際、この記事で提案する Graph-ToolFormer フレームワークは一般的なフレームワークです。Graph-Bert モデルに加えて、他の多くの既存のグラフ ニューラル ネットワーク モデルを学術論文のトピック推論に使用できます。提供されたソース コードに従って、読者は独自のグラフ推論タスクを完了するために使用できるさらに異なるグラフ モデルを含めて、Graph-ToolFormer をカスタマイズできます。

        タンパク質の分子機能の推論: タンパク質および化学分子の機能の推論 [52] は、生化学の分野で数十年にわたって研究されてきた古典的な問題であり、一部の治療のための新薬の設計に役立つなど、現実世界で重要な応用価値があります。既存の病気、希少な病気。相同なタンパク質は同時に複数の異なる機能を持っていることが多いため、タンパク質の機能を推測するのは簡単ではありません。さらに、そのような予測は一部の変異に対しては微調整が必​​要ですが、他の変異に対しては堅牢です。研究者らは機械学習モデルを使用してこの問題を調査し、タンパク質機能の比較的大規模なデータベースを開発しました[48]。しかし、データベースに含まれる機能が既知の特定のタンパク質の数は、現実世界に存在するタンパク質の数と比較すると依然として非常に限られています。グラフ学習では、タンパク質分子の構造に基づいてその機能を推測することも広く研究されています。したがって、このセクションでは、グラフ推論タスクとして Graph-ToolFormer にも組み込みます。

        書誌ネットワークとは異なり、タンパク質分子グラフのサイズははるかに小さく、そのようなグラフの複数のインスタンスがデータセット内に存在します。さらに重要なことは、タンパク質の分子グラフの特徴とラベルは、個々のノードに関するものではなく、分子グラフ全体に関するものであるということです。セクション 3.2 で紹介したように、調査対象のタンパク質分子アトラスは G = {g1, g2, · · · , } として表すことができ、これは次のグラフ読み込み API 呼び出しによって読み込むことができます。

         データセット G 内の各分子グラフ インスタンス G = (V , E ) については、各タンパク質分子グラフ インスタンスに関連付けられた元の特徴とラベルも存在します。たとえば、グラフ インスタンス gi ∈ G の場合、x を使用してその元の特徴を表し、y を使用してそのラベルを表すことができます。ラベル ベクトルは対応する関数を表します。タンパク質グラフの構造とその元の特徴に基づいて、タンパク質分子の機能推論のための次の API 呼び出しを定義できます。

         これを、[58] で提案された事前学習済みグラフ ニューラル ネットワーク SEG-Bert と呼びます。SEG-Bert の正式名は「Segmented Graph-Bert」[58] で、分子グラフ表現学習用に Graph-Bert モデルを拡張したものです。Graph-ToolFormer で使用される SEG-Bert モデルに加えて、読者は Graph-ToolFormer フレームワークをカスタマイズして、分子グラフ推論タスクを解決するために他のグラフ モデルを組み込むこともできます。

        逐次レコメンダー システムの推論: ビッグ データの時代では、オンラインおよびオフライン データがますます生成されるため、これらのビッグ データ ソースから情報を手動で検索することは不可能になり、これを自動的に行うレコメンダー システム [28] が必要になる可能性があります。必要な情報を提案します。逐次レコメンデーション システムは、履歴記録に基づいて、ユーザーが興味を持つ可能性のある次のアイテムを推測することを目的としており、ユーザーの将来の購入行動やそれらのアイテムのレビュー評価スコアにつながる可能性があります。

4.4 ChatGPT による迅速な拡張

        表 1 と表 2 に示されているヒントの例では、API 呼び出しを使用してさまざまなグラフ推論タスクを実行する方法について、いくつかの例しかカバーできません。このように少数の例では、既存の LLM を微調整するには十分ではありません。この論文では、ChatGPT (gpt-3.5-turbo) を使用してプロンプト インスタンスを強化することを提案します。これは、多くの異なる言語学習タスクで優れた少数ショットおよびゼロショットのコンテキスト学習機能を実証しています [5]

 4.4.1 グラフィックの読み込みにより、データ セットの生成が要求されます。

        [34] と同様に、プロンプトの例を生成しやすくするために、ChatGPT がシステムの役割を指定するための詳細な手順も提供します。ここでは、グラフ データ ロード API 呼び出しを例として取り上げます。ChatGPT に提供される手順とプロンプトの例は次のとおりです。手順とプロンプトの例に従って、ChatGPT にグラフ データの生成とプロンプト データ セットのロードを依頼します。

        手順: あなたのタスクは、組み込みテキストにグラフィックス ロード関数の API 呼び出しを追加して、特定のグラフィックス データのロードを実装することです。この関数は、指定されたグラフ名とそのノードとリンクに基づいて、必要なグラフ構造化データをロードするのに役立ちます。「[GL(グラフ名, ノード, リンク)]」と記述することでグラフ読み込み API を呼び出すことができます。ここで、「グラフ名」はターゲットのグラフ データを表し、「ノード」と「リンク」は言及されたノードとリンクを表します。特定のノードまたはリンクが指定されていない場合、API は「node」パラメーターと「link」パラメーターに「すべてのノード」と「すべてのリンク」を書き込みます。ノードのみが指定されている場合、API は「nodes」パラメータ エントリに言及されたノードをリストし、「links」パラメータ エントリに「すべての関連リンク」を書き込みます。リンクのみが指定されている場合、API は「nodes」パラメータ エントリに「関連するすべてのノード」を書き込み、「links」パラメータ エントリに指定されたリンクをリストします。以下に、グラフ構造化データをロードするための API 呼び出しの例をいくつか示します。これらの例では、最も適切な場所に API 呼び出しが挿入され、出力が入力上で繰り返されます。

        入力: ベンゼン環の構造分子図 ベンゼン環には六角形が含まれています。

         • 出力: ベンゼン環の [GL("ベンゼン環")] 分子図の構造には六角形が含まれています。

        • 入力: アセトアルデヒドの分子図には炭素-酸素二重結合が存在します。

         • 出力: [GL("アセトアルデヒド分子図", {炭素, 酸素}, {(炭素, 酸素)})] アセトアルデヒド分子図には炭素-酸素二重結合が存在します。

         • 入力: スプーンのようなロリポップ画像。

        • 出力: [GL("lollipop-graph", "all Node", "all links")] ロリポップ グラフはスプーンのように見えます。

        • 入力: Cora 書誌ネットワークの論文 10 では、Transformer モデルが紹介されています。• 出力: [GL("cora", {Paper#10}, "all relationship cite links")] 書誌ネットワークの Paper#10 では、Transformer モデルが導入されています。

        • 入力: インスリンは、2 つの長いアミノ酸鎖を含む小さな球状タンパク質です。

         • 出力: [GL("Insulin-Protein-Graph", "All Atom Nodes", "All Atom Bond Links")] インスリンは、2 つの長いアミノ酸鎖を含む小さな球状タンパク質です。

        入力: IMDB 推奨システムで、デヴィッドはアベンジャーズの映画を 10 つ星と評価しました。

         • 出力: [GL("imdb-recommender-system", {"David", "The Avengers"}, {("David", "The Avengers")})] IMDB レコメンデーション システム、「The Avengers」に対する David の応答映画「アライアンス」の評価は星10。

        • 入力: 既存のオンライン ソーシャル アプリケーションの中で、Tiktok を使用すると、ユーザーはライブ ビデオを通じてオンラインで簡単に交流できます。

         • 出力: 既存のオンライン ソーシャル アプリケーションのうち、[GL("tiktok-social-network", "すべてのユーザーとビデオ ノード", "すべてのユーザー-ビデオ リンクおよびユーザー-ユーザー リンク")] Tiktok を使用すると、ユーザーは簡単にオンライン ライブ ビデオを利用できます。社交すること。

        • 入力: Freebase Knowledge Graph によると、ドナルド・トランプは 1946 年にニューヨークのジャマイカ病院医療センターで生まれました。

         • 出力: [GL("freebase", {"Donald Trump", "Jamaica Hospital Medical Center", "New York"}, {("Donald Trump", "Jamaica Hospital Medical Center"), ( "Jamaica Hospital" による) Medical Center" Center", "New York")})] Freebase Knowledge Map, ドナルド・トランプは 1946 年にニューヨークのジャマイカ病院医療センターで生まれました。

        クエリ: 指示と例に従って、実際のグラフ データの読み込み用にそのような入出力ペアを 5000 個生成してください。ロードされたデータがグラフ構造になっていること、および API 呼び出しが前述のグラフ、または前述のノードまたはリンクの前に挿入されていることを確認してください。

        指示、例、クエリに従って、Chat-GPT API を呼び出すことにより、5000 個の入出力ペア インスタンスを含むプロンプト データ セットを取得しました。不完全なインスタンスを手動で削除し、簡単な校正を行った後、約 2803 個の入出力ペアのグラフィックス データ読み込み API 呼び出しがデータ セットに保持され、これらのデータは後で紹介する微調整に使用されます。

4.4.2 グラフ推論によりデータセットの生成が促されます。

        他のグラフ推論プロンプトと同様に、同様の指示とプロンプトの例を使用して、ChatGPT を使用して同様の入出力ペアを多数生成できます。同時に、グラフ読み込み API 呼び出しとは少し異なり、グラフ推論プロンプトが効果的であることを確認するために、事前にグラフ推論ツールキットを呼び出して、すべての入力ステートメントを手動で記述することをお勧めします。たとえば、Cora 書誌ネットワーク内の論文のトピックが「ニューラル ネットワーク」である場合、その入力文を次のように配置します。

        入力: Cora の最初の論文はニューラル ネットワークに関するものです。

        このような入力を ChatGPT に提供し、グラフ推論 API 呼び出しをクエリのあるステートメントに挿入できるように依頼します。

        クエリ: 指示と例に基づいて、入力に対するグラフ推論 API 呼び出しから出力を生成します。API 呼び出しが最も適切な場所に挿入されていることを確認してください。

        クエリと入力ステートメントに基づいて、ChatGPT は次の出力を返します。

        • 出力: Cora の最初の論文のトピックは [GR(GL("cora", "すべての論文ノード", "すべての引用リンク"), "トピック", {Paper#1}) ニューラル ネットワークです。

        ChatGPT を使用して API 呼び出しに注釈を付け、上記の出力を生成することに加えて、ChatGPT を使用して、セマンティクスを変更せずに入力ステートメントを別の方法で書き換えました。たとえば、上の図に示されている入力ステートメントの場合、次の書き換えられたバージョンも取得されます。

        入力: Cora の最初の記事はニューラル ネットワークに関するものです。

        - 入力: Cora の最初の論文はニューラル ネットワークに関するものです。

        - 入力: Cora のアルバムの中で最も重要な論文は、ニューラル ネットワークの分野を扱っています。

        - 入力: Cora の創刊号はニューラル ネットワークをテーマとしています。

        これらの言い換えられた入力は、API 呼び出しの注釈として ChatGPT に再入力されます。このプロセスは、基本的なグラフ プロパティ推論タスクと高度なグラフ推論タスクで調査されたすべてのノード/グラフ インスタンスに対して実行され、入出力プロンプトのペアのデータセットが生成されます。生成されたデータセットに基づいて、ChatGPT によって生成された API 呼び出しを実行し、グラフ推論 API 関数の戻り結果をステートメント内の真理値と比較します。(1) API 呼び出しの実行に失敗した、または (2) 正しい結果を返せなかったという出力は、データセットから除外されます。最後に、フィルタリングされた ChatGPT 拡張によって生成されたデータセットは LLM の微調整に使用され、その統計は後の実験セクションで提供されます。同時に、この記事で検討していない他のグラフ推論タスクについても、推論 API 呼び出しデータ セットを生成する方法は上記と同様です。

4.5 グラフ推論のための LLM の微調整

        このセクションでは、上記の強化されたグラフ推論プロンプト データセットに基づいて、既存の事前トレーニング済み LLM を微調整して、LLM が API ツールを使用してグラフ推論タスクを処理する方法を学習できるようにする方法を紹介します。形式的には、表 1 と表 2 のプロンプトの例に示されているように、  Graph-ToolFormer の LLM の目標は、トークン シーケンス (つまり、上記のセクション 4.2 で紹介されました主な課題は、(1) API 呼び出しを挿入する最も適切な場所を正確に決定すること、(2) 呼び出しに対して API 関数を正しく選択すること、(3) コンテキストからパラメーターを正確に抽出して関数に入力することです。このセクションでは、これら 3 つの課題すべてに対処します。

        4.5.1 API呼び出し挿入位置予測。

        指定された入力ステートメントについては、API 呼び出しを挿入できる場所が複数ある場合があります。API 呼び出しデータを生成するために上位 k 個の場所を選択する [43] とは異なり、この論文は、API 呼び出しが挿入される可能性が最も高い場所を特定することを目的としています。形式的には、事前トレーニングされた言語モデルに基づいて、入力文 w = [w1, w2, - - -, ] を指定すると、位置 (つまり、マーカー wi-1 と ) の間に API 呼び出しを確率で挿入できます。

         LLM が大気位置で特別な開始タグ <API> を生成すると、モデルはここに API 呼び出しを挿入する必要があることを認識します。<API> タグの後、特殊な終了タグ </API> の前に生成されるすべてのタグは、API 呼び出し関数名または入力パラメーターになります。最新の確率 の位置インデックスの場合、API 呼び出しを挿入するのに最も適切な位置として選択されます。

        4.5.2 API 呼び出しドメインと関数の選択。

        [43] で研究されたごく少数の API 呼び出し関数とは異なり、この論文で研究されたグラフ推論 API はより多様であり、フレームワークの実装と調整に課題をもたらす可能性があります。一方で、より多くのグラフ推論タスクと API 関数が LLM チューニングに組み込まれると、グラフ推論 API 関数の検索スペースが飛躍的に増大し、呼び出すための適切で最適な API 関数を選択することが難しくなります。一方で、異なるグラフ推論タスクの一部の API 関数は、同様の関数名を共有することもあるため、Graph-ToolFormer が API 呼び出しで正しい関数を選択する際に誤解を招く可能性があります。さらに、異なるグラフ推論タスクは異なるツールキットの異なる API 関数を呼び出す場合があり、一部のタスクでは異なるグラフ関数とトレーニング済みモデルをバックエンドにプリロードする必要がある場合があります。また、API 呼び出しでロードされるトレーニング済みグラフ モデルとグラフ ツールキットを指定することもできます。これにより、Graph-ToolFormer は、生成フェーズ中に事前にモデルとツールキットをプリロードできるため、グラフ推論全体の時間コストが削減されます。したがって、前に示したグラフ推論 API 呼び出しの例に基づいて、セクション 4.2 で紹介したグラフ推論 API 呼び出しテンプレートを次のようにわずかに変更することをお勧めします。

 このうち、API 関数の対応する「ドメイン」は、API 関数呼び出し内の特定のグラフ推論タスクのプレフィックスです。ドメインは、使用されるツールキットの名前、または特定の事前トレーニングされたモデルの名前にすることができます。たとえば、表 1 と表 2 に示すグラフ推論 API 呼び出しでは、グラフ属性推論に networkx ツールキット 2 に基づいてこの記事で開発したツール x を使用します。対応するパラメーターは「toolx:property-names」として表現できます。 ; トピック推論に関する Graph-Bert の文献 [60] を使用する場合と同様に、対応するパラメータを「graph-bert:topic」として表すことができます。他の場合では、ドメインが指定されていない場合は、デフォルト ドメインの関数を直接使用して、グラフ推論タスクを完了します。API 呼び出しで「domain:function」エントリを定義するために使用される事前トレーニング済みグラフ モデルの詳細については、以下のセクション 5 で説明します。

        つまり、API 関数呼び出しをステートメントに挿入するときは、API 呼び出しのドメインと関数名の両方を推測する必要があります。推論フェーズ中に LLM がドメインを生成すると、API 呼び出し出力ステートメント全体が生成される前でも、システムはバックエンドにドメイン コードをプリロードできます。同時に、LLM が API 呼び出しで使用する最適なドメインを選択できるようになります。これは、同じグラフ推論タスクを完了するには、いくつかの異なる方法があり、有効性と効率の点でも異なる方法が実行されるためです。

4.7 LLM の推論とグラフ推論のクエリ解析、実行、後処理

        最後に、このセクションの最後では、Graph-ToolFormer で微調整された LLM を使用してさまざまなグラフ推論タスクを処理する方法について詳しく説明します。図 3 に示すように、複数の機能モジュールに基づくグラフ推論プロセスには、(1) LLM に基づく出力クエリ ステートメントの生成、(2) クエリの抽出と解析、(3) クエリの実行、(4) などの重要なステップがいくつかあります。 ) グラフデータセンター、(5) グラフモデルセンター、(6) グラフタスクセンター、(7) ワーキングメモリ、(8) 推論出力後処理。このセクションでは、読者にこれらの手順と、Graph-ToolFormer で使用される関連機能モジュール/ハブを紹介します。

        4.7.1 LLM の推論。

        前のセクションでは、プロンプト データ セットに基づいて、入力状態要素のグラフ推論クエリ ステートメント出力を生成できる Graph-ToolFormer で LLM を微調整する方法について説明しました。微調整された LLM を推論に適用すると、グラフ推論入力ステートメントが与えられると、LLM は入力ステートメントを対応する出力ステートメントに投影し、それに API 呼び出しで注釈を付けます。次のような推論プロセスの例も提供します。

         同時に、質問と回答に基づくプロンプト データ セットを LLM の微調整に組み込むことにより、Graph-ToolFormer は、次のような入力質問クエリに対するグラフ推論ステートメントを生成することもできます。

         グラフ推論の入力ステートメントと問題の大部分について、Graph-ToolFormer の LLM は、出力の正しい位置に正しいグラフ推論 API 呼び出しを追加できます (以下のセクション 5 で実験結果を示します)。API 呼び出しを使用して生成されたこれらの出力ステートメントは、グラフ推論クエリを抽出するために以下のパーサー モジュールに供給されます。

4.7.2 クエリパーサーモジュール。

        Graph-ToolFormer ではネストされた順次 API 呼び出しが許可されているため、LLM によって生成された出力グラフ推論クエリを解析することは簡単な問題ではありません。ここでは、上記で紹介した LLM によって生成されたクエリの例として、出力クエリ "[GR(GL("cora"),"graph-bert:topic",{Paper#1})–>r] を取り上げます。グラフ -
ToolFormer フレームワークは、クエリを認識し、実行モジュールによって認識および実行できる標準形式に解析できるクエリ パーサー モジュールを導入します。クエリの予期される解析結果は 2 つの部分で構成されます。

        関数呼び出しの解析: ステートメント内の通常のテキスト クエリとグラフ推論 API 呼び出しのクエリを区別するために、正規表現を使用してクエリを識別し、解析します。クエリの関数呼び出し部分は、次の Python 正規表現を使用して効果的に識別できます。

         API コール内の API GR/GL 関数のフラグとパラメータが検出されます。API 呼び出しのパラメーターについては、ネストされた API 呼び出しがあることが判明した場合 (括弧マーカー (および) を検出することによって)、ネストされた API 呼び出しを再帰的に解析します。

出力挿入の解析: 出力挿入タグ「->r」の抽出が容易になり、正規表現によって識別することもできます。

         この記事で説明する API 呼び出しでは、「->r」タグが存在する場合、クエリ テキストを置換し、グラフィカル推論結果を元のテキストに挿入します。それ以外の場合、クエリはバックグラウンドでのみ実行されます。その結果は後で作業記憶に記録されます。

        たとえば、LLM によって生成されたサンプル クエリ "[GR(GL("cora"), "graph-bert:topic",{Paper#1})->r]" の場合、そのネストされた解析結果は、 Graph-ToolFormer フレームワークのクエリ パーサー モジュールは "((GR, [(GL, ["cora"]), "graph-bert:topic", {Paper#1}]), [True])" として表されます。ここで、「True」マークは、出力挿入マーク「->r」、つまり「->r」の存在を示します。つまり、出力ステートメント内のクエリ テキストを推論結果に置き換える必要があります。

4.7.3 グラフィカル推論センター。

        すべてのグラフ読み込みおよび推論 API ツールキットとモデルはプリロードされており、解析クエリで推論する前にすぐに使用できます。さらに、ロードされるすべてのグラフ データは、グラフ ロード API 関数で処理できるように統一された形式に編成されます。具体的には、さまざまなグラフ データセット、事前トレーニングされたグラフ モデル、およびグラフ推論タスクをそれぞれホストするために、Graph-ToolFormer フレームワークにいくつかのセンターを導入しました。

        グラフ データセット センター: Graph-ToolFormer フレームワークで使用される前処理されたグラフ データセットのセットは、グラフ データセット センターに編成されます。これらすべてのデータセットは統一された形式であり、Graph-ToolFormer フレームワークと事前トレーニングされたグラフ モデルが推論中に必要な情報にアクセスできるようになります。付録では、Graph-ToolFormer ソース コードで使用される標準的なデータ編成形式を紹介します。

        具体的には、グラフ データセット センターがホストするデータセットには次のものが含まれます。

        – グラフ属性推論データセット: GPR;

        – 書誌ネットワーク データ セット: Cora、Pubmed、Citeseer。

        – 分子グラフデータセット: タンパク質、Mutag、Nci1、Ptc;

         – オンライン ソーシャル ネットワーク データ セット: Twitter、Foursquare。

         – レコメンデーション システム データ セット: Amazon、Last-FM、Movielens;

         – ナレッジ グラフ データ セット: WordNet、Freebase。この論文で研究したグラフ データセットの詳細については、セクション 5 の実験について説明するときに説明します。

        グラフ モデル センター: Graph-ToolFormer フレームワークでは、複数の (すぐに使用できる) グラフ ツールと事前トレーニングされたグラフ ニューラル ネットワーク モデルをホストするためのグラフ モデル センターも定義します。具体的には、Graph-ToolFormer フレームワークに含まれるグラフ モデルには次のものがあります。

        – Toolx: この記事は networkx に基づいて作成され、属性の計算に使用されます。

        – Graph-Bert [60]: グラフ表現とノード分類のために構築されました。

        – SEG-Bert [58]: グラフ表現とグラフ インスタンス分類のために構築されました。

        – KMeans [26]: グラフの分割とノードのクラスタリングのために構築されました。

        – BPR [42]: リンクのランキングと推奨のために構築されています。

        – TransE [4]: グラフエンティティ/関係検索用に構築されています。

これらのモデルの詳細については、以下のセクション 5 で説明します。これらのグラフ モデルは、提供されたグラフ データセットの特定のグラフ推論タスクで呼び出される基本的なグラフ推論関数を実装します。

        グラフ タスク センター: 最後に、グラフ タスク センターは、Graph-ToolFormer フレームワークで調査される特定のグラフ推論タスクを定義します。セクション 3.3 で前に紹介したように、ほとんどのグラフ推論タスクは、(1) グラフ属性の計算、(2) ノードの分類、(3) グラフの分類、(4) グラフの分割/クラスタリングなど、いくつかの非常に基本的なグラフ学習タスクに単純化できます。 、(5)リンク予測・ランキング、(6)グラフ検索タスク。セクション 4.3 で紹介されたすべてのアプリケーション指向のグラフ推論タスク、つまり (1) グラフ属性推論、(2) 書誌論文トピック推論、(3) 分子グラフ関数推論、(4) ソーシャル ネットワーク コミュニティ推論、(5) 推奨システム推論と (6) ナレッジ グラフ推論は、グラフ タスク センターの非常に基本的なグラフ学習タスクに単純化します。

        前述のハブに加えて、Graph-ToolFormer フレームワーク内には、エンド ユーザーとの対話から取得した入力に基づいてグラフ推論 API を生成する LLM をホストする追加のハブがあります。LLM センターは、グラフ推論タスク用の一連の微調整された言語モデルをホストします。具体的には、この記事で検討した Graph-ToolFormer フレームワークでは、複数の LLM (GPT-J 6B 8bit など) をハブに組み込んで、グラフ推論ステートメントの生成を出力できます。

4.7.4 クエリ実行モジュール。

        さらに、生成された出力は、その中で API 呼び出しを検出して開始することにより、さらに後処理を受けます。API 呼び出しの戻り結果を出力する必要があるかどうかに応じて、実行プログラム Graph-ToolFormer はさらに API 呼び出しをステートメント内の戻り結果に置き換えます。たとえば、4.7.1 節で述べた例の場合、解析結果 "((GR, [(GL, ["cora"]), "graph-bert:topic", {Paper#1}]) によれば、 [ True])"、Graph-ToolFormer は次のクエリを認識して実行します。

        外部関数: "GR"、つまり、外部関数はグラフィカル推論に使用されます。-

         外部関数パラメータ: "[(GL,["cora"]),"graph-bert:topic",{Paper#1}]"。」。

         - パラメータ 1: "(GL, ["cora"])"、最初のパラメータはネストされた API 呼び出しです。

        ※内部関数:「GL」、内部関数はグラフィックスロードに使用されます。

        ∗ 内部関数パラメータ: "["cora"]"。つまり、グラフ ロード API は Cora ネットワーク データ セットをロードします。

        - パラメーター 2: ""graph-bert:topic""、2 番目のパラメーターは、Graph-Bert モデルを使用してトピックを推論するように設計された外部推論関数を表します。

        - パラメーター 3: "{Paper#1}"、3 番目のパラメーターは、外部推論関数の焦点が入力グラフ データ セット内の "Pa-per#1" であることを示します。

        - 出力挿入ラベル: "True"、つまり、このクエリはクエリ結果を置き換えてステートメントに挿入する必要があります。

        テキスト内のクエリを解析した後、Graph-ToolFormer のクエリ実行モジュールは対応する API 関数を呼び出し、提供されたグラフ データとパラメータに基づいてクエリを実行します。つまり、「Graph-Bert.topic(cora, {Paper#)」 1})" の場合、この関数はグラフ推論クエリの結果、つまりニューラル ネットワークを書誌論文トピック推論クエリの出力として返します。また、クエリ内に出力挿入タグ「->r」が存在するため、Graph-ToolFormerのクエリ実行モジュールもクエリタグ列を推論結果に置き換えます。Graph-ToolFormerの最終的な出力結果は以下のようになります。

おすすめ

転載: blog.csdn.net/qq_40671063/article/details/132998060