AIの答えが毎回違うのはなぜか|温度とサンプリングの仕組み

同じ質問でも答えが違う AIの仕組みと用語

同じ質問を二度投げると、違う答えが返ってきます。仕事で使っていると、これが困る場面があります。

不具合ではありません。そういう作りになっています。

次の単語を確率で選んでいる

言語モデルは文章を一語ずつ書いていきます。そのたびに、次に来る候補すべてに確率を割り当てている。

「今日はいい」の次なら、「天気」が高く、「日」がそれに続き、「机」はほぼゼロ、といった具合です。

ここで、いちばん確率の高い語を必ず選べば、答えは毎回同じになります。実際そういう設定も用意されています。

それをやらないのは、常に最上位を選ぶと文章が壊れるからです。

確率が高い語だけを選ぶと、文章が壊れる

2019年に公開された論文が、この現象を扱っています。Ari Holtzman氏らによる The Curious Case of Neural Text Degeneration。

確率を最大化する方式で文章を作らせると、出てくるのは平板で、奇妙に繰り返しの多い文章だったと報告されています。同じ言い回しに入り込み、そこから抜け出せなくなる状態。

人が書いた文章と機械が書いた文章では、確率の分布に驚くほどの違いがあった、とも述べられています。人は必ずしも最も確からしい語を選ばない、ということ。

論文が提案したのが、核サンプリングと呼ばれる方法です。確率分布のうち信頼できる上位の塊からだけ選び、当てにならない裾を切り落とす。多様さを保ちつつ、破綻は避ける。そういう狙い。

この考え方が、いま多くのサービスで top_p という名前で使われています。

温度という設定

もうひとつ、揺れの幅を決める設定があります。温度と呼ばれる値です。

やっているのは、確率の分布を平らにするか尖らせるかの調整。

温度 何が起きるか 向いている仕事
0に近い 上位の語に集中する。ほぼ毎回同じ答えになる 分類、抽出、書式の変換
中くらい そこそこ揺れる。標準の設定 説明、要約、下書き
高い 下位の語も選ばれやすくなる。破綻もしやすい 案出し、言い換えの候補集め
実際に指定できる範囲と既定値はサービスによって違う

対話型の画面から使っている場合、この値は触れないことがほとんどです。設定を変えられるのはAPI経由のときになります。

温度を0にしても完全には揃わない

ここは誤解されやすいところです。温度を最小にしても、答えが毎回一致する保証はありません。

計算の順序や実行環境の違いで、ごくわずかな差が出ます。確率が拮抗している場面では、その差が選ばれる語をひっくり返してしまう。

加えて、提供側がモデルを更新すれば挙動は変わります。昨日と同じ答えが今日も返る前提で仕組みを組むと、ある日いきなり壊れます。

なぜ揺れを残しておくのか

確実さが欲しい仕事から見ると、揺れは邪魔でしかありません。それでも既定では揺れる設定になっています。

理由は、人が書く文章がそもそも揺れているからです。論文が測ったのは、人の文章における確率の分布でした。人は毎回いちばん無難な語を選ぶわけではなく、意外な語を混ぜている。その揺らぎこそが、文章を文章らしくしているらしい。

確率の高い語だけを拾い続けると、当たり障りのない言い回しが積み重なり、同じ形が繰り返され、読めたものではなくなります。揺れを消すと自然さも消える、という関係にあります。

この事情は、記事や説明文を書かせるときに効いてきます。硬く固定した設定で書かせた文章は、読んだときにどこか平板です。文章を書かせるなら、揺れは残しておいたほうがよい。

再現したいときの手段

どうしても同じ結果を得たい場面はあります。試験や、比較の実験をするときです。

サービスによっては seed という値を指定できます。乱数の出発点を固定するもので、同じ seed と同じ入力なら、同じ出力に近づきます。

ただし提供側も、完全な再現は保証していないのが普通です。あくまで近づくという性質のもので、比較実験の条件を揃える用途に使うのが現実的でしょう。

検証の記録を残すなら、出力そのものを保存しておくほうが確実です。あとから同じ出力を作り直せる前提には立たないほうが安全です。

揺れを実務でどう扱うか

設定をいじるより効くのが、出力の形を縛ることです。

「はい」か「いいえ」で答えさせる。決められた選択肢から選ばせる。JSONの形を指定して埋めさせる。取り得る答えの幅を狭めれば、揺れる余地そのものが小さくなる。

逆に、自由に文章を書かせる仕事で揺れを消そうとするのは筋が悪い。毎回まったく同じ文章が欲しいなら、それはAIではなくテンプレートの仕事です。

検査を組み込む方法もあります。同じ入力を3回処理させて、答えが割れたら人に回す。揺れを消すのではなく、揺れたことを検知して拾う設計です。手間はかかりますが、間違いが致命的になる仕事では有効でしょう。

出典

確率最大化による文章の劣化と、核サンプリングについての記述は、下記の論文に基づきます。temperature・top_pパラメータの仕様は、OpenAIの公式APIリファレンスで確認しました。

タイトルとURLをコピーしました