Few-shotプロンプティング / Few-shot Learning

「Few-shotプロンプティング / Few-shot Learning」

データ活用やDX成功に必要な考え方を、各種キーワードの解説で理解できる用語解説集です。
今回は、ChatGPTなど大規模言語モデルを用いた対話型AIの活用テクニックである「Few-shotプロンプティング / Few-shot Learning」を紹介します。

Few-shotプロンプティング / Few-shot Learningとは

Few-shotプロンプティングとは、ChatGPTなどの対話型のAIを活用する際に、入力(プロンプト)を与える際に入力と出力の例をいくつか与えることにより、より望んだ出力が得られるようにするプロンプトのテクニックです。Few-shot Learningとも呼ばれます。
再学習などを行うことなく、利用時に与えられたパラメータで挙動が変化する大規模言語モデルの従来にはない挙動であり、追加で学習を行うような、あるいは挙動の変更をガイドするような例をユーザが利用時に与えることができます。

どのようなテクニックか(利用例)

まず、Few-Shotプロンプティングを利用していない例を示します。Few-Shotプロンプティングの紹介では、ポジティブかネガティブかを判定させる例や、翻訳を例にした説明がよく使われるので、こちらでもその例を用いて説明します。

以下について、ポジティブかネガティブか中立かを判断してください:

今日は雨が降って微妙だ

中立です。

入力したテキストに対して、ポジティブかネガティブかを判断させています。アンケートの回答内容が好意的なのか批判的なのかを判断するようなタスクで利用することができる能力です。ChatGPTはこんなこともできてしまいます。

ただし、判断能力が高くて回答が精密かというとそうではなく、ChatGPTは驚くほど多くのことができる一方で、怪しい回答をすることもよくあります。この例でもネガティブと答えてほしいところではないでしょうか。「今日は微妙な日だ」と言ったら「良い日じゃない」と遠回しに言っていることが多いでしょうから。

しかしながら「微妙だ」という表現は、明確にポジティブと言っているわけでもネガティブと言っているわけでもないですから、こういう場合には中立と回答してほしい場合もあると思います。つまり、絶対的正解を回答させるというより、自分の都合にあわせて判断してもらうことが望まれる場合があります。

「例」を用いてChatGPTに回答を調整してもらう

つまり、ChatGPTを実用的に利用するためには、用途にあわせて回答を調整してもらう必要があります。そこで使えるのがFew-Shotプロンプティングです。

以下について、ポジティブかネガティブか中立かを判断してください:

今日は晴れていて最高だ // ポジティブ

今日は雨が降って微妙だ // ネガティブ

今日は特に感想がない日だ // 中立

この料理は微妙だ //

ネガティブです。

回答をお願いするに際して、三つユーザが「回答例」を与えています。そしてそれにより、「微妙だ」という表現をネガティブ判定してほしいことをどうやら学習してくれたような挙動に変化しています。

Zero-shot / Few-shot / One-shot

特に例を与えずに普通に回答してもらうような通常の使い方のことを「Zero-shotプロンプティング」と呼ぶことがあります。上記のように、いくつか回答を示して使うやり方を「Few-shotプロンプティング」とか「Few-shot Learning」と呼ばれることがあります。さらに区別して「一つだけ」例を示す使い方を「One-shotプロンプティング」と呼ぶことがあります。

Few-shotプロンプティングの活用方法

いくつか使い方が考えられます。まずは、正しく判断できない入力に対して、入力データと出力例を追加の学習データとして与えるような使い方です。つまり、間違いをなおして補うような使い方ができます。

もう一つは、利用用途にあわせて回答の傾向や基準を変えて調整する使い方です。上記の例では、同じテキストについて、ネガティブと回答する判断基準を変更したような挙動をしているとも取れます。

また、書き方は上記で例として挙げた書き方を必ず守る必要はありません。様々な書き方をしても例を与えたのだと認識してくれますし、どのような書き方が良いのかは日々提案されており、あるいはChatGPTのバージョンが上がると望ましい書き方も変わるはずです。英語での説明において散見される書き方を使いました。

Few-shotプロンプティングの挙動が画期的である理由

なるほど、ちょっと面白いテクニックだな、くらいに思った人もいるかもしれません。しかしこのような使い方ができることは、従来の機械学習ではかった挙動で画期的なことなのです。

従来の常識では、機械学習は事前にデータを用意して学習させて学習済みモデルを作り、利用する時には基本的にはただ利用するだけでした。ちょっと挙動を変えたいと思ったなら、学習する作業に戻って追加データや学習の基準を変えてやり直してモデルを作り直す必要がありました。

ところがChatGPTないしは大規模言語モデルでは、利用時に随時、要望にあわせて追加のデータを与えて挙動を変えるようなことができてしまうのです。

ファインチューニングや転移学習との違い

従来、用途にあわせた調整を行いたい場合にはファインチューニングや転移学習と呼ばれる方法での対応がなされていました。

一般的な用途にあわせて一般的なデータを用いて学習済みモデルを作ります。その後、用途にあわせた追加データを用意し、学習済みモデルに追加で学習することで用途にあわせて調整した学習済みモデルを作る取り組みがなされていました。

ファインチューニングを行えば、追加の例を与えて挙動を変更することは出来たのですが、そのためには、学習済みモデルをコピーして再学習する手間のかかる作業が必要になりますし、用途がふえるごとに個別に学習済みモデルを用意することになります。

Few-shotプロンプティングでは、モデル自体は変更されることがありません。同じ学習済みモデルのまま、新しい問題が解けるようになってしまうのです。追加で学習するコストがかからず、高いスキルのエンジニアに追加学習の作業をしてもらう必要もありません。皆で同じ学習済みモデルを利用しつつ、ニーズに合わせて追加学習を行ったかのような挙動の調整を、手軽に随時行えるわけです。恐るべき利便性の向上がなされています。

ただし、Few-shotプロンプティングでは用途に適した挙動の調整ができない場合には、ファインチューニングの利用(やゼロからの再学習)も検討すべきです。それぞれの手法による再学習において得意なことも異なるため、状況やニーズに合わせてうまく組み合わせて利用することができるはずです。

生成AI/ChatGPTに関係するキーワード(さらに理解するために)

用語集 コラム一覧

英数字・記号

あ行

か行

さ行

た行

な行

は行

ま行

や行

ら行

わ行

» データ活用コラム一覧

Recommended Content

Related Content

Return to column list