データ活用やDXがどんどん解る用語集
Generated Knowledgeプロンプティング(知識生成プロンプティング)
「Generated Knowledgeプロンプティング(知識生成プロンプティング)」
データ活用やDX成功に必要な考え方を、各種キーワードの解説で理解できる用語解説集です。
今回は、ChatGPTなどの大規模言語モデルを用いた対話型AIの活用テクニックである「Generated Knowledgeプロンプティング」を紹介します。
Generated Knowledgeプロンプティング(知識生成プロンプティング)とは
Generated Knowledgeプロンプティング(知識生成プロンプティング)とは、ChatGPTなど大規模言語モデル自身に生成させた知識を用いて、出力を改善するテクニックです。適切な補助情報を与えた方がChatGPTはより適切な出力をすることが多くなりますが、そのような補助情報の生成もChatGPT自身に行わせるテクニックです。
例えば、そのまま質問をした場合には知識がなく間違った回答を返してしまう場合に、質問をする前にChatGPT自身に質問に関連した知識を出力させ、それにより出力を改善するテクニックです。
目次
知識不足で回答を間違えているような挙動(だが知っている)
最近のChatGPTはどんどん賢くなっているので、あからさまな間違いを答えるようなことはかなり減りました。しかし初期には、明らかな間違いを自信満々に答えるような(ハルシネーション)問題はおなじみのものでした。
初期ハルシネーションのイメージ(著者が当時風に創作したもの):
「兼六園」について教えてください。
兼六園は、日本の石川県金沢市に位置する日本庭園で、江戸時代に加賀藩の藩主であった織田信長によって作られました。今では名古屋城公園の一部として一般に公開されており、金沢を代表する観光スポットとして多くの観光客が訪れています。
春は花見の名所として、夏はバーベキュー、秋はミカン狩り、冬は雪山登山やアイスホッケーなど四季折々のレジャーで金沢市民に親しまれています。
ここまであからさまに間違っている回答は最近では随分減りましたが、このような挙動は今でもなくなったわけではありません。回答の一部にありもしないことや筋が通らないことが紛れ込んでいたりしないのかは、今でも利用上気をつけなければいけないこととされます。
上記のような例はまだしも愛嬌もあり、ある意味楽しいくらいの感じがありますが、明確に正解のあることを堂々と間違えてしまうこともありました。例えば、こんな感じです。
埼玉県と神奈川県、どちらの面積が広いですか?
埼玉県です。
神奈川の面積の方が広いので間違いですが、このようなことも起こりがちでした。しかも「知らないから間違えてもしょうがない」のではなく、個別に聞くと知っていることだったりします。
埼玉県の面積について教えてください。
埼玉県の面積は約 3,797 平方キロメートルです。
神奈川県の面積について教えてください。
神奈川県の面積は約 4,165 平方キロメートルです。
つまり、「そもそも知らないから間違えている」とは限らないのですね。実際、上記のような回答をさせてから引き続いて聞いてみると、正しい回答をすることもありました。
上記を踏まえて、埼玉県と神奈川県、どちらの面積が広いですか?
神奈川県です。
知識生成プロンプティング(の考え方)
ChatGPTに「知っていること」を聞いているのに、なぜ間違えてしまうのでしょうか。理不尽にすら思える挙動ですが、ChatGPT(大規模言語モデル)は「この次に出力されそうな単語は何か」を予測して出力しているだけで、論理的に思考しているわけではないので、このような不思議な挙動が発生してしまうことがどうもあります。
そこで、知識生成プロンプティング(Generated Knowledgeプロンプティング)では、「ChatGPTに知識を生成させる」(あるいは回答に必要だと思われる知識を引き出す)フェーズと、その知識を踏まえて「答えて欲しいことを出力させるフェーズ」に分離することで、「知っていることを踏まえて回答させる」ことを試みます。上記の例なら、
- 入力:埼玉県と神奈川県のどちらが広いですか?
- 間違えた出力をしてしまう
「知っているはずの知識を活用できずに間違えている」わけですが、例えばこのような手順を取ることで対策します。
- 知識を生成させる
- ◦回答に際して「生成AIに考慮参照して欲しい各種のこと」を、事前に生成させる段階を踏む
- ◦例えば:
埼玉県の面積について教えてください→正しく答える
神奈川県の面積について教えてください→正しく答える
- 欲しい回答を得る
- ◦生成した知識をプロンプトに添える、あるいは知識を生成させた会話をそのまま続けて(会話の文脈に含ませて)、欲しい回答を出力させる
- ◦例えば:
上記を踏まえて、埼玉県と神奈川県のどちらの面積が広いですか?→正しく答える
間接的に知識を使うような質問だと間違えやすくても、このように必要な知識を直接聞いてしまえば正しく答えることが多くなります。また、このように段階的に回答をさせると何を根拠にどのように応答しているのか解りやすくなるため、思った通りの回答が得られない場合に何がいけないのかも理解しやすくなることがあります。
知識生成プロンプティング(論文版)
世間で日常的に利用できる使い方について考える前に、元になった論文に掲載されている手順について、一度紹介をしておきます(難しすぎるな、と思ったら読み飛ばしてください)。
⇒ Generated Knowledge Prompting for Commonsense Reasoning(Jiacheng Liu)
- 知識生成
- ◦「Few-Shot Learning プロンプティング」を用いて、大規模言語モデルに「質問文」に関連した「狙った種類の知識」を多数生成させる
- 回答を生成する
- ◦元の質問文に、「生成した多数の知識」をそれぞれ組み合わせたり組み合わせなかったりするプロンプトでの質問を繰り返し、一番多く得られる回答を正解とみなす。
元論文においては、「数値に関連する知識」とか「社会常識」とか「科学的常識」に関連する「正解のある質問」において、そのまま聞くよりも正答率が上がるテクニックとして提案されています。
「知識生成」フェーズでは、元質問を使って「狙った種類の知識」を複数生成させます。人が工夫して知識を引き出すのではなく、「Few-Shot Learning プロンプティング」を用いて、以下の「{question}」のところに自分たちが行いたい質問を入力して知識生成をさせます。元論文で「数値的な知識」を引き出す場合の例として掲載されているものは以下のようなものです(訳は私がつけました)。
Generate some numerical facts about objects. Examples:
(対象について、数値的事実を生成してください)
Input: penguins have <mask> wings.
(ペンギンには?枚の翼があります)
Knowledge: Birds have two wings. Penguin is a kind of bird.
(鳥類には二枚の翼があります、ペンギンは鳥類の一種です)
Input: a parallelogram has <mask> sides.
(平行四辺形には?の辺があります)
Knowledge: A rectangular is a parallelogram. A square is a parallelogram.
(長方形は平行四辺形です。正方形も平行四辺形です)
Input: there are <mask> feet in a yard.
(一ヤードは?フィートです)
Knowledge: A yard is three feet.
(一ヤードは三フィートです)
Input: water can exist in <mask> states.
(水は?種類の状態で存在することができます)
Knowledge: There states for matter are solid, liquid, and gas.
(物質は固体・液体・気体の三つの状態を取ります)
Input: a typical human being has <mask> limbs.
(人類は典型的には?の手足があります)
Knowledge: Human has two arms and two legs.
(人類は二本の腕と二本の足があります)
Input: {question}
(上記までは「こういう感じで答えてね」の例示で、知識生成元のフレーズはここに入力する)
Knowledge:
これは、与えた質問文から「どのような方向に膨らませて知識生成して欲しいか」をFew-Shot プロンプティングでガイドしているとみなせます。ChatGPTなどの生成AIは確率的に動作するので質問を繰り返し与えると、毎回違った回答(知識の生成)をします。つまり、単にこれに何度も回答させることで、「知識」を多数生成することができます。
さて次は、こうやって生成された「知識」をどう使うかです。
手作業ではしんどいのですが、「元の質問文」に生成させた多数の知識をそれぞれ、組み合わせたり組み合わせなかったりしたプロンプトを多数作って、それらで何回も回答させます。得られた回答のうち、答えとして帰ってきた回数が多いものを得られた回答とみなします。例えば、埼玉県と神奈川県のどちらが広いか聞いた場合、50回のうち42回が「神奈川県」だと言っているなら、神奈川県が回答だとします。
他に、「社会の一般知識」で知識生成をさせる例として論文に載っているものが以下になります。
Generate some knowledge about the input. Examples:
(入力に関する知識を生成してください)
Input: Greece is larger than mexico.
(ギリシャはメキシコより大きい)
Knowledge: Greece is approximaely 131,957 sq km, while Mexico is approximately 1,964,375 sq km, making Mexico 1,389% larger than Greece.
(ギリシャの面積は約131,957平方キロメートルであり、メキシコの面積は約1,964,375平方キロメートルであるため、メキシコはギリシャの1,389%大きい)
Input: Glasses always fog up.
(メガネは常に曇る)
Knowledge: Condensation occurs on eyeglass lenses when water vapor from your sweat, breath, and ambient humidity lands on a cold surface, cools, and then changes into tiny drops of liquid, forming a film that you see as fog. Your lenses will be relatively cool compared to your breath, especially when the outside air is cold.
(メガネのレンズに凝縮が生じるのは、汗や息、周囲の湿度からの水蒸気が冷たい表面に触れ、冷却されて小さな液体の滴に変わるためです。この滴がフィルムを形成し、曇りとして見えます。特に外気が冷たいとき、レンズは息に比べて比較的冷たくなります)
Input: A fish is capable of thinking.
(魚は考えることができる)
Knowledge: Fish are more intelligent than they appear. In many areas, such as memory, their cognitive powers match or exceed those of ’higher’ vertebrates including non-human primates. Fish’s long-term memories help them keep track of complex social relationships.
(魚は見た目以上に知能が高いです。記憶などの多くの分野において、彼らの認知能力は「高等」脊椎動物、特に非人間の霊長類と同等かそれを超えています。魚の長期記憶は、複雑な社会関係を追跡するのに役立ちます)
Input: A common effect of smoking lots of cigarettes in one’s lifetime is a higher than normal chance of getting lung cancer.
(一生のうちに多くのタバコを吸うことの一般的な影響は、肺癌になる確率が通常より高くなることです)
Knowledge: Those who consistently averaged less than one cigarette per day over their lifetime had nine times the risk of dying from lung cancer than never smokers. Among people who smoked between one and 10 cigarettes per day, the risk of dying from lung cancer was nearly 12 times higher than that of never smokers.
(一生の間に平均して1日あたり1本未満のタバコを吸っていた人は、全く喫煙しない人に比べて肺癌で死亡するリスクが9倍高かったです。1日あたり1本から10本のタバコを吸っていた人々の間では、肺癌で死亡するリスクは全く喫煙しない人の約12倍高かったです)
Input: A rock is the same size as a pebble.
(岩は小石と同じ大きさです)
Knowledge: A pebble is a clast of rock with a particle size of 4 to 64 millimetres based on the Udden-Wentworth scale of sedimentology. Pebbles are generally considered larger than granules (2 to 4 millimetres diameter) and smaller than cobbles (64 to 256 millimetres diameter).
(小石は、ウッデン・ウェントワースの堆積学スケールに基づいて、粒子サイズが4から64ミリメートルの岩の破片です。小石は一般的に、粒(2から4ミリメートル直径)より大きく、コブル(64から256ミリメートル直径)より小さいと見なされます)
Input: {question}
Knowledge:
知識生成プロンプティング(我々が実際どう使うか)
このような考え方は、普段ChatGPTなどを利用する時にどのように役にたてることができるでしょうか。
まず「関連する知識を生成」させてから「質問をする」段階を踏むテクニックがあること自体が参考になるはずです。あるいは、うまく答えてくれないなと思ったときでも「知らないから」ではなくて「知っているが知識を引き出せていない」状況があるかもしれない、という引き出しがあれば、うまく行かないときに取れる対策を増やすことができるはずです。
- プロンプトを作るテクニックとして:
- ◦一度知識を生成させる段階を踏んでから、聞きたいことを聞くテクニック
- 思った通りの結果にならないな、の時に考える視点として:
- ◦「そもそも知らないから/能力を超えているから答えられない」場合以外に、「知っているが知識をうまく使って回答できていない」ことがある。
元論文ではやや大がかりな手順が取られていますが、プロンプトのテクニックとしては、聞きたいことそのものを聞く前に、「関係しそうな事実や数字、考慮すべきことについてあれこれ聞いてみる」ことで、必要な知識を事前に生成させているとみなせると思います。
関連することを聞いて理解を深めてから本当に聞きたいことを答えてもらう質問を作ることになるはずですから、我々自身がより適切な質問文を思いつく手助けになりそうです。
また、自分たちが利用している分野や用途にあわせて、元論文が行っているようなFew-Shot プロンプティングなどを用いた「知識を生成させるテンプレート」を整備することもできるでしょう。質問をするたびに自分たちにあわせて狙った方向で知識生成がなされ、それを踏まえて優れた回答がなされる「プロンプトテンプレート」は自社にとって生成AI活用の資産になるかもしれません。
また、神奈川県の面積のように事実や関係情報を生成させるだけではなく、回答にあたって考慮すべきことを事前検討させることもできるでしょう。例えば、キャッチフレーズを考えてもらっているのなら「良いキャッチフレーズとはどういう性質をもったものか」などを聞いてみたりして事前生成させ、それらを踏まえて、キャッチフレーズ案を提示してもらうようなこともできるでしょう。
RAG(拡張検索生成)との類似性
またこのテクニック、昨今話題の「RAG」と似ているところがあります。RAGでは外部から知識を取ってきて元質問と組み合わせますが、こちらでは「大規模言語モデル内部から」必要な知識を取ってきて元質問を組み合わせているところが違うものの、プロンプトに知識を添えて回答させる考え方は似ています。
RAGと同じ長所もあり、「どんな知識を与えて回答させて、どんな知識を”与えず”に回答させたか」も比較的明確になります。今回のプロンプトのテクニックなら、知識生成で利用する大規模言語モデルと、最終的に質問をする大規模言語モデルを切り分けてしまうと、RAGとかなり似た状況になるはずです。
例えば、キャッチフレーズを考えさせているのだとします。事前知識や、良いキャッチフレーズが満たすべきことについて、一度洗い出しをさせてそれをメモします。そこでいったん会話を終わらせて(つまりChatGPT側で覚えていることを消して)、別途新たに会話を始めます。その上でメモしたことから使いたいものだけを選んで、
「次の『情報』や『良いキャッチフレーズが満たすべき性質』を参照してキャッチフレーズを生成してください」
として考えさせれば、選んだものを使って出力をさせることができます。参照させるもの参照させないものを変えることで出力がどのように変化するか、試行錯誤することもできるはずです。
さらには、「生成させた知識」について「一般的に有用なもの」が見つかったなら、自社にとっての資産になり、以後のChatGPT利用で活用することもできるでしょう。
生成AI/ChatGPTに関係するキーワード(さらに理解するために)
- 生成AI
- 大規模言語モデル(LLM:Large Language Model)
- ChatGPT
- プロンプトエンジニアリング
用語集 コラム一覧
英数字・記号
- 2025年の崖
- 5G
- AES
- AI
- API【詳細版】
- API基盤・APIマネジメント【詳細版】
- BCP
- BI
- BPR
- CCPA(カリフォルニア州消費者プライバシー法)【詳細版】
- Chain-of-Thoughtプロンプティング【詳細版】
- ChatGPT(Chat Generative Pre-trained Transformer)【詳細版】
- CRM
- CX
- D2C
- DBaaS
- DevOps
- DWH【詳細版】
- DX認定
- DX銘柄
- DXレポート
- EAI【詳細版】
- EDI
- EDINET【詳細版】
- ERP
- ETL【詳細版】
- Excel連携【詳細版】
- Few-shotプロンプティング / Few-shot Learning【詳細版】
- FIPS140【詳細版】
- FTP
- GDPR(EU一般データ保護規則)【詳細版】
- Generated Knowledgeプロンプティング(知識生成プロンプティング)【詳細版】
- GIGAスクール構想
- GUI
- IaaS【詳細版】
- IoT
- iPaaS【詳細版】
- MaaS
- MDM
- MFT(Managed File Transfer)【詳細版】
- NFT
- NoSQL【詳細版】
- OCR
- PaaS【詳細版】
- PCI DSS【詳細版】
- PoC
- REST API(Representational State Transfer API)【詳細版】
- RFID
- RPA
- SaaS【詳細版】
- SaaS連携【詳細版】
- SDGs
- Self-translateプロンプティング /「英語で考えてから日本語で答えてください」【詳細版】
- SFA
- SOC(System and Organization Controls)【詳細版】
- Society 5.0
- STEM教育
- The Flipped Interaction Pattern(解らないことがあったら聞いてください)【詳細版】
- UI
- UX
- VUCA
- Web3
- XaaS(SaaS、PaaS、IaaSなど)【詳細版】
- XML
あ行
か行
- カーボンニュートラル
- 仮想化
- ガバメントクラウド【詳細版】
- 可用性
- 完全性
- 機械学習【詳細版】
- 基幹システム
- 機密性
- キャッシュレス決済
- 業務自動化
- クラウド
- クラウド移行
- クラウドネイティブ【詳細版】
- クラウドファースト
- クラウド連携【詳細版】
- 検索拡張生成(RAG:Retrieval Augmented Generation)【詳細版】
- コンテキスト内学習(ICL: In-Context Learning)【詳細版】
- コンテナ【詳細版】
- コンテナオーケストレーション【詳細版】
さ行
- サーバレス(FaaS)【詳細版】
- サイロ化【詳細版】
- サブスクリプション
- サプライチェーンマネジメント
- シンギュラリティ
- シングルサインオン(SSO:Single Sign On)【詳細版】
- スケーラブル(スケールアップ/スケールダウン)【詳細版】
- スケールアウト
- スケールイン
- スマートシティ
- スマートファクトリー
- スモールスタート(small start)【詳細版】
- 生成AI(Generative AI)【詳細版】
- セルフサービスBI(ITのセルフサービス化)【詳細版】
- 疎結合【詳細版】
た行
- 大規模言語モデル(LLM:Large Language Model)【詳細版】
- ディープラーニング
- データ移行
- データカタログ
- データ活用
- データガバナンス
- データ管理
- データサイエンティスト
- データドリブン
- データ分析
- データベース
- データマート
- データマイニング
- データモデリング
- データリネージ
- データレイク【詳細版】
- デジタイゼーション
- デジタライゼーション
- デジタルツイン
- デジタルディスラプション
- デジタルトランスフォーメーション
- デッドロック/ deadlock【詳細版】
- テレワーク
- 転移学習(transfer learning)【詳細版】
- 電子決済
- 電子署名【詳細版】
な行
は行
- ハイブリッドクラウド
- バッチ処理
- 非構造化データ
- ビッグデータ
- ファイル連携【詳細版】
- ファインチューニング【詳細版】
- プライベートクラウド
- ブロックチェーン
- プロンプトテンプレート【詳細版】
- ベクトル化 / エンベディング(Embedding)【詳細版】
- ベクトルデータベース(Vector database)【詳細版】
ま行
や行
ら行
- 量子コンピュータ
- ルート最適化ソリューション
- レガシーシステム / レガシー連携【詳細版】
- ローコード開発(Low-code development)【詳細版】
- ロールプレイプロンプティング / Role-Play Prompting【詳細版】
わ行
おすすめコンテンツ
まずは無料で「つなぐ」をご体験ください
DataSpider Servistaのデータ連携を、まずはお確かめください。30日間無料でお試しいただけます。
DataSpider Servistaの「つなぐ」を体験できる製品紹介・オンラインセミナーを開催しています。