体系 › 確率・統計
·無料·10分で読めます

AIのための確率・統計 — モデルの出力は確率である

分類モデルもLLMも、返しているのは答えではなく確率分布です。分布・期待値・条件付き確率・ベイズの定理を記号から説明し、山場として「最尤推定がなぜ損失関数になるのか」を導きます。交差エントロピーもMSEも、発明されたのではなく出てきたものです。

要点

  • モデルが返すのは答えではなく確率分布で、softmax はスコアを「0以上・合計1」の確率に直す。
  • 期待値は起こりやすさで重み付けした平均で、論文の E は「データ全体で平均を取れ」という指示と読める。
  • 言語モデルは条件付き確率の連鎖で、文章全体の確率は次トークン確率の積になる。
  • 最尤推定に対数とマイナスを付けると、分類では交差エントロピー、正規分布を仮定した回帰では二乗誤差(MSE)になる。
  • 温度は確率に直す前にロジットを T で割って分布の尖り具合を変え、top-p は累積確率で裾を切る別の操作である。
対象textタスクmath

ゴール: この式を読めるようにする

学習の目的を書き下すとき、論文はほぼ必ずこの形を使います。

L(θ)=− E(x,y)∼D[log⁡pθ(y∣x)]\mathcal{L}(\theta) = -\,\mathbb{E}_{(x,y)\sim\mathcal{D}}\big[\log p_{\theta}(y \mid x)\big]
(1)

この式が言っているのは要するに、データを見せたとき、モデルが正解にどれだけ高い確率を割り当てられたか。その対数の平均に、マイナスを付けたものです。θ\theta はモデルのパラメータ、E\mathbb{E} は平均、D\mathcal{D} はデータの出どころ、∼\sim は「そこから取り出す」、pθ(y∣x)p_{\theta}(y \mid x) は「入力 xx を見たときモデルが yy に与える確率」、縦棒 ∣\mid が「〜という条件のもとで」です。

見慣れない記号が多いだけで、中身は難しくありません。そしてこの式が読めると、分類の損失も言語モデルの損失も、同じ1本の式の変形だと分かります。

モデルが返しているのは「答え」ではない

まずここを崩さないと先へ進めません。分類モデルは「猫」と答えているのではなく、全クラスに対する確率の一覧を返しています。猫0.82、犬0.15、その他0.03。表示のとき一番大きいものだけを見せているので、答えを1つ返しているように見えるだけです。

言語モデルも同じで、次の1トークンについて語彙全体(数万本)の確率の棒グラフを毎回作っています。この一覧を作る関数が softmax です。

pi=exp⁡(zi)∑jexp⁡(zj)p_i = \frac{\exp(z_i)}{\sum_{j} \exp(z_j)}
(2)

ziz_i はモデルが最後に出す生のスコア(ロジット。正の数とは限りません)、exp⁡\exp は指数関数、分母は全項目ぶんの合計です。

この式が言っているのは要するに、大小関係を保ったまま、全部を正の数にして、合計が1になるように割り直すということ。確率を名乗るには「0以上」「合計1」の2条件が要るので、exp⁡\exp で前者を、割り算で後者を満たしています。それ以上の思想はありません。

FIG 1同じロジットでも、温度を下げると分布が1点に尖り、上げると平らになります。尖った分布=自信がある、平らな分布=迷っている。この「尖り具合」が後で決定的に効いてきます

期待値: 「平均」の正式な書き方

E[X]=∑xx p(x)\mathbb{E}[X] = \sum_{x} x\,p(x)

XX は値が確率的に決まる量、p(x)p(x) はその値が出る確率です。この式が言っているのは要するに、起こりやすさで重み付けした平均。1が90%、100が10%で出るなら、期待値は単純平均の50.5ではなく 1×0.9+100×0.1=10.91 \times 0.9 + 100 \times 0.1 = 10.9 です。

論文で E\mathbb{E} を見たら、「データ全体で平均を取れ」という指示だと読めば9割合っています。実装では全データを見るのは重いので、ミニバッチの平均で代用します。式(1)の E\mathbb{E} もこれです。

条件付き確率: 言語モデルがやっているのはこれ

p(y∣x)p(y \mid x) は「xx が起きたという条件のもとで yy が起きる確率」です。傘の売上を単独で予測するのは難しくても、「雨が降っている」という条件が付けば話が変わる——条件付き確率は、この「情報が加わると見通しが変わる」を数式にしたものです。

言語モデルはこれを直列につないだだけの装置です。

p(x1,x2,…,xT)=∏t=1Tp(xt∣x<t)p(x_1, x_2, \ldots, x_T) = \prod_{t=1}^{T} p(x_t \mid x_{<t})
(3)

∏\prod(パイ)は「全部掛ける」、xtx_t は tt 番目のトークン、x<tx_{<t} は「それより前のトークン全部」です。

この式が言っているのは要するに、文章全体が生まれる確率は、1語ずつ「ここまでの文脈のもとで次にこれが来る確率」を掛け合わせたものだということ。モデルが計算しているのは右辺の各因子だけで、文章生成とはそれを順番に引いていく作業です。「次の単語を当てているだけ」という説明の正体がこれです。

ベイズの定理: 信念をデータで更新する

p(θ∣D)=p(D∣θ) p(θ)p(D)p(\theta \mid D) = \frac{p(D \mid \theta)\,p(\theta)}{p(D)}
(4)

θ\theta は仮説(モデルのパラメータ)、DD は観測データです。p(θ)p(\theta) は事前分布(見る前の思い込み)、p(D∣θ)p(D \mid \theta) は尤度(その仮説だとこのデータがどれくらい起きやすいか)、p(θ∣D)p(\theta \mid D) は事後分布(見た後の思い込み)、p(D)p(D) は合計を1にするための割り算です。

この式が言っているのは要するに、もともとの信念に、データの説明力を掛けて、信念を更新するということ。精度99%の検査で陽性が出ても、その病気が1万人に1人なら、実際に罹患している確率は5割を大きく下回ります。p(θ)p(\theta) が極端に小さいと、尤度の99%では簡単に覆せないからです。事前分布を無視すると判断を誤る——実務で効くのはほぼこの一点です。機械学習では正則化がこの形で解釈でき、重みを0付近へ引き寄せるL2正則化は「重みは0の近くにあるはず」という事前分布に対応します。

山場: 最尤推定が損失関数になる

ここが本題です。損失関数は誰かが趣味で決めたのではなく、確率の要請から出てきます。

いま手元にデータが NN 件あります。パラメータ θ\theta のモデルのもとで、このデータがまるごと観測される確率を書きます。

p(D∣θ)=∏i=1Npθ(yi∣xi)p(D \mid \theta) = \prod_{i=1}^{N} p_{\theta}(y_i \mid x_i)

この式が言っているのは要するに、各データが正解どおりに出る確率を、全件ぶん掛け合わせたもの。これを尤度と呼びます。方針は自然です——手元のデータが最も起きやすくなるように θ\theta を選ぶ。これが最尤推定です。

ただし積のままでは扱えません。0.9を1000回掛ければ数値は消し飛び、微分も面倒です。そこで対数を取ります。対数は単調増加なので、最大にする θ\theta は変わりません。さらに、最適化の世界は最小化で統一されているのでマイナスを付けます。

−log⁡p(D∣θ)=−∑i=1Nlog⁡pθ(yi∣xi)-\log p(D \mid \theta) = -\sum_{i=1}^{N} \log p_{\theta}(y_i \mid x_i)
(5)

この式が言っているのは要するに、「正解に与えた確率の対数」を全件足して、符号を反転しただけということ。積が和に化けています。

これを NN で割れば、冒頭の式(1)そのものです。そして分類問題では、この量に別の名前が付いています——交差エントロピー。損失関数と最適化で「分類の定番」として紹介したあの式は、発明されたのではなく最尤推定から出てきたものでした。

同じことを回帰でやると、さらに面白いことが起きます。「予測値のまわりに正規分布のばらつきがある」と仮定してみます。

p(y∣x,θ)=12πσ2exp⁡ ⁣(−(y−fθ(x))22σ2)p(y \mid x, \theta) = \frac{1}{\sqrt{2\pi\sigma^2}}\exp\!\left(-\frac{\big(y - f_{\theta}(x)\big)^2}{2\sigma^2}\right)

fθ(x)f_{\theta}(x) はモデルの予測値、σ\sigma(シグマ)はばらつきの大きさ。この式が言っているのは要するに、正解は予測値を中心とした釣鐘型に散らばっているという仮定です。

対数を取ると、θ\theta に関係する部分は −(y−fθ(x))22σ2-\dfrac{(y - f_{\theta}(x))^2}{2\sigma^2} だけが残ります。マイナスを付けて最小化すれば、出てくるのは二乗誤差です。

つまり MSE を選ぶことは、誤差が正規分布に従うと仮定することと同じ。外れ値の多いデータでMSEが暴れるのは、正規分布が「大きな外れはめったに起きない」という前提を置いているからです。損失関数を選ぶとは、データの生成過程に仮定を置くことにほかなりません。

バイアスと分散: 誤差を3つに分ける

E[(y^−y)2]=(バイアス)2+分散+ノイズ\mathbb{E}\big[(\hat{y} - y)^2\big] = (\text{バイアス})^2 + \text{分散} + \text{ノイズ}

この式が言っているのは要するに、予測の誤差は3種類に分解できるということ。バイアスは単純すぎるモデルの系統的なズレ、分散は訓練データを引き直すたび答えが暴れる度合い、ノイズはどんなモデルでも消せない雑音です。バイアス過大が未学習、分散過大が過学習——測り方は過学習と評価設計に。

サンプリング: 温度とtop-pが操作しているもの

分布が手に入ったら、そこから1つ選ぶ必要があります。ここで温度が効きます。

pi=exp⁡(zi/T)∑jexp⁡(zj/T)p_i = \frac{\exp(z_i / T)}{\sum_{j}\exp(z_j / T)}
(6)

TT が温度です。この式が言っているのは要するに、確率に直す前にロジットを TT で割る、それだけ。TT が小さいとスコアの差が拡大されて分布は尖り、大きいと差が圧縮されて平らになります。T→0T \to 0 の極限は最大値を必ず選ぶ貪欲法で、TT を上げるほど珍しい語も出やすくなります。図で確かめた「尖り具合」の正体がこれです。

top-p(核サンプリング)は別の操作です。確率の高い順に足していき、累積が pp を超えたところで打ち切って、残った候補だけで引き直します。top-k は上位 kk 個に絞る方式。どちらも裾の変な語を引かないための足切りで、分布の形そのものを変える温度とは役割が違います。事実を答えさせるなら温度は低め、案出しなら高め。ただし温度と top-p を同時に強く動かすと、どちらが効いたのか分からなくなります。

実務で効く3つのポイント

1. 「確率0.9」は「90%正しい」ではない 出力される確率は自信の表明であって、正解率の保証ではありません。0.9と答えた事例の9割が実際に正解であるとき、キャリブレーションが取れているといいます。閾値で自動処理を切り替えるなら、実データでこの対応を測ってください。

2. 確率を出してから対数を取らない log⁡0\log 0 は無限大に飛びます。softmax の結果に log⁡\log を掛ける実装は壊れやすいので、ロジットを直接受け取る関数(log-softmax、logits版の損失)を使ってください。

3. 対数尤度は「1トークンあたり」に直して比べる 合計値は系列長に比例するので、長さの違うデータ間では比較できません。トークン数で割るだけで多くの混乱が消えます。

まとめ

損失関数の出どころは確率だけではありません。もう1本、まったく別の入口——情報理論からも同じ式に到達します(情報理論とAI)。

運営: TechAthletes · 編集方針 · 出典の付け方 · 訂正の記録

コメント

コメントにはログインが必要です