Gemini : 生成モデルについて
作成 : クラスキャット セールスインフォメーション
作成日時 : 04/15/2024
* 本ページは、ai.google.dev の以下のページを独自に翻訳して、適宜、補足説明したものです :
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Website: www.classcat.com ; ClassCatJP
Gemini : 生成モデルについて
Gemini ファミリーのモデルのような生成人工知能 (AI) モデルは、テキスト、画像や音声を含む様々なタイプのデータ入力からコンテンツを作成することができます。最も基本的なレベルでは、これらのモデルは洗練されたオートコンプリート (自動補完) アプリケーションのように動作します。入力テキスト (“You can lead a horse to water,”) が与えられたとき、生成モデルは訓練データから学習したパターンに基づいて、統計的に続く可能性が高い出力テキスト (“but you can’t make it drink”) を予測できます。生成モデルのこの基本的な特性を様々なアプリケーションに利用できます :
- 詩、短編小説、比喩、そしてブログ投稿のような創造的な文章を生成する
- 構造化データを自由形式テキストに変換する
- 自由形式テキストから情報を抽出して要約する
- コードを生成する
- 言語間の翻訳
生成モデルを使用してこれらの機能を構築することはどのような機械学習 (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
* ...
以下は日本語例です :
ユーザ入力: 「3 日間のキャンプ旅行に必要なアイテムの箇条書きリストを作成します。」
モデル出力:
### キャンプ用品チェックリスト:
* **寝具**
* テント
* 寝袋
* 寝袋用マット
* 枕
* **シェルター**
* タープ(雨の場合)
* グランドシート
* キャンプ用椅子
* ロープ
* **料理**
* ストーブ
* 燃料
* 鍋とフライパン
* 調理器具
* 食器とカトラリー
* クーラーボックス
* 水
* 食料
* **衣類**
* ハイキングシューズ
* 靴下
* 下着
* パンツ
* シャツ
* セーターまたはジャケット
* レインギア
* 帽子
* **必需品**
* ヘッドランプまたは懐中電灯
* 応急処置キット
* 虫よけ
* 日焼け止め
* トイレタリー
* 手を拭くタオル
* トイレットペーパー
* ゴミ袋
* **その他**
* カメラ
* 本
* 携帯電話充電器
* 現金
プロンプト と呼ばれる、適切な入力テキストを作成するだけで、生成モデルにこのようなあらゆる種類の有用な動作を生成させることができます。生成モデルに望むことを実行させるために適切な表現 (wording) を見出す技術 (art) と科学は プロンプト設計 と呼ばれます (「プロンプトエンジニアリング」、あるいは単に「プロンプティング」とも呼ばれます)。
プロンプト設計 101
前のセクションでは、「詩を書いてください」のような、指示を含むプロンプトの幾つかの例を示しました。この種類の指示はあるタイプのタスクに対しては上手く動作する可能性があります。けれども、他のアプリケーションについては、few-ショット・プロンプティング と呼ばれる別のプロンプティング技術がよりよく動作する可能性があります。few-ショット・プロンプトは、大規模言語モデルがテキストデータでパターンを認識して複製することに素晴らしく優れているという事実を利用しています。このアイデアは、生成モデルが補完するために学習すべきテキストパターンを送ることです。例えば、国名を入力として受け取りその首都を出力するアプリケーションを構築したいとします。これがそれを行なうように設計されたテキストプロンプトです :
Italy : Rome
France : Paris
Germany :
このプロンプトでは、[country] : [capital] というパターンを規定しています。このプロンプトを大規模言語モデルに送信した場合、パターンを自動コンプリートしてこのように返すでしょう :
Berlin
Turkey : Ankara
Greece : Athens
このモデル応答は少し奇妙に見えるかもしれません。モデルはドイツの首都 (手書きのプロンプトの最後の国) だけではなく、追加の国と首都のペアのリスト全体を返しました。これは生成モデルが「パターンの継続」をしているためです。あなたが試していることのすべてが入力した国の首都 (“Germany : Berlin”) を伝える関数を構築することならば、モデルが「ベルリン」の後に生成する任意のテキストは実際には関心がないかもしれません。実際には、アプリケーション設計者としては、これらの無関係なサンプルは切り捨てたいはずです。更に、ドイツが固定文字列ではなくエンドユーザが供給する変数であるように、たぶん入力を パラメータ化 したいでしょう。
※ 訳註: Gemini 1.5 Pro モデルではこの現象は発生しませんでした。つまり “Berlin” だけを返しました。
Italy : Rome
France : Paris
<user input here> :
国の首都を生成するために few-ショット・プロンプトを作成しました。
この few-ショット・プロンプト テンプレートに従うことで、非常に多くのタスクを遂行することができます。ここに、Python を JavaScript に変換する少し異なる形式の few-shot プロンプトがあります :
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:
※ 訳註: 以下は Gemini 1.5 pro の出力です :
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: JavaScript: console.log("${USER INPUT HERE}")
あるいは、この「逆 (reverse) 辞書」プロンプトを使用します。定義が与えられたとき、その定義に当てはまる単語を返します :
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:
※ 訳註: 以下は日本語も交えた出力例です :
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: 他人の不幸を喜ぶ気持ち
Word: シャーデンフロイデ
これらの few-ショット・プロンプトの正確なパターンはわずかに異なることに気づいたかもしれません。サンプルを含めることに加えて、プロンプトで指示を提供することは独自のプロンプトを作成するときに考慮すべき追加のストラテジーです、それは貴方の意図をモデルに伝えるのに役立つからです。
プロンプティング vs 従来のソフトウェア開発
注意深く書かれた仕様に対して設計された従来のソフトウェアとは違い、生成モデルの動作はモデルトレーナーにとってさえも非常に曖昧・不透明 (opaque) です。そのため、どのようなタイプのプロンプト構造が特定のモデルに対して最善に動作するかを前もって予測することはできない場合が多いです。更に、生成モデルの動作は訓練データにより大部分が決定され、そしてモデルは新しいデータセットで継続的に調整されますので、モデルの変更はどのプロンプト構造が最善に動作するかを気付かずに変化させるのに十分な場合があります。これは貴方に対して何を意味するのでしょう? 実験です! 様々ななプロンプト形式を試してください。
モデルパラメータ
モデルに送信するすべてのプロンプトは、モデルがどのように応答を生成するか制御するパラメータ値を含みます。モデルは異なるパラメータ値に対して異なる結果を生成することができます。最も一般的なモデルパラメータは以下のようなものです :
- 最大出力トークン (Max output tokens) : 応答で生成できる最大トークン数を指定します。 トークンは約 4 文字です。100 トークンはおよそ 60-80 単語に相当します。
- Temperature (温度) : temperature はトークン選択におけるランダム性の程度・度合いを制御します。temperature は応答生成の際のサンプリングのために使用され、これは topP や topK が適用される場合に発生します。低い temperature はより決定的で自由度の低い応答を必要とするプロンプトのために適しており、一方で高い temperature はより多様性があり創造的な結果につながります。0 の temperature は決定論的で、最も高い確率の応答が常に選択されることを意味します。
- topK : topK パラメータはモデルが出力用にトークンをどのように選択するかを変更します。1 の topK は、選択されたトークンがモデルの語彙のすべてのトークンの中で最も確率が高い (greedy デコーディングとも呼ばれます) ことを意味し、3 の topK は、次のトークンが temperature を使用して 3 つの最も確率の高いものの中から選択されることを意味します。各トークン選択ステップについて、最も高い確率をもつ topK トークンがサンプリングされます。そしてトークンは更に topP に基づいてフィルタリングされ、最終的なトークンは temperature サンプリングを使用して選択されます。
- topP : topP パラメータはモデルが出力用トークンを選択する方法を変更します。トークンは、それらの確率の合計が topP 値に等しくなるまで、最も高い確率のものから低いものへと選択されます。例えば、トークン A, B と C が確率 0.3, 0.2 と 0.1 で topP 値が 0.5 である場合、モデルは temperature を使用して次のトークンとして A か B のいずれかを選択し、C は候補から除外します。デフォルトの topP 値は 0.95 です。
- stop_sequences : モデルにコンテンツの生成を停止することを知らせる停止シークエンスを設定します。停止シークエンスはどのような文字のシークエンスでの構いません。生成されるコンテンツで出現する可能性がある文字のシークエンスの使用は避けるようにしてください。
プロンプトのタイプ
含まれるコンテキストの情報のレベルに依存して、プロンプトは大きく 3 つのタイプに分類されます。
ゼロショット・プロンプト
これらのプロンプトはモデルが複製できるサンプルを含みません。ゼロショット・プロンプトは、追加サンプルや情報なしにプロンプトを補完するモデルの能力を基本的には示します。これは、モデルがもっともらしい回答を生成するために事前の既存の知識に依存する必要があることを意味しています。
いくつかの一般に使用されるゼロショット・プロンプトのパターンは :
- 指示 (Instruction) - コンテンツ
<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.
- 継続 (Continuation) 。指示なしにモデルにテキストを継続させることができる場合もあります。例えば、ここにゼロショット・プロンプトがあり、そこではモデルは提供された入力を続けるように目的化されます :
Food: Apple Pairs with: Cheese Food: Pear Pairs with:
ゼロショット・プロンプトを使用して、詩、コード、スクリプト、楽曲、電子メールや手紙のような創造的なテキスト形式を生成できます。
ワンショット・プロンプト
これらのプロンプトは、パターンを複製して継続するためにモデルに単一のプロンプトを提供します。これはモデルから予測可能な応答を生成することを可能にします。
例えば、以下のような食品のペアリングを生成できます :
Food: Apple
Pairs with: Cheese
Food: Pear
Pairs with:
Few-ショット・プロンプト
これらのプロンプトはモデルに複製する複数のサンプルを提供します。few-ショット・プロンプトを使用して、パターンに基づいてデータを合成するような、複雑なタスクを補完できます。
サンプル・プロンプトは次のようなものです :
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"}
以上