はじめに
前回の記事では、ベイズ更新を使ってAIがどのように確信度を深めていくのかを解説しました。
今回は、画像認識や自然言語処理などの「分類タスク」において、損失関数(Loss)として必ず登場する「交差エントロピー誤差(Cross-Entropy Loss)」の正体に迫ります。
なぜ分類問題では平均二乗誤差(MSE)ではなく交差エントロピーを使うのか?そして、論文によく出てくる「KLダイバージェンス」とはどう繋がっているのか?
「荷造り(コスト)」という1つの統一されたイメージを使って、直感的に、そして数学的に解き明かします。
1. 3つの情報量を「荷造り(コスト)」で理解する
情報理論における3つの重要な数式は、「旅行の荷造りにかかるコスト」に例えると完全に一本の線で繋がります。
① エントロピー:最低限必要な荷物
エントロピー $H(P)$ は、真実の世界(真の確率分布 $P$)に合わせたときに、「どうやっても削れない最低限必要な荷物」を表します。
例えば、旅行先の天気が「晴れ50% / 雪50%」のように予測不能(カオス)であればあるほど、両方の準備が必要になり、最低限の荷物 $H(P)$ は大きくなります。逆に「晴れ100%」と分かっていれば、荷物は最小で済みます。
② KLダイバージェンス:予測のズレによる余分な荷物
KLダイバージェンス $D_{KL}(P \parallel Q)$ は、真実の天気 $P$ に対して、AIが間違った天気予報 $Q$ を信じたことで生じた「ズレによる余分な荷物」です。
常夏のハワイ($P$)に行くのに、AIが雪($Q$)だと勘違いして準備したダウンジャケットがこれに該当します。予測が完璧に当たっていれば、この余分な荷物は $0$ になります。
③ 交差エントロピー:持ち込んだ荷物の総量
交差エントロピー $H(P, Q)$ は、AIの予測 $Q$ を信じて準備した結果、最終的にあなたが持ち込むことになった「荷物の総量(トータルコスト)」です。
2. すべてが繋がる魔法の式
これら3つの概念は、以下の非常に美しい足し算の式で繋がっています。
$$H(P, Q) = H(P) + D_{KL}(P \parallel Q)$$
直感的な意味はこうです。
荷物の総量 = 最低限必要な荷物 + ズレによる余分な荷物
機械学習の最大の目的は、自分の予測を真実に近づけること、つまりKLダイバージェンス(余分な荷物)を $0$ にすることです。
しかし、学習中のAIは右辺にある「真のエントロピー $H(P)$」を操作することができません(現実の天気をAIが変えることはできないため、これは定数です)。
だからこそAIは、自分が操作できる左辺の「交差エントロピー $H(P, Q)$(荷物の総量)」をひたすら最小化するように学習を進めます。総量を削っていけば、絶対に減らせない最低限の荷物 $H(P)$ に底当たりし、自動的に余分な荷物(KLダイバージェンス)が $0$ に押しつぶされるからです。
3. なぜ分類問題ではワンホットベクトルを使うのか?
分類タスク(例:犬か猫かを当てる)において、正解データは通常「犬100%、猫0%」というワンホットベクトルで与えられます。
この「100%正解がわかっているデータ」を先ほどの式に当てはめると、驚くべきことが起きます。
100%犬だと分かっている情報に「予測不能さ」は存在しないため、真のエントロピー(最低限の荷物)は完全にゼロになります。
$$H(P) = 0$$
これを先ほどの式に代入します。
$$H(P, Q) = 0 + D_{KL}(P \parallel Q)$$
$$H(P, Q) = D_{KL}(P \parallel Q)$$
なんと、分類問題においては「交差エントロピー」と「KLダイバージェンス」の値が完全に一致(イコール)するのです。
AIの視点から見た Loss の正体
AIが「犬である」と予測した確率を $q_1$ とします。
このとき、交差エントロピーを数式で真面目に計算すると、正解クラス(犬)以外の確率はすべて $0$ を掛けられて消滅するため、以下の非常にシンプルな形だけが残ります。
$$Loss = -\log(q_1)$$
つまりAIは、「犬だか猫だか出力はいっぱいあるけど、正解がワンホットベクトルなら、**『自分がどれだけ正解クラスだと強く信じられたか($q_1$)』の1点だけを見ればいい。**間違った猫の確率なんて計算では全部無視して構わない!」と考えているのです。
これが、PyTorchなどで使われている CrossEntropyLoss の真の姿です。
4. ビットからナットへ:深層学習への橋渡し
最後に、情報理論の教科書から深層学習の実装に移る際の「隠された単位のすり替え」について解説します。
情報理論では、情報量の単位として底が $2$ の対数関数を用いた**「ビット(bit:$\log_2$)」**が使われます。人間の直感にはこれが一番合っています。
しかし、深層学習でAIが実際に計算(最適化)を行うときは、しれっと底がネイピア数 $e$ である**「ナット(nat:$\ln$)」**にすり替わります。
なぜ単位を変えるのでしょうか?その理由は、AIが何百万回と繰り返す「微分」の計算スピードにあります。
ビット(底が $2$ )の対数を微分すると、分母に $\ln 2$ という中途半端な定数がゴミとしてくっついてしまいます。
$$\frac{d}{dx}\log_2(x) = \frac{1}{x \ln 2}$$
一方で、ナット(底が $e$ )の自然対数を微分すると、この上なく美しい形になります。
$$\frac{d}{dx}\ln(x) = \frac{1}{x}$$
AIは、毎回 $\ln 2$ で割り算をするという無駄な計算リソースを省くために、最適化の式に組み込まれる瞬間に、単位をビットからナット(自然対数)に切り替えているのです。
まとめ
- エントロピー $H(P)$:真のデータが持つ最低限の荷物。ワンホットベクトルの場合は $0$ になる。
- 交差エントロピー $H(P, Q)$:持ち込んだ荷物の総量。AIはこれを最小化しようとする。
- KLダイバージェンス:予測のズレによる無駄な荷物。
- ビットとナット:人間が理解するための「ビット」と、AIが高速に微分・最適化するための「ナット」。
最適化(微積分)の都合と、情報理論(確率)の世界が「ナット」という単位を介して見事に繋がりました。数式の裏にある意味を直感で捉えられれば、深層学習の論文やコードもずっと読みやすくなるはずです!