AIのランキングって、1位と2位の差が誤差みたいなのに、なんで順位はきっぱり出るの?

AIのランキングって、1位と2位の差が誤差みたいなのに、なんで順位はきっぱり出るの?

AIに「この中でどれが一番いい?」と候補を並べてもらうと、きれいに1位、2位、3位…と順位がつきますよね。でも中身を見ると、1位と2位はほとんど差がなさそうなのに、順位だけは妙にきっぱり分かれている。「これ、ほんとに1位と2位で分けていいの?」と引っかかったこと、ないですか?

AIは候補ごとに点数(スコア)を出して、それを高い順に並べているだけ。だから点数さえ決まれば順位は機械的に決まる、というところまでは想像がつきます。でも、ここで一つ不思議が出てきます。点数が「89点と88点」でも「89点と45点」でも、出てくるのは同じ「1位・2位」という見た目です。差が大きかろうが小さかろうが、順位という表示は同じ強さできっぱり言い切ってくる。この「差の大きさが順位の見た目に出てこない」ところが、ちょっと気になるわけです。

目次

点数には「ブレ幅」が隠れている

ここで「AIの順位なんて参考程度でしょ」と流してしまうこともできます。でも、もう一歩だけ数学として捉えてみると、参考程度かどうかを自分で判定できるようになります。

カギは、AIが出す点数が「ぴったり一つに決まった真の値」ではなく、ある幅を持った予測だ、という見方です。AIは過去のデータから「だいたいこれくらいの良さだろう」と見積もっているだけなので、その見積もりには必ずブレがあります。同じ候補をちょっと違う条件で測れば、点数は89点だったり87点だったり91点だったりと揺れる。つまり一つの点数の裏には、「このあたりに収まりそう」というが隠れているんです。

この「点数 + そのブレ幅」という考え方は、統計でいう回帰の予測区間そのものです。ここで扱うのは、平均がどれくらいズレそうかを見る信頼区間ではなく、個々の候補の点数がどれくらい振れそうかを見る予測区間です。回帰というと身構えてしまいそうですが、やっていることは「データから線を引いて、次の値を予測する。ただし予測には誤差の幅もセットでつける」というだけ。点だけを見て順位にすると、この幅がまるごと消えてしまう。ここが、順位がきっぱり見える正体です。

回帰は点を予測するだけでなく、その予測がどれくらい振れるか(誤差の幅)もセットで持っている。点だけ見ると、この幅が見えなくなる。
回帰は点を予測するだけでなく、その予測がどれくらい振れるか(誤差の幅)もセットで持っている。点だけ見ると、この幅が見えなくなる。

同じ景色は、身近なところにもある

この「点に直すと幅が消える」現象、AIのランキングだけの話ではありません。

たとえば天気予報の「降水確率60%と50%」。数字は順番に並びますが、その裏には予報モデルの誤差があって、60%と50%を本気で区別していいかは別問題です。テストの偏差値で1位と2位が0.3違う、みたいなのも同じ。表示は順位でも、元はブレ幅を持った推定値だった、という話はあちこちに転がっています。一度この見方を覚えると、「順位」という強い見た目の下に、いつも幅が隠れていることに気づけます。

数式で正面から見てみる

では、点数のブレ幅を式で見てみます。回帰である候補の点数を予測したとき、その予測値を $\hat{y}$ と書きます。$\hat{y}$ は「予測した点数」、頭の上の帽子(ハット)は「これは実測じゃなくて見積もりですよ」という印です。

予測には誤差の幅がつくので、点数が収まりそうな範囲はだいたいこう書けます。

$$ \hat{y} \pm t \cdot s_{\text{pred}} $$

記号をほどきます。$\pm$ は「上にも下にもこれくらい振れる」という幅。$s_{\text{pred}}$(エス・予測)は予測のばらつきの大きさ、つまり「どれくらい自信がないか」を表す数字です。$t$(ティー)はその幅を何倍に広げて安全圏を取るか、という調整の係数だと思ってください。要するに右側の $t \cdot s_{\text{pred}}$ が、点数の上下に伸びるヒゲの長さです。

ここで極端な値を入れてみると、いっきに腑に落ちます。現実のAIモデルで誤差がほぼ0になることはまれなので、これは端の挙動を見るための極端な例だと思ってください。もし $s_{\text{pred}}$ がほぼ0、つまりAIが「絶対これくらい」と言い切れるくらい自信があるなら、ヒゲの長さはゼロ。点数はほぼ一点に決まり、順位もそのまま信じてよさそうです。逆に $s_{\text{pred}}$ が大きいと、ヒゲは長く伸びます。1位の範囲 $\hat{y}_1 \pm t s_{\text{pred}}$ と2位の範囲 $\hat{y}_2 \pm t s_{\text{pred}}$ が重なってしまうなら、点数の差はヒゲの中に飲み込まれている、ということ。これは「1位と2位は実質同率」と見るのが正直な読み方になります。

丸が予測した点数、縦のヒゲがその予測の振れ幅(予測区間)。1位と2位はヒゲが重なるので差は誤差の中。3位・4位はヒゲが離れていて、順位を信じてよい。
丸が予測した点数、縦のヒゲがその予測の振れ幅(予測区間)。1位と2位はヒゲが重なるので差は誤差の中。3位・4位はヒゲが離れていて、順位を信じてよい。

つまり見るべきは順位そのものではなく、1位と2位の点差が、このヒゲの長さより大きいかどうか。差がヒゲより大きければ、その順位は信じてよい場面。差がヒゲに埋もれているなら、同率扱いにして他の理由で選ぶべき場面、と分かれて見えてきます。

では、そのヒゲの長さは実務でどう見積もるのか。A/Bテストなら、平均の差をその標準誤差と比べて「本当に差があると言えそうか」を見ます。スコアリングモデルなら、クロスバリデーションや別データで何度か測り、同じ候補の点数がどれくらい揺れるかを見る。方法は場面で変わりますが、やっていることは同じです。点差だけでなく、点差を支えるブレ幅も一緒に見るんです。

ちなみに「表示された数字の差を、そのまま差として信じていいのか」という同じ問いは、AIの採点でも顔を出します。

候補を絞る「おすすめ」の裏側でも、近いことが起きています。

持ち帰り

次にAIがきれいなランキングを出してきたら、順位の数字ではなく「1位と2位の点差」をちらっと見てみてください。その差が、AI自身の自信のなさ(ヒゲの長さ)より大きいのか小さいのか。それだけ意識すると、同じランキングが「ここは1位を信じる場面」と「ここは上位を同列に並べて自分で選ぶ場面」に、すっと分かれて見えてくるかもしれませんよ?

あわせて読みたい関連記事。

よかったらシェアしてね!
  • URLをコピーしました!
目次