見出し画像

「契闊」作戦作戦は、万能ではなかった

まとめ

「契闊」作戦とは、プロンプトにキーワードを仕込んで、始めたらそのキーワードを書くと、プロンプトを初期状態で読み込んでくれるのではないか、そしたら便利だね、と言う作戦のことである。
ある程度動いているので、いけたかな、と思ったら、最初のプロンプトから結構離れると、結構な確率でダメになるので、その理由をChatGPT自身に聞いてみた。Ver4である。

原理

OpenAIのGPTモデルの仕組みにより、直近の入力の一部しか記憶していない。このため、長い話になると最初に話したプロンプトや指示がモデルに見えなくなるため、当初想定していた回答が難しくなる。

特に、擬似人格を与えた会話を続ける場合、学習データがいろんな口調が混じっているので、会話の内容によっては、学習データの方に引きずられて、口調が変わってしまう可能性がある。

短期的対策

  • 予防:会話をするときに、簡潔な表現を使い、冗長的な文章をなるべく避ける。

    • 人間が記述するtoken数が節約でき、当初プロンプトを覚えていられる会話数が少なくなる。

  • 対応:当初のプロンプトからずれたら、当初プロンプトを再投入する。

    • プロンプトを提供するときに、それまでの会話の重要な文脈を要約して含める。

    • モデルがそれまでの会話を理解する助けとなり、より一貫した返答を促すことができます。

根本対策

これは、扱えるToken数が少ないと言うものが根本原因なので、もっと扱えるToken数が増えれば、問題がなくなるかもしれない。いわゆる「富豪プログラミング」作戦ですね。これはもう、待つしかない。

問答を生ログ転記


ちなみにさ、ChatGPTとしてアドバイスが欲しいのだけど、一回プロンプトを入れて、その後会話を続けると、最初のプロンプトで指示した口調などが、少しずつ忘れられていくように感じるのだけど、それは一回に保持できるToken数を超えると、そうなってきちゃうという仕様的なものなの?

ChatGPT
その現象はOpenAIのGPTモデルの仕組みに起因しています。GPTモデルは、与えられたプロンプトを含む前の数百トークンを使用して予測を行います。言い換えれば、モデルは直近の入力の一部しか記憶していません。そのため、長い会話になると、初期のプロンプトや指示がモデルに見えなくなり、それに応じた返答が難しくなるのです。

なので、プロンプトの指示を一貫して遵守してもらうためには、定期的に指示を思い出させるか、会話を区切って新たなプロンプトを設定すると良いでしょう。その際、指示を最小限に抑えつつ、できるだけ短くしてトークン数を節約するとよいですね。

また、モデルが特定のスタイルを維持できない理由の一つには、モデルの学習データがあります。GPTはさまざまなスタイルとジャンルのテキストから学習しており、その結果、一貫したスタイルや口調を維持するのが難しいという問題があります。

これらを踏まえて、指示を再度入力するなどして、モデルに指示を思い出させるようにすると良いでしょう。


ありがとう。token数が関係あるということは、人間にできることは、まず、会話をするときに、簡潔な表現を使い、冗長的な文章をなるべく避ける、ということ。これにより、人間が記述するtoken数が節約でき、当初プロンプトを覚えていられる会話数が少なくなる。また、当初のプロンプトからずれたと思ったら、当初プロンプトを再投入する。というのが現時点での対処法、ということでいいのかな?

ChatGPT
その通りです。長い会話の場合、モデルが最初の指示を覚えていられるように、可能な限り簡潔に書くことが役立ちます。また、会話が指示からずれたと感じた場合には、その指示を再入力することも有効です。

もう一つのアプローチとして、頻繁に指示を再確認する形で、問いかけを入れることも考えられます。これは、指示を維持するためのリマインダーとして機能し、モデルが一貫した返答を提供しやすくなるでしょう。

ただし、これらの対策も完全な解決策とはならないかもしれません。モデルは大量のデータから学習しており、その中には様々な書き方やスタイルが含まれています。したがって、一貫したスタイルや口調を保つことは、それ自体が挑戦となる場合もあります。


一つのチャット中で、そのトピックについて長く話をし続けることによって、文脈が限定されて、当初プロンプトを保つ、ということは現時点ではできないのかな? そうできると便利なんだけど。

ChatGPT
現在のGPTモデル(2021年までのモデル)では、一つのチャットトピックについて長く話をし続けることも可能ですが、それでもトピックの維持や指定されたスタイル・口調の維持は完全に保証されるわけではありません。
会話が長くなると、特に初めての指示や文脈がモデルから見失われる可能性があるため、長い会話の中でも定期的に初めの指示を再確認したり、文脈を再確認したりすることが推奨されます。

また、新たなプロンプトを提供するときに、それまでの会話の重要な文脈を要約して含めることも有効です。これにより、モデルがそれまでの会話を理解する助けとなり、その結果としてより一貫した返答を促すことができます。

ただし、これらの方法も完全な解決策とは言えませんが、一定の効果が期待できます。モデルが進化し、改良されるにつれて、このような課題も次第に解決されていくことでしょう。


なるほど、ありがとう。プロンプトを再投入するときに、例えば、「ここまでの会話の重要な文脈を要約して」と、ChatGPTに要約してもらうのと、人間が要約して投入するのとでは、違いがあるかな?

ChatGPT
それは素晴らしい質問です。GPTは文章の意味を完全に理解する能力はまだ完全には備わっておらず、それぞれのメッセージを単純なテキストの塊として処理します。それらのメッセージ間での関係性や文脈の把握は、あくまでも統計的な推測に過ぎません。

そのため、人間が要約を行ってプロンプトとして提供する方が、モデルに対して必要な情報をより明確に伝えることができます。人間は各メッセージの意味や重要性、そしてそれらが全体としてどのようにつながっているかを理解する能力を持っています。それに対し、GPTが会話の要約を行うと、重要な情報を省略したり、あるいは文脈を適切に理解できない可能性があります。

ただし、ChatGPTに要約を求めることも一つの手段としてはあります。それにより、過去の会話を思い出す材料となり、モデルが過去の情報を参照する能力を促進するかもしれません。ただし、その結果については完全な信頼性は保証できません。

なお、AIが理解する「文脈」は、我々人間が理解する「文脈」のような意味を持つわけではなく、単に統計的な連続性やパターンを指します。これは、人間が経験や文化的背景に基づいて理解する「文脈」とは大きく異なることに注意が必要です。


となると、理解を一致させるために、ChatGPTに要約をしてもらって、それを人間が校正して投入すると、わかりやすくなる可能性は高い? (「文脈」の定義がChatGPTと人間で少し違うとしても)

ChatGPT
そのアプローチは役立つ可能性があります。ChatGPTに要約を求めることで、その時点でのモデルの「理解」を見ることができます。そして、その要約を人間が校正することで、モデルが見落としている部分や誤解している部分を補正することができます。

ただし、それでもなおChatGPTは完全に人間の理解を模倣することはできません。そのため、これによってモデルが過去の会話全体を完全に理解し、人間が意図する通りに行動するとは限らないことを覚えておいてください。
この手法が有効であるかどうかは試してみなければわからない部分もあります。それぞれの状況や会話の目的により、最適な方法は異なるかもしれません。そのため、様々なアプローチを試し、どの方法が最も適しているかを見つけることをお勧めします。



以上でございます。


いいなと思ったら応援しよう!