体系 › 情報理論
·無料·11分で読めます

情報理論とAI — 交差エントロピー損失はどこから来たのか

情報量は驚きの大きさ、エントロピーは平均の驚き、KL情報量は2つの分布のズレ。この3つを積み上げると、分類でいつも使っているあの損失関数が必然として出てきます。なぜ対数なのか、なぜあの形なのか、そしてperplexityが何を数えているのかまで。

要点

  • 情報量は I(x) = -log p(x) で表す驚きの大きさで、対数は「確率は掛け算・情報は足し算」の要請から一意に決まる。
  • エントロピー H(p) は平均の驚きで、選択肢が多く確率が均等に散るほど大きく、1点に集中するほど小さい。
  • KL情報量は「p が本当なのに q を信じている」せいで余計に払う驚きの平均で、常に0以上かつ対称ではない。
  • 交差エントロピーはエントロピーとKLの和で、H(p) は定数なので、その最小化はKL情報量の最小化と完全に同じである。
  • 正解がone-hotなら交差エントロピーは -log q_{c*} の1項になり、最尤推定の負の対数尤度と一字一句同じになる。
対象textタスクmath

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

分類モデルを学習させるとき、実際に最小化しているのはこれです。

H(p,q)=−∑xp(x)log⁡q(x)H(p, q) = -\sum_{x} p(x)\log q(x)
(1)

この式が言っているのは要するに、本当の分布 pp のもとで、モデルの分布 qq が各出来事に与えた確率の対数を、平均してマイナスを付けたものです。pp は正解側の確率分布、qq はモデルが出した確率分布、∑x\sum_x は起こりうる出来事すべてについて足す、という意味。これが交差エントロピーです。

記号を全部外して言い直すと、モデルは「実際に起きたほうに、どれだけ確率を置いていたか」だけで採点されているということです。式のどこにも「正解を当てろ」とは書いていません。書いてあるのは「起きたことを、あらかじめ見込んでいたか」だけです。

問いは1つ。なぜこの形なのか。 前記事のAIのための確率・統計では、最尤推定という入口から同じ式にたどり着きました。この記事はまったく別の入口——「情報とは何か」——から歩き、同じ場所に着きます。2本の道が交わることが、この損失関数が恣意的でないことの証明になります。

情報量: 驚きの大きさ

情報を測るとはどういうことか。1948年のシャノンの答えは徹底して実用的でした。情報の量とは、それを聞いたときの驚きの大きさである。

「明日、東の空から日が昇ります」——情報量ゼロ。「明日、東京に雪が降ります」——8月なら情報量は跳ね上がります。起こりにくいことほど、起きたときに運ぶ情報は大きい。

式にするには、3条件を満たす関数が要ります。確率1の出来事では0になること。確率が下がるほど大きくなること。そして独立な2つの出来事をまとめて聞いたときは、それぞれの情報量の足し算になること。3つ目が決定的です。確率は掛け算で合成されるのに、情報は足し算であってほしい。掛け算を足し算に変える関数は1つしかありません。

I(x)=−log⁡p(x)I(x) = -\log p(x)
(2)

この式が言っているのは要するに、確率の対数を取って符号を反転しただけ。確率1なら −log⁡1=0-\log 1 = 0 で驚きなし、確率0.5なら約0.69、確率0.01なら約4.6、0に近づけば無限大へ。対数が使われるのは慣習でも趣味でもなく、「確率は掛け算・情報は足し算」という要請から一意に決まるからです。

日常語に置き換えると、「まさか」と思って切り捨てていたことほど、起きたときに受け取るものが大きいという定義です。コインが表だったと聞いても心は動きませんが、特定の宝くじが当たったと聞けば話は別——あの感覚の差を、そのまま数にしています。

単位は対数の底で決まります。底2ならビット、自然対数ならナット。フレームワークが出す損失の値は、ほぼ例外なくナットです。

エントロピー: 平均の驚き

出来事1つの驚きが決まったので、次は分布全体としてどれくらい予測しにくいかを測ります。個々の情報量を、起こりやすさで重み付けして平均するだけです。

H(p)=−∑xp(x)log⁡p(x)=Ex∼p[−log⁡p(x)]H(p) = -\sum_{x} p(x)\log p(x) = \mathbb{E}_{x \sim p}\big[-\log p(x)\big]
(3)

この式が言っているのは要するに、その分布から1回引いたとき、平均してどれくらい驚くか。言い換えれば、その分布がどれだけ予測しにくいかの数値です。

普段の言葉にすると、エントロピーとは「1回覗いたら、どれくらい新しく知れる見込みがあるか」であり、それは「事前にどれだけ言い当てられないか」と同じことです。答えが分かっている分布は覗いても何も増えず、当てられない分布ほど覗く価値がある——その「覗く価値」の大きさだと思ってください。

極端な場合で確かめます。表が必ず出るコインなら驚きは常に0でエントロピーも0。公平なコインなら1ビット。6面ダイスなら約2.58ビット。選択肢が多く、確率が均等に散らばっているほど大きく、1点に集中しているほど小さくなります。

FIG 1温度を下げて分布を尖らせるとエントロピーは下がり、上げて平らにすると上がります。棒グラフの「平らさ」がそのままエントロピーの大きさだと思ってください

KL情報量: 2つの分布のズレ

ここからが本番です。本当の分布は pp なのに、私たちは qq だと思い込んでいる。この思い違いに、どんな代償があるか。

DKL(p ∥ q)=∑xp(x)log⁡p(x)q(x)D_{\mathrm{KL}}(p\,\|\,q) = \sum_{x} p(x)\log\frac{p(x)}{q(x)}
(4)

この式が言っているのは要するに、現実 pp に従って出来事が起きるとき、qq を信じているせいで余計に払う驚きの平均です。log⁡(p/q)\log(p/q) が「本当の確率と、思い込んでいる確率の食い違い」で、それを現実の起こりやすさ pp で重み付けして平均しています。

一文で言えば、世界の見え方が世界とズレているせいで、毎回どれだけ余計に驚かされるかを表した数です。重みの出どころにも注目してください。平均を取るときの重みは現実の起こりやすさ pp です。だから効いてくるのは「実際に起きること」についての読み違いで、pp がほぼ0の出来事について qq を外していても、ほとんど加算されません。

押さえるべき性質は3つ。常に0以上(思い違いで得はしない)、0になるのは p=qp = q のときだけ、そして対称ではない(DKL(p∥q)D_{\mathrm{KL}}(p\|q) と DKL(q∥p)D_{\mathrm{KL}}(q\|p) は別物なので「距離」とは呼びません)。

3つ目は実務に直結します。DKL(p∥q)D_{\mathrm{KL}}(p\|q) を小さくしようとすると、pp が値を持つ場所で qq が0だと log⁡(p/0)\log(p/0) が発散するため、qq は pp の広がりを全部覆いにいきます(ぼやけるが取りこぼさない)。逆向きを小さくすると qq は pp の山の1つに寄り添えば済むので、鋭いが偏った解になりがちです。

KL情報量は学習そのものにも顔を出します。知識蒸留は教師と生徒の分布のKLを縮める作業ですし、RLHF系の学習では「元のモデルから離れすぎないように」参照モデルとのKLを罰則として足すのが定石です。KLは「2つの分布をどれだけ違わせてよいか」の共通の物差しなのです。

交差エントロピー = エントロピー + KL

3つの量が出そろいました。実は、この3つはきれいに1本の式で結ばれます。

H(p,q)=H(p)+DKL(p ∥ q)H(p, q) = H(p) + D_{\mathrm{KL}}(p\,\|\,q)
(5)

この式が言っているのは要するに、モデルが払う驚きの総量は、「そもそも避けられない不確実さ」と「モデルのズレによる上乗せ」の和であるということ。

請求書に例えるなら、明細は2行しかないという話です。1行目は、データ自体が曖昧なので最初から払うことが決まっていた分。2行目は、モデルがズレているせいで上乗せされた分。学習で削れるのは2行目だけで、1行目には手が届きません。

ここに決定的な事実が1つあります。H(p)H(p) はデータ側の性質であって、モデルのパラメータ θ\theta には一切依存しません。つまり定数です。したがって、

交差エントロピーを最小化することは、KL情報量を最小化することと完全に同じ。

損失を下げる作業は、実際には「モデルの分布をデータの分布に近づける」作業そのものだった、ということです。学習曲線が下がるとき動いているのはKLの部分だけで、H(p)H(p) は動きません。だから損失には絶対に下がりきらない床があり、その高さが H(p)H(p) ——データ自体が持つ、どうやっても消せない不確実さです。言語モデルの損失が0にならないのは、実装の問題ではなく自然言語に本来の曖昧さがあるからです。

one-hotに潰すと、あの損失式になる

一般論を実際の分類問題に落とします。教師ラベルは普通「正解はクラス3」のように1つに決まっています。このとき pp は正解クラスだけが1で他が全部0の分布——one-hot です。

H(p,q)=−∑cyclog⁡qc=−log⁡qc∗H(p, q) = -\sum_{c} y_c \log q_c = -\log q_{c^*}

ycy_c は正解ラベル(正解クラスで1、他は0)、qcq_c はモデルがクラス cc に与えた確率、c∗c^* は正解クラスです。

この式が言っているのは要するに、和のうち yc=0y_c = 0 の項は全部消えるので、残るのは「正解クラスに与えた確率の対数にマイナスを付けたもの」1項だけだということ。

日常語にすれば、損失が訊いているのは1つだけ——正解だったほうに、どれだけ確率を置いていたか。不正解クラスに何を言ったかは、式に一度も現れません。そこへ確率を配ったぶんだけ正解側が痩せる、という形でしか効いてこないのです。

これは、損失関数と最適化で「分類の定番」として天下り式に出した −log⁡pi-\log p_i そのものです。そして前記事で最尤推定から導いた負の対数尤度とも、一字一句同じものです。情報理論から歩いても、確率論から歩いても、実装コードに書いてある式に着く。交差エントロピーが分類の標準である理由は、慣習ではなくこれです。

数値の感覚も持っておきます。正解に0.9を与えていればほぼ無罰、0.01なら罰は約4.6に跳ね上がる。自信を持って外すことを極端に嫌うこの性格も、「確率が低い出来事ほど驚きが大きい」という情報量の定義から自動的に出てきたものです。

perplexity: 実質何択で迷っているか

言語モデルの評価でよく見る perplexity(困惑度) も、この延長線上にあります。

PPL=exp⁡ ⁣(−1T∑t=1Tlog⁡pθ(xt∣x<t))\mathrm{PPL} = \exp\!\left(-\frac{1}{T}\sum_{t=1}^{T}\log p_{\theta}(x_t \mid x_{<t})\right)
(6)

TT はトークン数、pθ(xt∣x<t)p_{\theta}(x_t \mid x_{<t}) はそれまでの文脈のもとで実際に来たトークンに与えた確率です。指数の中身は、まさに1トークンあたりの交差エントロピーにほかなりません。

この式が言っているのは要するに、平均の驚きを、指数関数で「選択肢の数」に戻したもの。エントロピーは対数の世界の量なので、exp⁡\exp で戻すと個数の感覚になります。日常語にすれば、「このモデルが毎回、候補リストから当てずっぽうで1つ選んでいるのだとしたら、そのリストは何行あることになるか」という問いへの答えです。perplexityが20なら「平均して20択で迷いながら次の語を選んでいる」。1なら完全予測、語彙数と同じならまったく学習できていない、という読み方です。

注意は1つ。トークナイザやデータセットが違うモデル同士のperplexityは比較できません。同じ文章でも分割の仕方が違えばトークン数が変わり、1トークンあたりの値は簡単に動きます。

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

1. 損失の数値は単位を意識する 表示される交差エントロピーはナット単位です。log⁡2≈0.693\log 2 \approx 0.693 で割ればビット、exp⁡\exp すればperplexity。損失1.6なら e1.6≈5e^{1.6} \approx 5、「およそ5択で迷っている」と読み替えられます。

2. ラベルスムージングは「目標分布を少し平らにする」操作 正解に1.0を要求する代わりに、0.9を正解に、残りを他クラスへ薄く配ります。one-hotの目標は「正解の確率を1に=ロジットを無限大に」と要求するため過信を招く。目標エントロピーをわずかに上げることが、その圧力を緩めます。

3. KLを見たら向きを確認する DKLD_{\mathrm{KL}} が出てきたら、まずどちらが第1引数かを見てください。向きが変われば「広く覆う」か「1つの山に寄る」かという挙動そのものが変わります。実装バグの温床でもあります。

まとめ

損失関数がどこから来たかが分かれば、次はそれをどう下げるかです。手続きの側は損失関数と最適化と誤差逆伝播を1から解説にあります。

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

コメント

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