AIが日常生活に浸透してきていますが、その性能を引き出すために必要なのが【プロンプトエンジニアリング】。
プロンプトエンジニアリングとは、生成AIに対して高品質のコンテンツが生成されるように命令を出す技術を指します。
本記事ではプロンプトエンジニアリングを仕事、生活に役立てるためのテクニックなどを紹介していきます。
○ プロンプトエンジニアとは
○ LLMで発達してきたpromptエンジニア
○ prompt engineerになるには
◇ 基礎的なプロンプトテクニック
○ zero-Shotプロンプティング
○ Few-Shot prompting
○ Chain of Thought prompting
◇ advanced prompt Techniques
○ Self-Consistency(自己整合性)
○ 知識生成プロンプティング
○ 自動プロンプトエンジニア
プロンプトエンジニアを知る
プロンプトエンジニアとは
生成AIを活用して、質問や課題に対する答えや解決策を提示するのエンジニアの仕事である【プロンプトエンジニア】に注目が集まっています。
生成AIとは、テキストや画像などのコンテンツを自動的に生成するAIのこと。
そしてそれら生成AIを用いたプロンプトエンジニアの主な仕事内容は、次の3つになります。
□ 生成AIに対する入力データ(プロンプト)の設計や作成:
プロンプトとは、生成AIに与える質問や課題のことです。プロンプトエンジニアは、生成AIが人間がイメージしているコンテンツを適切に回答できるように、プロンプトの内容や形式を工夫します。
□ 生成AIの出力データ(レスポンス)の評価や改善:
レスポンスとは、生成AIがプロンプトに対して返す答えや解決策のことです。プロンプトエンジニアは、レスポンスが正確で有用であるかどうかをチェックし、必要に応じてプロンプトや生成AIのパラメータを調整します。
□ 生成AIの応用や活用:
プロンプトエンジニアは、生成AIを様々な分野や目的に応用し、新しい価値を創出します。例えば、文章作成や翻訳、画像生成や音声合成などのタスクに生成AIを利用することができます。
さて、そんなプロンプトエンジニアの仕事ですが、その需要の伸びはLLMと呼ばれる知識モデルと共に進展してきたという経緯があります。
LLMで発達してきたpromptエンジニア
LLMとはLarge Language Modelの略で、大量のテキストデータで学習した言語を表現するモデルのこと。
またLLMは、自然言語処理の様々なタスクに応用できる汎用的なモデルを指します。
加えてLLMは設定条件があり、LLMを使用する際に指定するパラメータやオプションが存在します。
なのでLLMの設定によって、LLMの性能や出力が変わります。
LLMの設定には、次のようなものがあります。
□ モデルの種類:
LLMには、BERTやGPT-3など、様々なモデルがあります。モデルの種類によって、LLMの構造や学習方法が異なります。
□ モデルのサイズ:
LLMには、パラメータ数やレイヤー数などで表されるサイズがあります。モデルのサイズによって、LLMの表現力や計算量が異なります。
□ 温度:
温度とは、LLMが出力する文章のランダム性を指定するパラメータです。温度が高いほど、LLMは予測しにくい単語を選択しやすくなります。
□トップkサンプリング:
トップkサンプリングとは、LLMが出力する単語を、確率的に上位k個の候補から選択する方法です。トップkサンプリングによって、LLMは多様性の高い文章を生成できます。
□トップpサンプリング:
トップpサンプリングとは、LLMが出力する単語を、確率的に累積確率がp以下となる候補から選択する方法です。トップpサンプリングによって、LLMは品質と多様性のバランスを取った文章を生成できます。
プロンプトエンジニアリングでは、これらモデルそしてサンプリング手法を用いてAI学習やアウトプットへ繋げていきます。
さて、そんなprompt engneerですが、その仕事はどんな役割を果たすのでしょうか。
prompt engineerの仕事とは
前述したようにプロンプトエンジニアとは、テキストや画像などを生成するAIに対して、高品質のコンテンツが生成されるように命令を出すのが主な仕事。
そしてプロンプトエンジニアは、AIに対する入力データ【プロンプト】の設計や作成を行う専門家です。
プロンプトエンジニアは、ChatGPTやMidjourneyなどのジェネレーティブAIを使いこなすために必要な職種です。
昨今、多数出て来ているジェネレーティブAIとは、大量のデータから学習した知識やパターンをもとに、新しいデータを生成するAIを指します。
なのでプロンプトエンジニアは、AIの生成能力を最大限に引き出すために、AIの仕組みや特徴を理解し、目的に応じた最適なプロンプトを作成するスキルが求められます。
プロンプトエンジニアは、AI領域で話題の新しい職種であり、これからますます需要の伸びていく仕事であるともいえます。
基礎的なプロンプトテクニック
zero-Shotプロンプティング
Zero-Shotプロンプティングとは、予め情報を伝えずに質問を直接提示するプロンプトを指します。
例えば、「日本の首都はどこですか?」という質問がZero-Shotプロンプティングです。
Zero-Shotプロンプティングの利点は、柔軟性と汎用性にあります。
柔軟性とは、様々なタスクやドメインに対応できることです。汎用性とは、特定の言語モデルやデータセットに依存しないことです。
またZero-Shotプロンプティングの欠点は、精度と安定性になるかもしれません。
精度とは、正しい回答を得られる確率のことです。安定性とは、同じ質問に対して一貫した回答を得られることです。
加えてZero-Shotプロンプティングは、大量のデータで学習し、指示通りに機能するように調整された言語モデルが必要です。
ChatGPTやMidjourneyなどのジェネレーティブAIサービスは、Zero-Shotプロンプティングを使ってコンテンツを生成することができるのでテクニックとして覚えておきましょう。
Few-Shot prompting
Few-Shotプロンプティングとは、例を提示することで、タスクを実行するための方法を学習させるプロンプトを指します。
例えば、「日本の首都はどこですか?」という質問に対して、「アメリカの首都はワシントンD.C.です。」という例を与えることがFew-Shotプロンプティングになります。
Few-Shotプロンプティングの利点は、精度と安定性にあるといえます。
精度とは、正しい回答を得られる確率のことです。安定性とは、同じ質問に対して一貫した回答を得られることです。
いっぽうFew-Shotプロンプティングの欠点は、柔軟性と汎用性にあります。
柔軟性とは、様々なタスクやドメインに対応できることです。汎用性とは、特定の言語モデルやデータセットに依存しないことです。
Few-Shotプロンプティングは、複雑なタスクではZero-Shotプロンプティングでは不十分な場合に有効です。
ほかにもChain-of-Thoughtプロンプティングという手法があり、中間的な推論過程をモデルに与えてより複雑な推論を可能とする技術もあります。
Chain of Thought prompting
Chain-of-Thoughtプロンプティングとは、中間の推論ステップを通じて情報を逐次的に処理することで複雑な推論を可能にするテクニックを指します。
このChain-of-Thoughtプロンプティングを使うことで、生成AIに対して思考の連鎖を与えることで、よりよい応答を引き出すことが可能です。³⁴
たとえばChain-of-Thoughtプロンプティングの記載すると以下の通りになります。
Q: なぜ日本は四季があるのですか?
A: 日本は四季があるのですか?
→日本は北半球に位置しています
→北半球では地球の傾きによって太陽の高度が変わります
→太陽の高度が変わると気温や降水量が変わります
→気温や降水量が変わると季節が変わります
→日本は四季があるのです。
このように逐次的、そして思考連鎖的な応答を試みていくことで、その精度もまた増していくことをプロンプトテクニックのひとつとして覚えておきましょう。
advanced prompt Techniques
Self-Consistency(自己整合性)
Self-Consistencyとは、プロンプトエンジニアリングの高度な技術の一つで、思考連鎖プロンプトで使用される複合技術として置き換えることを目的としています。
思考連鎖プロンプトとは、AIモデルに対して複数の質問や命題を入力し、それらに対する答えや推論を出力させるテキストです。
例えば「私が6歳の時、妹は私の半分の歳でした。今私は70歳です。妹の歳は何歳ですか?」などと応答を指します。
またここでいう復号技術とは、AIモデルが出力する各単語を最も確率の高いものにする方法です。
しかし、この方法では、出力が入力と矛盾したり、論理的に不整合になったりすることもあります。
Self-Consistencyとは、AIモデルが出力する各単語を最も確率の高いものにするだけでなく、入力や既に出力した内容と整合性があるようにする方法です。
そうすることにより、出力が正確で信頼性の高いものになります。
知識生成プロンプティング
知識生成プロンプティングとは、プロンプトの一部に使用する知識や情報を組み込むことを指します。
そして知識生成プロンプティングは、ChatGPTなどの生成AIにおいて、精度の良い出力を行うためのテクニックの一つとして存在しています。
また、知識生成プロンプティングは、大規模な言語モデル(LLM)の能力と限界をより良く理解するために必要なスキルともいえます。
そんな知識生成プロンプティングの例としては、以下のようなものがあります。
□ プロンプトに事実や定義を含める
□ プロンプトに関連するキーワードやエンティティを含める
□ プロンプトに文脈や背景情報を含める
アドバンスドプロンプトテクニックとして、ぜひ覚えておきましょう。
自動プロンプトエンジニア
自動プロンプトエンジニアとは、プロンプトエンジニアリング自体を自動化する技術のことです。
そんな自動プロンプトエンジニアは、生成AIの出力から、入力を予測し、スコアを計算し、最適な入力を決めることができます。⁵
そして自動プロンプトエンジニアは、生成AIの性能を向上させるための重要な技術のひとつ。
また、自動プロンプトエンジニアは最近注目されているChatGPT、MidjourneyなどのAIサービスに応用されています。
これからもプロンプトエンジニアリングの自動化がどこまで進むのか。その技術革新に注目していきましょう。
プロンプトエンジニアリングを身に付けて、これからのAI社会に役立てよう。