情報理論と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項になり、最尤推定の負の対数尤度と一字一句同じになる。
ゴール: この式を読めるようにする
分類モデルを学習させるとき、実際に最小化しているのはこれです。
この式が言っているのは要するに、本当の分布 のもとで、モデルの分布 が各出来事に与えた確率の対数を、平均してマイナスを付けたものです。 は正解側の確率分布、 はモデルが出した確率分布、 は起こりうる出来事すべてについて足す、という意味。これが交差エントロピーです。
記号を全部外して言い直すと、モデルは「実際に起きたほうに、どれだけ確率を置いていたか」だけで採点されているということです。式のどこにも「正解を当てろ」とは書いていません。書いてあるのは「起きたことを、あらかじめ見込んでいたか」だけです。
問いは1つ。なぜこの形なのか。 前記事のAIのための確率・統計では、最尤推定という入口から同じ式にたどり着きました。この記事はまったく別の入口——「情報とは何か」——から歩き、同じ場所に着きます。2本の道が交わることが、この損失関数が恣意的でないことの証明になります。
情報量: 驚きの大きさ
情報を測るとはどういうことか。1948年のシャノンの答えは徹底して実用的でした。情報の量とは、それを聞いたときの驚きの大きさである。
「明日、東の空から日が昇ります」——情報量ゼロ。「明日、東京に雪が降ります」——8月なら情報量は跳ね上がります。起こりにくいことほど、起きたときに運ぶ情報は大きい。
式にするには、3条件を満たす関数が要ります。確率1の出来事では0になること。確率が下がるほど大きくなること。そして独立な2つの出来事をまとめて聞いたときは、それぞれの情報量の足し算になること。3つ目が決定的です。確率は掛け算で合成されるのに、情報は足し算であってほしい。掛け算を足し算に変える関数は1つしかありません。
この式が言っているのは要するに、確率の対数を取って符号を反転しただけ。確率1なら で驚きなし、確率0.5なら約0.69、確率0.01なら約4.6、0に近づけば無限大へ。対数が使われるのは慣習でも趣味でもなく、「確率は掛け算・情報は足し算」という要請から一意に決まるからです。
日常語に置き換えると、「まさか」と思って切り捨てていたことほど、起きたときに受け取るものが大きいという定義です。コインが表だったと聞いても心は動きませんが、特定の宝くじが当たったと聞けば話は別——あの感覚の差を、そのまま数にしています。
単位は対数の底で決まります。底2ならビット、自然対数ならナット。フレームワークが出す損失の値は、ほぼ例外なくナットです。
エントロピー: 平均の驚き
出来事1つの驚きが決まったので、次は分布全体としてどれくらい予測しにくいかを測ります。個々の情報量を、起こりやすさで重み付けして平均するだけです。
この式が言っているのは要するに、その分布から1回引いたとき、平均してどれくらい驚くか。言い換えれば、その分布がどれだけ予測しにくいかの数値です。
普段の言葉にすると、エントロピーとは「1回覗いたら、どれくらい新しく知れる見込みがあるか」であり、それは「事前にどれだけ言い当てられないか」と同じことです。答えが分かっている分布は覗いても何も増えず、当てられない分布ほど覗く価値がある——その「覗く価値」の大きさだと思ってください。
極端な場合で確かめます。表が必ず出るコインなら驚きは常に0でエントロピーも0。公平なコインなら1ビット。6面ダイスなら約2.58ビット。選択肢が多く、確率が均等に散らばっているほど大きく、1点に集中しているほど小さくなります。
KL情報量: 2つの分布のズレ
ここからが本番です。本当の分布は なのに、私たちは だと思い込んでいる。この思い違いに、どんな代償があるか。
この式が言っているのは要するに、現実 に従って出来事が起きるとき、 を信じているせいで余計に払う驚きの平均です。 が「本当の確率と、思い込んでいる確率の食い違い」で、それを現実の起こりやすさ で重み付けして平均しています。
一文で言えば、世界の見え方が世界とズレているせいで、毎回どれだけ余計に驚かされるかを表した数です。重みの出どころにも注目してください。平均を取るときの重みは現実の起こりやすさ です。だから効いてくるのは「実際に起きること」についての読み違いで、 がほぼ0の出来事について を外していても、ほとんど加算されません。
押さえるべき性質は3つ。常に0以上(思い違いで得はしない)、0になるのは のときだけ、そして対称ではない( と は別物なので「距離」とは呼びません)。
3つ目は実務に直結します。 を小さくしようとすると、 が値を持つ場所で が0だと が発散するため、 は の広がりを全部覆いにいきます(ぼやけるが取りこぼさない)。逆向きを小さくすると は の山の1つに寄り添えば済むので、鋭いが偏った解になりがちです。
KL情報量は学習そのものにも顔を出します。知識蒸留は教師と生徒の分布のKLを縮める作業ですし、RLHF系の学習では「元のモデルから離れすぎないように」参照モデルとのKLを罰則として足すのが定石です。KLは「2つの分布をどれだけ違わせてよいか」の共通の物差しなのです。
交差エントロピー = エントロピー + KL
3つの量が出そろいました。実は、この3つはきれいに1本の式で結ばれます。
この式が言っているのは要するに、モデルが払う驚きの総量は、「そもそも避けられない不確実さ」と「モデルのズレによる上乗せ」の和であるということ。
請求書に例えるなら、明細は2行しかないという話です。1行目は、データ自体が曖昧なので最初から払うことが決まっていた分。2行目は、モデルがズレているせいで上乗せされた分。学習で削れるのは2行目だけで、1行目には手が届きません。
ここに決定的な事実が1つあります。 はデータ側の性質であって、モデルのパラメータ には一切依存しません。つまり定数です。したがって、
交差エントロピーを最小化することは、KL情報量を最小化することと完全に同じ。
損失を下げる作業は、実際には「モデルの分布をデータの分布に近づける」作業そのものだった、ということです。学習曲線が下がるとき動いているのはKLの部分だけで、 は動きません。だから損失には絶対に下がりきらない床があり、その高さが ——データ自体が持つ、どうやっても消せない不確実さです。言語モデルの損失が0にならないのは、実装の問題ではなく自然言語に本来の曖昧さがあるからです。
one-hotに潰すと、あの損失式になる
一般論を実際の分類問題に落とします。教師ラベルは普通「正解はクラス3」のように1つに決まっています。このとき は正解クラスだけが1で他が全部0の分布——one-hot です。
は正解ラベル(正解クラスで1、他は0)、 はモデルがクラス に与えた確率、 は正解クラスです。
この式が言っているのは要するに、和のうち の項は全部消えるので、残るのは「正解クラスに与えた確率の対数にマイナスを付けたもの」1項だけだということ。
日常語にすれば、損失が訊いているのは1つだけ——正解だったほうに、どれだけ確率を置いていたか。不正解クラスに何を言ったかは、式に一度も現れません。そこへ確率を配ったぶんだけ正解側が痩せる、という形でしか効いてこないのです。
これは、損失関数と最適化で「分類の定番」として天下り式に出した そのものです。そして前記事で最尤推定から導いた負の対数尤度とも、一字一句同じものです。情報理論から歩いても、確率論から歩いても、実装コードに書いてある式に着く。交差エントロピーが分類の標準である理由は、慣習ではなくこれです。
数値の感覚も持っておきます。正解に0.9を与えていればほぼ無罰、0.01なら罰は約4.6に跳ね上がる。自信を持って外すことを極端に嫌うこの性格も、「確率が低い出来事ほど驚きが大きい」という情報量の定義から自動的に出てきたものです。
perplexity: 実質何択で迷っているか
言語モデルの評価でよく見る perplexity(困惑度) も、この延長線上にあります。
はトークン数、 はそれまでの文脈のもとで実際に来たトークンに与えた確率です。指数の中身は、まさに1トークンあたりの交差エントロピーにほかなりません。
この式が言っているのは要するに、平均の驚きを、指数関数で「選択肢の数」に戻したもの。エントロピーは対数の世界の量なので、 で戻すと個数の感覚になります。日常語にすれば、「このモデルが毎回、候補リストから当てずっぽうで1つ選んでいるのだとしたら、そのリストは何行あることになるか」という問いへの答えです。perplexityが20なら「平均して20択で迷いながら次の語を選んでいる」。1なら完全予測、語彙数と同じならまったく学習できていない、という読み方です。
注意は1つ。トークナイザやデータセットが違うモデル同士のperplexityは比較できません。同じ文章でも分割の仕方が違えばトークン数が変わり、1トークンあたりの値は簡単に動きます。
実務で効く3つのポイント
1. 損失の数値は単位を意識する 表示される交差エントロピーはナット単位です。 で割ればビット、 すればperplexity。損失1.6なら 、「およそ5択で迷っている」と読み替えられます。
2. ラベルスムージングは「目標分布を少し平らにする」操作 正解に1.0を要求する代わりに、0.9を正解に、残りを他クラスへ薄く配ります。one-hotの目標は「正解の確率を1に=ロジットを無限大に」と要求するため過信を招く。目標エントロピーをわずかに上げることが、その圧力を緩めます。
3. KLを見たら向きを確認する が出てきたら、まずどちらが第1引数かを見てください。向きが変われば「広く覆う」か「1つの山に寄る」かという挙動そのものが変わります。実装バグの温床でもあります。
まとめ
- 情報量 は驚きの大きさ。対数なのは「確率は掛け算・情報は足し算」の要請から一意に決まるため
- エントロピー は平均の驚き。分布が平らなほど大きく、1点に集中するほど小さい
- KL情報量は「 が本当なのに を信じている」ことで余計に払う驚き。0以上・非対称で、距離ではない
- 交差エントロピー = エントロピー + KL。 は定数なので、損失の最小化はKLの最小化と同じ
- 正解がone-hotなら交差エントロピーは に潰れ、最尤推定の式と一致する
- perplexity は交差エントロピーを指数で戻したもの。「実質何択で迷っているか」を数える
損失関数がどこから来たかが分かれば、次はそれをどう下げるかです。手続きの側は損失関数と最適化と誤差逆伝播を1から解説にあります。
コメント
コメントにはログインが必要です