AIキャラクターの回答に一貫性を持たせるGPT APIのパラメーター
はじめに
AIキャラクターに、人間の性格診断を実施する場面を想定しましょう。AIキャラクターの回答に一貫性がないと、性格診断を実施するたびに診断結果が異なります。そういったことを防ぐ為に、AIキャラクターの回答に一貫性を持たせるパラメーターを今回紹介します。
今回紹介するパラメーター
- Temperature
- Top_p
Temperature
Temperatureは低くすることで、ランダム性をなくしてAIキャラクターの回答に一貫性を持たせることができます。逆にTemperatureの値を高くすることで、AIキャラクターの回答に多様性を持たせることができます。
- デフォルト値:1
- 最小値:0
- 最大値:1
Top_p
Top_pの値xを指定することで、上位x*100%のトークンから次のトークンが生成される様になります。なので、xを0.1に設定すると確率として上位10%のトークンから次のトークンが生成されることになります。他の下位90%のトークンからは、生成されず結果としてAIキャラクターの発言の一貫性が上がります。
- デフォルト値:1
- 最小値:0
- 最大値:1
注意点
ここまでのパラメーターの解説を聞くと、TemperatureとTop_pをどちらも0に近づければ回答の一貫性を出すことが可能になると考えられます。ですが、OpenAIの公式Documentによれば、両方を変更することは推奨されていません。
実験
実験として、PlaygroundでTemperature、Top_pがデフォルトの場合、TemperatureもしくはTop_pが低い場合の応答の違いを見てみます。
Temperature、Top_pがデフォルト値の場合
どちらもデフォルト値の場合、図1の様な文章が生成されました。確率としては、37.53%の音とは異なる、0.59%の写というトークンが生成されました。この様に、すべてがデフォルト値だとランダム性があり、一貫性のない文章が生成されるのがわかります。
図1 確率としては低いトークンが表示される例
Temperatureが0の場合
Temperatureが0の場合だと、ランダム性がなくなり一貫性ある文章が生成されます。
Top_pが0.1の場合
Top_pが0.1の場合だと、上位10%のトークンが生成されて一貫性のある文章が生成されます。なので、Temperatureが0の場合と同じ文章が生成されます。
おわりに
一貫性のある文章を生成したい場合は、基本的にTemperatureもしくは、Top_pのどちらかを低い値に設定すれば良いという結果がわかりました。OpenAIが両方のパラメーターを同時に変更することを推奨していない以上、片方のパラメーターを低くすることで一貫性ある文章を生成させるのが良いと結論付けました。Temperatureと、Top_pどちらを選ぶかで生成されるテキストが変わるかについては、今回の実験では明らかになりませんでした。
参考文献
下記の記事が非常に詳しくTemperatureとTop_pの関係を説明していました。
Discussion