Metaがツールの使い方を覚える言語モデルToolformerを開発
3つの要点
✔️ 大規模言語モデルはわずかな例示や指示だけから課題解決を行う驚くべき能力を持つ
✔️ 一方で、計算や事実チェックはより単純なツールの方が優れた性能を発揮する
✔️ 両者の長所を生かすため、ツールの呼び出し指示をテキスト化し外部ツールの使い方を自己学習する言語モデルToolformerを提案
Toolformer: Language Models Can Teach Themselves to Use Tools
written by Timo Schick, Jane Dwivedi-Yu, Roberto Dessì, Roberta Raileanu, Maria Lomeli, Luke Zettlemoyer, Nicola Cancedda, Thomas Scialom
(Submitted on 9 Feb 2023)
Comments: Published on arxiv.
Subjects: Computation and Language (cs.CL)
code:
本記事で使用している画像は論文中のもの、紹介スライドのもの、またはそれを参考に作成したものを使用しております。
はじめに
言語モデルは、あらゆる質問に対して、人間に違和感のない文章をよどみなく紡ぎ出します。しかし、事実にないことを言ったり、計算ミスをしたりするという批判をしばしば受けます。
これは言語モデルに限ったことでしょうか?
事実にないことを言ったり、計算ミスをしたりするのは、人間自身でしょう。
とはいえ、人間は事実が大切な場合や計算ミスをしてはいけない場合は、うろ覚えの知識や暗算に頼らずに、検索エンジンで調べたり、電卓で計算したりする点が言語モデルと違うといえると思います。
したがって、言語モデルであっても、自分の知識や能力だけに頼らず、検索エンジンや電卓などのツールを使いこなせると、より人間的なふるまいに近づくといえるでしょう。
今回解説する論文では、言語モデルが人間と同じようにツールを使いこなせるように、シンプルなAPI(Application Programmable Interface、他のツールを呼び出す窓口)を介して外部ツールの使い方を自己学習する手法Toolformerを提案しています。
提案手法では、どのAPIを呼び出すべきか、いつ呼び出すべきか、どのような引数を渡すべきか、そしてその結果をどのようにトークン予測(言語モデルが次の言葉を紡ぐこと)に最適に組み込むかを自己学習します。各APIに対して数回のデモンストレーションをするだけで、APIの使い方を学ぶことができます。APIを通じて呼び出されるツールには、計算機、Q&Aシステム、2つの異なる検索エンジン、翻訳システム、カレンダーなど、があります。
提案手法は、さまざまなタスクにおいてツールの使い方を学習する前と比べ性能を大幅に向上させました。比較的小さな言語モデルを用いても、ツールを使うことで、より大規模な言語モデルに匹敵する性能を発揮できることが分かりました。
APIを通じて言語モデルがツールの使い方を学習するために必要なこと
言語モデルがツールの使い方を覚えるには、どうすればよいでしょうか?
言語モデルが入出力できるのはテキストにすぎません。
したがって、ツールの使い方自体も、テキストとして表現する必要があります。
そこで、APIの呼び出しを次のようなテキストとして、表現します。
[APIの名前(APIへの入力)]->APIの出力
API呼び出しのテキストの具体例
では、テキストの具体例を図1に示します。
1番目の例は、質疑応答システムQAというAPIを使った例です。「The New England Journal of Medicineは登録商標で」、というトークン予測に続けて、質疑応答システムを呼び出しています。質疑応答システムに対して、The New England Journal of Medicineはどこの登録商標ですか?と尋ねています。その結果、質疑応答システムからMassachusetts Medical Societyという回答を得て、the MMSのものです、とトークン予測しています。
2番目の例は、電卓CalculatorというAPIを使った例です。「1400人の参加者のうち、400人(言い換えると」、というトークン予測に続けて、電卓を呼び出し、400/1400を入力し、0.29という計算結果を得ています。その計算結果を受けて、「29%)がテストに合格した」、とトークン予測しています。
3番目の例は、翻訳システムMTというAPIを使った例です。「その名前は"la tortuga"に由来します。スペイン語の」、というトークン予測に続けて、翻訳システムを呼び出し、tortugaを入力し、亀という翻訳結果を得ています。その翻訳結果を受けて、「亀です」、とトークン予測を続けています」
4番目の例は、Wikipedia検索WikiSearchというAPIを使った例です。「ブラウン法はカリフォルニア州の法律で」、という言葉に続けて、WikiSearchを呼び出しています。ブラウン法を検索して、「ラルフ・M・ブラウン法は、カリフォルニア州議会が制定した法律で、大衆が地方立法機関の会議に出席し、参加する権利を保証するものです。」という検索結果を得て、「大衆に開かれた会議を開催する市議会のような立法機関を必要とします」、とトークン予測しています。
このように、テキスト中に、[APIの名前(APIへの入力)]→APIの出力 を挿入することを覚えると、いろいろなツールを適切なタイミングで呼び出し、次の予測に反映することができます。
API呼び出しのテキスト付きデータセットの作成
言語モデルがAPI呼び出しを学ぶには、API呼び出しをテキストとして表現しなければならないことを先ほど説明しました。言い換えると、言語モデルがAPI呼び出しを学ぶには、API呼び出しテキストが適切なタイミングで挿入されたデータセットを作成する必要があります。そこで、提案手法では、このデータセットを言語モデルの文脈内学習と確率予測を用いて作成することを提案しています。
質疑応答システムのAPI呼び出しを例にしたデータセット作成の流れ
データセット作成の流れを図2に示します。まず、前提として、何らかの文章の集合があるとします。その文章を二分割します。この二分割した文章の間に挿入するAPI呼び出しのテキストを作っていきます。最初にAPI呼び出しを言語モデルからサンプルし、API呼び出しを実行します。その後、適切なAPI呼び出しを選別します。選別したAPI呼び出しテキストを元の文章に挿入します。これで、データセットの出来上がりです。
元の文章の具体例
具体的には、「ピッツバーグはこう知られている、鋼鉄の都市と」という文章があったとします。この文章を「ピッツバーグはこう知られている」と「鋼鉄の都市と」に分割します。
API呼び出しのサンプルの具体例
この間に、挿入する質疑応答システムのAPI呼び出しの入力として、「ピッツバーグは別名何と知られている?」、「どの国にピッツバーグはありますか?」をサンプルします。具体的には、次のようなプロンプトを言語モデルに与えます。
「あなたのタスクは質疑応答システムのAPI呼び出しをテキストに加えることです。質問はテキストを補完するのに役立つべきです。APIは"[QA(質問)]"と書くことで呼び出すことができ、ここで、”質問は、あなたがしたい質問です。 API呼び出しの例は以下です。入力:…、出力:…」
このように、役割を定義するロールプロンプティングと少数例を与えるフューショットプロンプティングで言語モデルにAPI呼び出しの入力を生成させています。
API呼び出しの実行の具体例
実際に質疑応答システムのAPI呼び出しに入力した時の出力として、それぞれ「鋼鉄の都市」、「合衆国」を得ます。
API呼び出しの選別と最適なAPI呼び出しの付与の具体例
API呼び出しを選別するため、”API呼び出しとその結果を追加した場合”と”そうでない場合”を比べます。
たとえば、APIへの入力とその出力である「ピッツバーグは別名何と知られている?鋼鉄の都市」という前置きをつけて、「ピッツバーグはこう知られている」と言語モデルに入力し、「鋼鉄の都市と」というトークン予測をする確率を計算します。ここでは、元の文章をある意味正解とみなしているので、APIへの入力とその出力を前置きにつけることで、「鋼鉄の都市と」というトークンが来る確率が高くなるほど、正しい予測ができるようになっていると判断できます。
ですので、この確率が”前置きをつけなかった場合”と比べてちゃんと向上するのであれば、APIを呼び出した意味があったということになります。ここでは、「ピッツバーグは別名何と知られている?鋼鉄の都市」と「どの国にピッツバーグはありますか?合衆国」という前置きを比べて、「ピッツバーグは別名何と知られている?鋼鉄の都市」を前置きした方が「鋼鉄の都市と」と予測する確率が高まるので、「ピッツバーグは別名何と知られている?鋼鉄の都市」というAPIの入出力が最適な”API呼び出しとその結果”だと判断されます。
したがって、どのAPIにどんな入力を行い、その入出力結果を文章のどこに挿入すると、この確率が最も高まったかを調べることで、最も適切なAPI呼び出しを選別することができます。最も適切なAPI呼び出しを元の文章に挿入した文章をデータセットに追加してゆけば、API呼び出しテキスト付きのデータセットが完成します。
作成したデータセットの学習(言語モデルのファインチューニング)
作成したデータセットは、言語モデルのファインチューニングに使われます。本論文には、ファインチューニングについて、「標準的な言語モデルの目的関数を使ってファインチューニングする」とサラッとしか説明が書いてありません。言語モデルのファインチューニングに使われる何らかの手法でデータセットを学習すればよく、そこに工夫は必要なさそうです。
本論文では、通常のデータセットによるファインチューニングの効果に加えて、ツールをいつ、どうやって使えばよいかを学習できることを追加で強調しています。とりあえずやっておいて損することはないと言いたいのだと思われます。
ファインチューニングした言語モデルによる推論
ファインチューニングした言語モデルで推論する際は、言語モデルが->を生成するまでは、通常通り、トークン予測させます。->が生成されたら、トークン生成を中断し、テキストから適切なAPI呼び出しを認識し、実際にAPIを呼び出しツールを実行します。”実行結果”と”]”を挿入し、トークン予測を再開します。
Toolformerの評価結果
提案手法のToolformerを評価した結果を図3に示します。
この評価では、LAMA、Math Benchmarks、QA Benchmarksという3つの問題で評価しています。ここでのLAMAは事実(日付や場所)が欠けた短い文章を補完するタスクです。Math Benchmarksは数学の問題です。QA Benchmarksは質問に対する回答の正確さを見る問題です。
今回の比較対象は、提案手法のToolformer、提案手法とベースモデルは同じであるがAPI呼び出しテキストのないデータセットでファインチューニングしたToolfomer (disabled)とGPT3です。Toolformerのベースモデルは、いずれもGPT3よりもパラメータサイズの小さいGPT-2(モデルパラメータ数の異なる複数バージョン用意)とGPT-Jです。
図3の横軸はモデルパラメータ数で、Toolformer, Toolformer (disabled)のモデルパラメータ数による違いを示しています。具体的には、124M, 355M, 775M、1.6B、6.7B(Bは10億、Mは100万の単位)です。ちなみに、GPT-3は175Bです。縦軸は言語モデルの性能で、大きいほど良いです。
GPT-3とToolformerの比較
LAMAにおいては、モデルパラメータ数が6.7Bのとき、Toolformerの性能が、GPT3の性能を上回ります。Math Benchmarksにおいては、モデルパラメータ数が1.6B以上で、GPT-3の性能を上回ります。これは細かい事実チェックや計算は大規模言語モデルが苦手しており、これらをツールで補ってあげるだけで、性能が上がることを示唆しています。
一方で、QA Benchmarksでは、ToolfomerはGPT-3に劣っています。本論文では、この理由について、今回ツールとして使った検索エンジンの性能が低く、与えられた質問に対して、適切な検索結果でないことがしばしばあったことが要因であると考察しています。
また、検索エンジンを使いこなす上で、検索エンジンとのインタラクションが必要だが、それが今回はできていないからだと、考察しています。つまり、ふつう人間は、検索エンジンを使うとき、検索エンジンの検索結果を踏まえて検索ワードを変えたり、検索結果の1番トップのページに適切な情報がなければ、2番目、3番目も順に確認します。こうしたやり取りができれば、GPT-3に匹敵する性能を出せた可能性があったと考察しています。
ToolformerとToolformer (disabled)の比較
LAMA、Math Benchmarks、QA Benchmarksにおいて、一貫してToolfomerがToolformer (disabled)と同等以上の性能を示しています。これは、API呼び出しテキストをデータセットに付与することの副作用がないこと、API呼び出しによって外部ツールを使うことの効果がちゃんとあることを示していると考えられると思います。また、モデルパラメータ数が124Mでは、性能差がありませんでした。あまりにもモデルパラメータ数が少ないと、そもそもツールを使いこなせないこと、もしくはツールの実行結果を理解できないことを示唆しています。
おわりに
今回は、API呼び出しテキスト付きのデータセットを言語モデル自体が持つ文脈内学習と確率予測を活用して作成し、言語モデルをファインチューニングすることで、API呼び出しを通じたツール活用ができると示されました。言語モデルがツールを活用できるようになった結果、より大規模な言語モデルと同等以上の性能を達成することができました。
一部、ツールを使っても大規模な言語モデルには性能が劣ってしまう結果も見られましたが、今回のツール活用は単純なもので、よりツールをうまく使う余地がまだまだあると本論文では考察されています。
また、今回の、何でもテキストにできれば、言語モデルは学習できるようになるという考え方は、非常に強力なもので、言語モデルの可能性をまだまだ感じさせるものでした。
今後の言語モデルによるツール活用研究のさらなる発展が非常に楽しみです。
この記事に関するカテゴリー