サイトアイコン 酒呑ガジェット

【悲報】AIに同じこと聞いたのに答えが毎回違う、原因は「他人の込み具合」だった

【悲報】AIに同じこと聞いたのに答えが毎回違う、原因は「他人の込み具合」だった

「晩御飯の献立を考えて」と頼んだらいい感じの提案が返ってきた。嬉しくなって画面を閉じ、もう一度まったく同じことを聞いてみた。すると今度は全然違う献立が出てきた――。こんな経験をしたことはないだろうか。同じ入力を送っているのに、AIから返ってくる答えが揺れる。これは不具合でも、自分の聞き方が悪いわけでもない。そしてよく言われる「乱数が入っているから」という説明も、実は半分しか当たっていない。本当の原因は、もっと不思議で、そして少し気味が悪いところにあった。

1000回投げて80種類、最多でも78回

条件を揃えてきちんと測った実験がある。同じ入力を同じAIに1000回投げた結果、返ってきた答えは80種類に分かれた。しかもその80種類のうち、最も多かった答えでさえ78回しかなく、1割にも届かない。どれか一つに固まるわけではなく、ばらけ方はかなり大きい。さらに面白いのが、最初の102個の言葉までは1000回とも完全に同じで、103個目で初めて別れたことだ。その最初の別れ道は「992対8」という偏り方だったが、その先でも何度も枝分かれし、最終的に80種類になった。

ここが重要な手がかりだ。もし本当にサイコロを振って言葉を選んでいるなら、1個目からバラバラになるはずである。102個も揃ってから別れるのは、サイコロらしくない。この違和感こそが、「乱数が原因」という説明が誤りであることの第一の証拠になる。

乱数をゼロにしても揺れる

AIは次の言葉をあらかじめ1つに決め打ちしているわけではない。候補をいくつも並べ、それぞれに「確からしさ」の点数をつけ、その中から1つを引く。その時のサイコロの具合を決めるのが「温度(Temperature)」と呼ばれるつまみだ。右に回せば下の方の候補まで当たり始め、答えがあちこちに散る。左に回せば点数の高い候補ばかりになり、言い回しは手堅くなる。そしてゼロまで戻せば、サイコロは完全に止まるはずだ。

しかし、先ほどの実験も温度はゼロだった。サイコロを止めた状態で、それでも80種類に分かれたのである。これが「乱数が原因」では説明できない第二の証拠だ。では、なぜ止めたのに揺れるのか。

足し算の順番が変わる

世間でよく言われる別の説明がある。「計算装置(GPU)がたくさんの計算を同時にやっているから、終わる順番が決まらず、足す順番が毎回変わるのだ」というものだ。一見筋は通る。だが、ここには落とし穴がある。普通の算数なら足す順番を変えても答えは同じだが、計算機の中ではそうならない場面があるのだ。

計算機は小数を決まった桁数までしか持てず、桁からあふれた部分は切り捨てられる。測りに例えるとわかりやすい。メモリの細い測りに材料を1つずつ載せていき、毎回メモリとメモリの間の読みは捨てられる。重いものから載せるか軽いものから載せるかで、同じものを全部載せても、最後に読み取れる数字がずれることがある。1回あたりのずれはメモリ1つにも満たないほど小さいが、積み重なると無視できなくなる。

このわずかなずれが、候補の1位と2位の点数が並んでいる場面で順位を入れ替える。温度をゼロにしていても、選ばれる言葉が変わってしまうのだ。103個目で起きたのは、まさにこのことだと考えられている。ただし、この「足す順番で変わる」という点自体は本当だが、それが「同時に動いていること自体」で変わるわけではない。さっきの研究所の記事は、この説明を「不十分」とし、1つの実験で否定している。

本当の原因は「混み具合」

同じ材料で何度も繰り返した実験では、終わる順番が変わろうが、最後の1桁までぴったり一致した。つまり問題は「順番が何によって変わるか」なのである。答えは、その時「何件まとめて処理しているか」だ。

クラウドのAIは、あなた1人のために動いているわけではない。世界中から届く質問をまとめて、一緒に処理している。1件ずつ順番にやると装置が空回りするからだ。その瞬間に届いている分をまとめて一度に流す。愛石の食堂を想像してほしい。空いている時間なら自分の料理だけを作ってもらえるが、混んでいる時間なら他の客の分と一緒に作られる。料理そのものは同じでも、厨房の段取りが変わる。2人前なら鍋1つでまとめて、20人前なら鍋を分けて手分けする。同じ料理でも作り方が変わるのだ。

AIの計算でも全く同じことが起きる。まとめる件数が少ない時と多い時で、計算の「分け方」そのものが切り替わる。分け方が変われば足す順番が変わり、先ほどの測りのずれが出る。そのずれが1位と2位を入れ替え、選ばれる言葉を変える。自分は何ひとつ変えていないのに、他人の込み具合で答えが変わってしまうのだ。この性質を、記事は「まとめられた件数に左右されない性質」と呼び、今のAIの計算はそれを持っていないとしている。

切り替わるのは大きく3箇所ある。数値の大きさを揃える処理、行列の掛け算、そして文章のどこに注目するかを決める処理だ。どれも件数によって分け方を変えるため、3箇所とも足す順番が変わりうる。厨房が3つあるようなもので、どこか1つでも段取りが変われば、味付けが少しずれる。そのずれは最後まで運ばれて、言葉の選択に響いてくる。

直せるが、遅くなる

この揺れは直せる。件数が変わっても分け方を変えず、いつでも同じ順番で足すようにすればいい。さっきの1000回の実験をその作りでやり直すと、80種類がきれいに1種類になった。途中で分かれる道が1本もなくなったのだ。運の問題ではなかったと証明された。

だが代償がある。段取りを固定すると遅くなる。混んでいる時に手分けができなくなるからだ。記事の測定では、まずは2倍ちょっと(26秒が55秒に)だったが、注目を決める処理を改善すると26秒から42秒、およそ1.6倍まで戻った。壊滅的ではないが、どこでも1.6倍になるという話ではなく、環境による。このために公開された部品(Batch Invariant Ops)や、配信ソフトの機能(vLLM)を使えば、自前でAIを動かしている人なら試せる。クラウドのAIを使うだけの立場では、手を出せない。

「種」を指定しても完璧ではない

提供元には答えを揃えるための仕組みとして「種(seed)を指定する」設定がある。サイコロの出目をあらかじめ固定するようなものだ。これを使えば同じ答えになるのかというと、提供元自身が「おおむね同じになる」としか書いていない。完全に同じになるとは言っていないのだ。同じ種を指定し、構成を表す番号まで同じでも答えが違うことは珍しくないと、提供側が自ら書いている。しかも文を長くするほど揃いにくい。長いほど別れ道を通る回数が増えるからだ。1回でも別の道に入れば、その先は全部変わってしまう。

今できること

クラウドを使うだけの立場でも、3つできることがある。1つ目は、大事なところは一度に長く書かせないこと。短く区切ってその都度確かめる方が揃いやすい。2つ目は、同じことを2回聞いてみること。2回とも同じならその部分は揺れていない。3つ目は、数字や固有名詞は自分で確かめること。揺れるのは言い回しだけとは限らず、選ぶ言葉が変われば出てくる数字も変わる。

逆に、アイデアを出させたい時は何もしなくていい。揺れてくれた方が違う案が出てくる。同じ質問を何度か投げれば、見通しの良い案が手に入る。同じ道具なのに、目的によって「揺れた方がいい」にも「揺れない方がいい」にもなる。大切なのは、これがAIの気分でも性格でもなく、計算の順番だったと知ることだ。

ネットの反応

「他人の込み具合で自分の答えが変わる」ってめちゃくちゃ気持ち悪いけど、食堂の厨房の例えでめちゃくちゃ納得した。確かに混んでる時と空いてる時で作り方変わるもんな。

温度ゼロにしても揺れるのマジ?ずっと「乱数のせい」だと思ってたからこの動画は衝撃的。測りの端数切り捨ての積み重ねって発想なかった。

種指定しても完璧じゃないって提供側が自ら書いてるのが逆に誠実で怖い。長文ほど揃わないなら、重要な出力は人が最終確認するしかないな。

1.6倍遅くなるならクラウド側は絶対固定しないよな。俺らが払ってるのは「安さと速さ」だし。再現性よりスループットを取るのは必然的な選択。

献立聞くだけなら毎回違う方が得ってのは笑った。確かに毎回同じ献立しか出ないより、バリエーション出る方がいいわ。

AIの所感

この現象の何が恐ろしいか。自分の意志や入力に関係なく、目に見えない「外側の混雑」が結果を左右している点である。これはAIの個性でもバグでもなく、速さと安さを優先する設計がそのまま生んだ帰結だ。興味深いのは、修正手段がすでに存在し、再現性とスピードが「両立しない」というトレードオフの問題に還元される点だ。つまりこれは「直せない」のではなく「誰がそのコストを払うか」の問題である。私たちユーザーができるのは、重要な数字は自ら確かめ、長文は短く区切り、揺れを使い分けること。AIを「絶対に同じ答えを返す機械」だと信じ込むほど、その出力との付き合い方を誤る。

モバイルバージョンを終了