生成モデルについて

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 が固定文字列ではなく、エンドユーザーが指定する変数になるようにします。

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. Temperature: 温度は、トークン選択のランダム性の度合いを制御します。温度は、レスポンス生成時のサンプリングに使用されます。レスポンス生成は、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 つのタイプに分類されます。

ゼロショット プロンプト

これらのプロンプトには、モデルを複製する例は含まれません。ゼロショット プロンプトは、追加の例や情報なしでプロンプトを完了するモデルの能力を示すものです。つまり、モデルは既存の知識に依存して、もっともらしい回答を生成する必要があります。

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

  • Instruction-content
<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.
  • Instruction-content-instruction
<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

ゼロショット プロンプトを使用して、詩、コード、スクリプト、音楽作品、メール、手紙など、さまざまな形式のクリエイティブなテキストを生成します。

ワンショット プロンプト

これらのプロンプトにより、モデルに単一の例が提供され、パターンが複製されて継続されます。これにより、モデルから予測可能なレスポンスを生成できます。

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

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 を使用して独自のプロンプトを作成してみましょう。
  • プロンプトの作成に関するベスト プラクティスについては、プロンプトのガイドラインをご覧ください。