生成モデルについて

Gemini ファミリーのモデルなどの生成 AI モデルは、テキスト、画像、音声などのさまざまなタイプのデータ入力からコンテンツを作成できます。最も基本的なレベルでは、これらのモデルは高度なオートコンプリート アプリケーションのように動作します。入力テキスト(「馬を水に乗せる」など)を入力すると、生成モデルはトレーニング データから学習したパターンに基づいて、統計的に続く可能性が高い出力テキスト(「ただし飲ませることはできない」)を予測できます。生成モデルのこの基本的なプロパティは、さまざまなアプリケーションに使用できます。

  • 詩、短編小説、比喩、ブログ投稿など、創造的な文章を生成する
  • 構造化データを自由形式のテキストに変換する
  • 自由形式のテキストから情報を抽出して要約する
  • コードを生成
  • 言語間での翻訳

生成モデルを使用してこれらの機能を構築するために、機械学習(ML)の専門知識は必要ありません。大規模なデータセットの収集やモデルのトレーニングは必要ありません。最初のプロトタイプは、モデルに実行させたい操作を数文で説明することだけです。

テキストの入出力のみを処理する生成モデルは、大規模言語モデル(LLM)とも呼ばれます。Gemini ファミリーのモデルはテキストデータよりも多くのデータを処理でき、LLM の機能を実行できますが、より適切に「生成モデル」と呼ばれます。

サンプル アプリケーション

次の例は、生成モデルへの一般的なテキスト入力と生成モデルからの出力を示しています。

詩を生成

ユーザー入力: Write me a four-line poem about puppies and Android phones. Make sure it rhymes.

モデル出力:

Puppies are cute,
Android phones are neat,
They both bring joy,
And make life complete.

リストを生成する

ユーザー入力: Generate a bulleted list of items I need to pack for a three-day camping trip.

モデル出力:

*   Tent
*   Sleeping bag
*   Sleeping pad
*   Camp stove
*   Pots and pans
*   Utensils
*   Food
*   Water
*   First-aid kit
*   Sunscreen
*   Insect repellent
*   ...

適切な入力テキスト(プロンプトとも呼ばれます)を作成するだけで、生成モデルでこのような有用な動作を生成できます。生成モデルが必要なことを実行するための適切な言い回しを見つける技術と科学は、プロンプト設計と呼ばれています。(「プロンプト エンジニアリング」または単に「プロンプト」とも呼ばれます)。

プロンプト設計入門

前のセクションでは、「詩を書いてください」などの指示を含むプロンプトの例をいくつか示しました。この種の命令は、特定のタイプのタスクには適している可能性があります。ただし、他のアプリでは、少数ショット プロンプトと呼ばれる別のプロンプト手法のほうが適している可能性があります。大規模言語モデルはテキストデータのパターンを認識して複製する能力が非常に高いという事実を活かす少数ショット プロンプトです。考え方としては、完成のために学習したテキスト パターンを生成モデルに送信します。たとえば、国名を入力として受け取り、その首都を出力するアプリケーションを作成するとします。そのために設計されたテキスト プロンプトは次のようになります。

Italy : Rome
France : Paris
Germany :

このプロンプトでは、パターン [country] : [capital] を設定します。このプロンプトを大規模言語モデルに送信すると、パターンがオートコンプリートされて、次のような結果が返されます。

     Berlin
Turkey : Ankara
Greece : Athens

このモデルのレスポンスは少し奇妙に見えるかもしれません。このモデルは、ドイツの首都(手書きプロンプトの最後の国)だけでなく、追加の国と資本のペアの完全なリストも返しました。生成モデルが「パターンを継続する」からです。入力した国の首都(「Germany : Berlin」)を示す関数を作成する場合、モデルが「Berlin」の後に生成するテキストはあまり重要ではないでしょう。アプリケーション設計者なら 無関係な例は切り捨てたほうがよいでしょうさらに、ドイツが固定文字列ではなく、エンドユーザーが提供する変数になるように、入力をパラメータ化することをおすすめします。

Italy : Rome
France : Paris
<user input here> :

国の首都を生成するための少数ショット プロンプトを作成しました。

この少数ショット プロンプト テンプレートに従うと、多くのタスクを実行できます。Python を JavaScript に変換する、少し異なる形式のプロンプトの例を次に示します。

Convert Python to JavaScript.
Python: print("hello world")
JavaScript: console.log("hello world")
Python: for x in range(0, 100):
JavaScript: for(var i = 0; i < 100; i++) {
Python: ${USER INPUT HERE}
JavaScript:

または、この「逆辞書」プロンプトを使用します。定義を指定すると、その定義に適合する単語が返されます。

Given a definition, return the word it defines.
Definition: When you're happy that other people are also sad.
Word: schadenfreude
Definition: existing purely in the mind, but not in physical reality
Word: abstract
Definition: ${USER INPUT HERE}
Word:

これらの少数ショット プロンプトの正確なパターンは、若干異なることにお気づきかもしれません。独自のプロンプトを作成する際には、サンプルを含めるだけでなく、プロンプトで指示を指定することも検討してください。これは、インテントをモデルに伝えるのに役立ちます。

プロンプトと従来のソフトウェア開発

慎重に作成された仕様に合わせて設計された従来のソフトウェアとは異なり、生成モデルの動作はモデル トレーナーに対してもほとんど不透明です。そのため、特定のモデルに最適なプロンプト構造のタイプを事前に予測できない場合があります。さらに、生成モデルの動作の大部分はトレーニング データによって決まります。また、新しいデータセットでモデルを継続的にチューニングするため、モデルが変更されると、最適なプロンプト構造を意図せず変更してしまうことがあります。パートナー様にとってのメリット試行錯誤を繰り返す。さまざまなプロンプト形式を試してください。

モデル パラメータ

モデルに送信するすべてのプロンプトには、モデルがどのようにレスポンスを生成するかを制御するパラメータ値が含まれています。このモデルは、パラメータ値によって異なる結果を生成できます。最も一般的なモデル パラメータは次のとおりです。

  1. 最大出力トークン: レスポンスで生成できるトークンの最大数を指定します。トークンは約 4 文字です。100 トークンは約 60 ~ 80 語に相当します。

  2. 温度: トークン選択のランダム性の度合いを制御します。温度は、レスポンス生成時のサンプリングに使用されます。レスポンス生成は、topPtopK が適用された場合に発生します。温度は低いほど、確定的な応答や自由度の低い応答が求められるプロンプトに適しています。一方、温度が高いと、より多様で創造的な結果を導くことができます。温度 0 は決定論的であり、最も高い確率のレスポンスが常に選択されることを意味します。

  3. topK: topK パラメータは、モデルが出力用にトークンを選択する方法を変更します。topK が 1 の場合、選択されるトークンは、モデルの語彙内のすべてのトークンで最も確率の高いものであることを意味します(グリーディ デコードとも呼ばれます)。topK が 3 の場合、次のトークンは温度を使用して最も確率が高い上位 3 つから選択されます。トークン選択ステップごとに、最も高い確率を持つ topK トークンがサンプリングされます。トークンは topP に基づいてさらにフィルタリングされ、温度サンプリングを使用して最終的なトークンが選択されます。

  4. topP: topP パラメータは、モデルが出力用にトークンを選択する方法を変更します。トークンは、確率の合計が topP 値と等しくなるまで、確率の高いものから順に選択されます。たとえば、トークン A、B、C の確率が 0.3、0.2、0.1 で、topP 値が 0.5 の場合、モデルは温度を使用して A または B を次のトークンとして選択し、C を候補から除外します。topP のデフォルト値は 0.95 です。

  5. stop_sequences: 停止シーケンスを設定して、コンテンツの生成を停止するようにモデルに指示します。停止シーケンスは任意の文字シーケンスにできます。生成されるコンテンツに登場する可能性のある一連の文字は使用しないでください。

プロンプトの種類

プロンプトは、含まれるコンテキスト情報のレベルに応じて、大きく 3 つのタイプに分類されます。

ゼロショット プロンプト

これらのプロンプトには、モデルが複製する例が含まれていません。ゼロショット プロンプトは、基本的に、追加の例や情報なしでモデルがプロンプトを完了できることを示しています。これは モデルが妥当な回答を生成するために その既存の知識に依拠する必要があることを意味します

一般的に使用されるゼロショット プロンプト パターンは次のとおりです。

  • 手順に関するコンテンツ
<Overall instruction>
<Content to operate on>

例:

Summarize the following into two sentences at the third-grade level:

Hummingbirds are the smallest birds in the world, and they are also one of the
most fascinating. They are found in North and South America, and they are known
for their long, thin beaks and their ability to fly at high speeds.

Hummingbirds are made up of three main parts: the head, the body, and the tail.
The head is small and round, and it contains the eyes, the beak, and the brain.
The body is long and slender, and it contains the wings, the legs, and the
heart. The tail is long and forked, and it helps the hummingbird to balance
while it is flying.

Hummingbirds are also known for their coloration. They come in a variety of
colors, including green, blue, red, and purple. Some hummingbirds are even able
to change their color!

Hummingbirds are very active creatures. They spend most of their time flying,
and they are also very good at hovering. Hummingbirds need to eat a lot of food
in order to maintain their energy, and they often visit flowers to drink nectar.

Hummingbirds are amazing creatures. They are small, but they are also very
powerful. They are beautiful, and they are very important to the ecosystem.
  • 手順、内容、指示
<Overall instruction or context setting>
<Content to operate on>
<Final instruction>

例:

Here is some text I'd like you to summarize:

Hummingbirds are the smallest birds in the world, and they are also one of the
most fascinating. They are found in North and South America, and they are known
for their long, thin beaks and their ability to fly at high speeds. Hummingbirds
are made up of three main parts: the head, the body, and the tail. The head is
small and round, and it contains the eyes, the beak, and the brain. The body is
long and slender, and it contains the wings, the legs, and the heart. The tail
is long and forked, and it helps the hummingbird to balance while it is flying.
Hummingbirds are also known for their coloration. They come in a variety of
colors, including green, blue, red, and purple. Some hummingbirds are even able
to change their color! Hummingbirds are very active creatures. They spend most
of their time flying, and they are also very good at hovering. Hummingbirds need
to eat a lot of food in order to maintain their energy, and they often visit
flowers to drink nectar. Hummingbirds are amazing creatures. They are small, but
they are also very powerful. They are beautiful, and they are very important to
the ecosystem.

Summarize it in two sentences at the third-grade reading level.
  • 継続。場合によっては、指示なしでモデルにテキストを続行させることもできます。たとえば、以下に示すゼロショット プロンプトでは、モデルが指定された入力を続行することを想定しています。
Once upon a time, there was a little sparrow building a nest in a farmer's
barn. This sparrow

ゼロショット プロンプトを使用すると、詩、コード、スクリプト、楽曲、メール、手紙などのクリエイティブなテキスト形式を生成できます。

ワンショット プロンプト

これらのプロンプトは、パターンを複製して続行するための 1 つの例をモデルに提供します。これにより、モデルから予測可能なレスポンスを生成できます。

たとえば、次のような食べ物の組み合わせを生成できます。

Food: Apple
Pairs with: Cheese
Food: Pear
Pairs with:

少数ショット プロンプト

これらのプロンプトは、複製する複数の例をモデルに提供します。少数ショット プロンプトを使用すると、パターンに基づいてデータを合成するなどの複雑なタスクを実行できます。

プロンプトの例を次に示します。

Generate a grocery shopping list for a week for one person. Use the JSON format
given below.
{"item": "eggs", "quantity": "6"}
{"item": "bread", "quantity": "one loaf"}

生成モデルの仕組み

このセクションでは、「生成モデルのレスポンスにランダム性はあるか、それとも決定論的か」という問いに答えることを目的としています。

答え - どちらもイエスです。生成モデルにプロンプトを表示すると、テキスト レスポンスが 2 つのステージで生成されます。最初のステージでは、生成モデルが入力プロンプトを処理し、次に来る可能性が高いトークン(単語)の確率分布を生成します。たとえば、「The dog jumped over the ...」という入力テキストを入力した場合、生成モデルは次に続く可能性のある単語の配列を生成します。

[("fence", 0.77), ("ledge", 0.12), ("blanket", 0.03), ...]

このプロセスは決定論的です。生成モデルは、同じプロンプト テキストが入力されるたびに同じ分布を生成します。

第 2 ステージでは、生成モデルがいくつかのデコード戦略のいずれかを通じて、これらの分布を実際のテキスト レスポンスに変換します。単純なデコード戦略では、各時間ステップで最も確率の高いトークンが選択されます。このプロセスは常に決定論的です。ただし、モデルから返された分布に対してランダムにサンプリングすることでレスポンスを生成することもできます。このプロセスは確率論的(ランダム)になります。温度を設定することで、このデコード プロセスで許容されるランダム性の度合いを制御します。温度が 0 の場合は、最も可能性が高いトークンのみが選択され、ランダム性がないことを意味します。逆に、温度を高くすると、モデルによって選択されたトークンに高度なランダム性が生じるため、予期しない、意外なモデル レスポンスが発生します。

関連情報

  • プロンプトと生成モデルについて理解を深めたところで、Google AI Studio を使用して独自のプロンプトを作成してみましょう。
  • プロンプト作成のベスト プラクティスについては、プロンプトのガイドラインをご覧ください。