【GPT】上位Pと温度(TopP&Temperature)とは何か

Azure OpenAI等でGPTのサービスを用いるときに出てくるパラメータに、「上位P(TopP)」と「温度(Temperature)」があります。

解答の精度を制御するパラメータだということは知っていても、具体的に何を変化させているのかはあまり知られていない印象です。今回は簡単にこれらをまとめてみたいと思います。

TopP

TopPは一言で説明するならば、「累積確率が上位(100*P)%となるところまでのトークンを解答候補に入れるパラメータ」です。

GPTは次に出力する単語を確率的に選んでいます。候補の単語を確率の順に並べた場合に、その累積確率が幾つになるまで(Pになるまで)のトークンを解答候補に入れるかを、TopPは調整しています。

画像では極端な例を出していますが、例えばこの場合、上位Pを0.8と設定したなら、解答候補は「たまねぎ」と「にんじん」に絞られることになります。

一方で、上位Pを1.0と設定した場合、解答候補にあるすべての単語が、そのまま出力の選択候補になっていることを意味します。

この例から分かるように、上位Pを上げると突拍子もない文章が出来上がる可能性が高くなり、反対に上位Pを下げると、一貫した出力をするように挙動が変更されます。

先の例が、「カレーの具材として人気なのは、」という文章に続く単語を出力する段階だったとしたら、上位Pを下げれば、「たまねぎ」という真っ当な回答が出力される可能性が高く、上位Pを上げれば「ピアノ」という不自然な回答を出力する可能性も出てくるということです。(もちろんGPTはそこまで頭が悪くないので、そもそも回答候補に入っていない、または確率が究極的に0に近いと考えて大丈夫です。)

Temperature

次にTemperatureを一言で説明するならば、「トークンの確率分布の散らばりを調整するパラメータ」です。

TopPは累積確率が幾つになるまでのトークンを回答候補に入れるかというパラメータでしたが、Temperatureはその確率分布の散らばりを調整します。

これは下記の図を見るとわかりやすいと思います。

左の図がTemperatureが小さい場合、右の図が大きい場合の確率分布です。

先の例をそのまま使うと、TopPが0.8の時、Temeratureが小さい場合には回答候補は「たまねぎ」と「にんじん」となりますが、大きい場合にはそれに加えて「キャベツ」、「トマト」、「なす」も回答候補に入ることになります。

まとめ

TopPとTemperatureの特徴を押さえた上でパラメータを調節して挙動を確認してみると、よりGPTについて理解が深まると思います。

これを踏まえると、パラメータの調節時の注意点として書かれている、「上位Pと温度を同時に変更することは推奨されていません」という文言の意味が実感できるのではないでしょうか。

今回は以上になります。最後までお読みいただきありがとうございました。