1K Views
March 09, 23
スライド概要
2023/3/3
Deep Learning JP
http://deeplearning.jp/seminar-2/
DL輪読会資料
Toolformer: Language Models Can Teach Themselves to Use Tools 岡田 領 / Ryo Okada
書誌情報 • Arxiv 2023/2 • LLMが必要に応じて必要なAPIを呼び出し利用する手法 • LLM自身の文脈理解能力を利用して,ツール(API)をいつ,どう使うのか, 自己教師づけし,データセットを作成し,finetuneする
大規模言語モデルの限界 • ChatGPTなどのLLMの弱点 • 最近の出来事などの最新情報にアクセスできな い • 事実を幻視(hallucinate)する傾向(身体的経 験がないので) • 低情報の言語に弱くなる • 正確な計算を行うための数学スキル欠如 • 時間経過の概念に無意識
Toolformerの概要 • 言語モデルが必要に応じて,必要な 外部APIをコールし,結果を利用す る • QA,Wikipedia検索,計算機,翻 訳... • LLMの文脈理解能力を利用し,API利 用に特化したデータセットを作成. そのデータセットでLLMをfinetuneす る. • 6.7Bの訓練済みGPT-Jを利用し,ゼロ ショットの高精度を達成
全体の流れ(データセット作成) • サンプルテキスト:Pittsburgh is also known as the Steel City • Xを順番に入力:”Pittsburgh is also known as”でAPIコール位置と判断 • API callの候補を出力:”What other name is Pittsburgh know by?” • API実行.結果をフィルタリング:”the Steel City” • 最終的なAPI callと結果をデータセットに組み込み
Sampling API Calls • 説明,例示つきプロンプト(右)とx を順番にLLMに入力 • LLMは次トークンがAPI call開始位置 <API>かどうかの予測確率を出力 • Joe Biden was born in <API> • 予測確率が閾値以上のtop k個の位置 をAPI位置として採用. • k個の位置全てにおいて,LLMからそ れぞれm個のAPI call候補をサンプリ ング,API実行 Inputにx,Ouput: 以降にx1~iのトーク ンを順番に足していく
Filtering the Model • API実行結果のフィルタリング • API call位置iから後続の単語の予測確率の 重みつきcross entropy lossを計算 • 重みはAPI call位置から遠くなるほど小 (5つ先で0の値) • API callなしと比べて, API call ciと結果ri をLLMに入力することで lossが小さくな ることを期待.
Fine-tuning the Model • 全てのAPIに対して前述の作業が終わった 後,結果(APIコールと実行結果)をデー タセットC*に組み込み,マージする. • C*でLLMをfinetuning. • C*にはモデルが将来のトークンを予測す る上で役に立つ位置に適切なAPIが挿入さ れている.結果,モデルは自身のフィー ドバックからいつ,どのようなAPIを呼ぶ かを学習する.
Inference • モデルがAPI callに対する応答を期待 することを示す「→」を生成したら, デコード中断 • API callを実行し,レスポンスを</API> を挿入して,後続のデコードを継続
使用したAPI • 使用したAPIの選定基準 • 入出力がテキスト形式 • 意図した使い方のデモが得られるもの
実験 • Finetuneに用いたデータセット • CCNet(webクロール) • モデル • GPT-J:通常のGPT-J • GPT-J + CC:CのデータセットでfinetuningしたGPT-J • Toolformer:API call用に拡張したデータセットC*でfinetuneしたGPT-J • Toolformer (disabled):API callのデコードを無効にしたToolformer • いずれのタスクもゼロショット
LAMA(Language Model Analysis) • 日付や場所などが欠落している文章を埋めるタスク
計算 • 電卓APIを利用しているToolformerが圧倒的
Question Answering
Temporal Datasets • “Cristiano Ronaldo plays for ___”(時間変化する事実) • “What day of the week was it 30 days ago?”:(今日の日付がわかる必要) • ただし,カレンダーAPIで今日の日付を取得し,その日付でQA APIをコールするのが理想 だが,1例に対して1APIコールしか許可していない(無限ループを避けるため
Scaling Law • GPT-2(124M, 355M, 775M, 1.6B)でも検証 • 大きいモデルほど有用(APIコールの使い方を学習している)
Limitations • 連鎖的なAPIの呼び出しはできない • あるAPIの結果を利用して,別のAPIをコールする,など • APIをインタラクティブには使えない • 検索エンジンの大量の結果をブラウズして,その結果から検索クエリを絞 り込むなど. • API callの判定が文章によってはセンシティブ • Toolformer自体はAPI call先のコストは全く気にしないやり方 • Call先でLLMが動いていたり
Toolformer zero • React app implementing OpenAI and Google APIs to re-create behavior of the toolformer paper.
まとめ • LLMの能力でアノテーションして,API callを実現する • 6.7BパラメータのGPT-Jモデルのゼロショット性能を大幅に向上(検証したタ スクではより大きなGPT-3モデルをも凌駕する性能 • プロンプトエンジニアリングが巧み • API連携は単に能力拡張だけでなく,特定のデータ基盤から情報とってくるシ ナリオなど実用面でかなり有用に感じる