Generated Knowledge (訓練と知識の生成)
Generated Knowledgeというのは、ChatGPT(AI)を訓練し、正確な情報・意図する情報を引き出すテクニックです。
例えば、以下の質問をChatGPTに投げかけてみます。
プロンプト例:
(プロンプトをクリックするとコピーできます)
回答例:
回答を見てみると、それぞれの県の面積は正しく表示されています。しかし、福島県の方が広いにも関わらず、『新潟県の方が広い』と間違った結論になっています。
理由は、ChatGPTは単なる言語モデルであり、その前にある文字列の並びから、(膨大な言語データをもとに)もっともらしい文字列を生成しているだけなのです。つまり、この質問に正しく応えるためには、結論の前に、データが存在する必要があります。
この回答をよく見てみると、まず、『福島県と新潟県の面積がどちらが広いか』、という結論が先に述べられています。しかしながら、それを判断するデータが、その前に出てきていません。
この例では結論(どちらが広いか)の後に、実際の面積データが出てきていますが、ChatGPTの中では、これらの事実は結びついていないのです。
つまり、訓練されていない情報に関して、無理やり答えを出しているので、このような間違いが起こってしまうのです。
ChatGPTを訓練する
ではどうすれば良いのでしょうか?
答えは、『結論を出す前に、その判断材料となるデータを表示』させれば良いのです。つまり、ChatGPTを訓練するのです。
以下のプロンプトのように、結論を出す前に、面積データを表示するように指示します。
プロンプト例:
(プロンプトをクリックするとコピーできます)
回答例:
今回は、正しい回答(『福島県の方が広い』)が表示されました。なぜなら、結論の前に、面積データが表示されているので、その情報に基づいて判断されたためです。
言語モデルは、常に前から順番に情報が処理されていくので、何かを判断させる場合には、必ず判断材料がその前に存在するように、プロンプトを入力する必要があるのです。
では、次の例を見てください。
プロンプト&回答例:
この例は、質問を2回に分けています。まず最初に面積だけを質問し、続けて、どちらが広いかを聞いています。
何かを判断させるためには、その前に判断材料が必要、なのですが、ChatGPTの場合、必ずしも1つの回答内に判断材料が存在している必要はありません。
この例のように、同じスレッド内で、すでに情報が出てきていれば、それも訓練データとして扱われます。
ChatGPTは、複雑な計算が苦手、と言われていますが、その理由は、『前の情報から順番にしか処理できない』言語モデルの特性にあります。ですので、計算過程を分解し、ステップごとに答えを表示させることで、正しい答えを導ける場合が多いです。
他にも、あるトピックについてChatGPTにブログ記事を書いてもらった場合、思っているような内容が出てこない場合が多々あります。
そんな時は、記事本文を書いてもらう前に、こちらが意図するキーワードや、情報を事前に与えたり、事前質問で、関連する内容を答えさせるような指示を与えることで、意図する内容に近づけることができます。
ぜひ試してみてください。