自己情報量・エントロピー・KLダイバージェンス・クロスエントロピーを1つのストーリーで理解する【新人研修の講師向け】

こんにちは。ゆうせいです。

機械学習の研修で、受講者が最初につまずきやすいのが情報理論の用語です。自己情報量、エントロピー、KLダイバージェンス、クロスエントロピーと、似た名前の数式が次々に登場するため、「結局どれが何なのか」が分からなくなってしまいます。

この4つは、バラバラの知識ではありません。「驚き」という1つのアイデアから順番に組み立てられた、ひと続きの概念です。

今回は、ある町の気象台で働く新人通信士の物語を通して、4つの概念を順番に説明します。高校数学(確率と対数)が分かれば理解できる内容にしています。各章の終わりには、受講者に出せる練習問題と、講師向けの補足を付けました。研修の進め方の例も最後に載せていますので、授業の組み立てにそのまま使ってください。

全体像:4つの概念の関係

物語に入る前に、4つの概念の関係を一覧で示します。受講者にも、最初にこの地図を見せておくと迷子になりにくくなります。

順番概念ひとことで言うと物語での意味
1自己情報量1つの出来事の驚きの大きさ1回の天気を送るのに必要な電信の長さ
2エントロピー驚きの平均正しい暗号表を使ったときの、1日あたりの平均の長さ
3クロスエントロピー思い込みで測った驚きの平均間違った暗号表を使ったときの、1日あたりの平均の長さ
4KLダイバージェンス思い込みによる余計な驚き間違った暗号表のせいで増えた長さ

そして、4つの概念は次の1本の式でつながります。

H(P, Q) = H(P) + D_{KL}(P \| Q)

クロスエントロピー = エントロピー + KLダイバージェンス、という関係です。この式の意味が物語の最後に分かることを目標に進めます。

なお、研修でのストーリーは「自己情報量 → エントロピー → KLダイバージェンス → クロスエントロピー」の順に話すと、最後に機械学習の損失関数へ自然につなげられます。この記事もその順番で進めます。

物語の舞台

山あいにあるミナト町には、小さな気象台があります。気象台の仕事は、毎朝その日の天気を、遠くの都市にある本部へ電信で送ることです。

電信の料金は、送る記号の長さで決まります。0か1の記号を1つ送るごとに、料金がかかります。この0か1の記号1つ分を、1ビットと呼びます。

ミナト町の天気は、長年の記録から次の確率で起こることが分かっています。

天気確率
晴れ1/2
くもり1/4
雨1/8
雪1/8

この気象台に、新人通信士のハルさんが配属されました。ハルさんの最初の課題は、「どうすれば電信の料金を安くできるか」を考えることです。

第1章 自己情報量:「驚き」に大きさを付ける

物語

配属初日、ベテラン通信士のミドリさんは、ハルさんにこう尋ねました。

「晴れと雪、本部の人が聞いてより驚くのはどちらだと思う?」

ハルさんは答えました。「雪です。めったに降らないので」

「そのとおり。よく起こることを聞いても、ほとんど新しい発見はない。めったに起こらないことを聞くと、大きな発見がある。この驚きの大きさを数値にしたものが、自己情報量だよ」

自己情報量の式

確率 p(x) で起こる出来事 x の自己情報量 I(x) は、次の式で表します。

I(x) = -\log_2 p(x)

  • p(x):出来事 x が起こる確率
  • log2:2を底とする対数。「2を何回掛けるとその数になるか」を表します
  • マイナス:確率は1以下なので対数は0以下になります。驚きをプラスの値で表すためにマイナスを付けます

ミナト町の天気で計算してみます。

天気確率自己情報量
晴れ1/21ビット
くもり1/42ビット
雨1/83ビット
雪1/83ビット

たとえば雨は、次のように計算します。

-\log_2 \frac{1}{8} = \log_2 8 = 3

8は2を3回掛けた数なので、答えは3ビットです。

なぜ対数を使うのか

ミドリさんは続けました。

「驚きを測るなら、確率の逆数(1/p)でもよさそうだよね。でも対数を使うのには理由がある。晴れの次の日も晴れになる確率は 1/2 × 1/2 = 1/4。2日分の驚きは、1日分の驚きの2倍になってほしい。対数を使うと、掛け算が足し算に変わるから、それが実現できるんだ」

-\log_2 \left( \frac{1}{2} \times \frac{1}{2} \right) = 1 + 1 = 2

独立した出来事の驚きは足し算できる。この性質があるため、自己情報量には対数が使われます。

物語での意味:電信の長さ

「そして、ここからが大事なところ」とミドリさんは言いました。

「自己情報量は、その天気を送るのに必要な電信の長さの目安にもなる。よく起こる晴れには短い記号を、めったに起こらない雪には長い記号を割り当てると、全体の料金が安くなるんだ」

ハルさんが作った暗号表は次のとおりです。

天気記号長さ
晴れ01ビット
くもり102ビット
雨1103ビット
雪1113ビット

記号の長さが、自己情報量とぴったり一致しています。どの記号も他の記号の先頭部分になっていないため、続けて送っても区切りを間違えずに読み取れます。

練習問題1

確率 1/16 で起こる出来事の自己情報量は何ビットでしょうか。

  1. 16ビット
  2. 4ビット
  3. 1/16ビット
  4. 8ビット

解答:2

解説:自己情報量は -log2(1/16) = log2 16 です。16は2を4回掛けた数なので、4ビットになります。

  • 1は、確率の逆数をそのまま答えています。対数をとる必要があります
  • 3は、確率そのものを答えています。確率が小さいほど自己情報量は大きくなります
  • 4は、16を2で割った値です。対数は割り算ではなく「2を何回掛けるか」を表します

講師向け補足

  • 受講者がつまずきやすいのは対数です。「log2 8 = 3 は、2を3回掛けると8になるという意味」と、具体的な数で確認してから式に入ると理解が進みます
  • 「確率が小さいほど驚きが大きい」という直感を、先に受講者自身に言わせると定着しやすくなります
  • 受講者への問いかけ例:「毎日晴れる砂漠の町で『今日は晴れ』と聞いたら、驚きは何ビットでしょうか」(答え:確率1なので0ビット)

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

物語

1か月後、本部から連絡がありました。

「来年度の電信料金の予算を立てたいので、1日あたり平均何ビットかかるか教えてほしい」

ハルさんは考えました。晴れの日は1ビット、雪の日は3ビット。毎日の長さは違うけれど、それぞれの天気が起こる確率で重みを付けて平均すればよいはずです。

\frac{1}{2} \times 1 + \frac{1}{4} \times 2 + \frac{1}{8} \times 3 + \frac{1}{8} \times 3 = 1.75

1日あたり平均1.75ビットです。

ミドリさんは言いました。「それが、ミナト町の天気のエントロピーだよ。そして1.75ビットは、どんなに工夫した暗号表を使っても、これより短くはできない限界の値なんだ」

エントロピーの式

確率分布 P のエントロピー H(P) は、自己情報量の期待値(確率で重みを付けた平均)です。

H(P) = -\sum_{x} p(x) \log_2 p(x)

  • Σ(シグマ):すべての出来事 x について足し合わせる記号
  • p(x):出来事 x の確率(重み)
  • -log2 p(x):出来事 x の自己情報量

つまり、「自己情報量 × その確率」をすべての出来事について足したものです。

エントロピーは「予測しにくさ」

ハルさんは、隣のヤマ町の気象台とも比べてみました。

  • ヤマ町A:晴れ、くもり、雨、雪がすべて 1/4 で起こる町
  • ヤマ町B:ほぼ毎日晴れる町(晴れの確率がほぼ1)

ヤマ町Aのエントロピーは、すべての天気が2ビットなので、平均も2ビットです。

-4 \times \frac{1}{4} \log_2 \frac{1}{4} = 2

ヤマ町Bでは、晴れることがほぼ確実なので、驚きはほとんどありません。エントロピーはほぼ0ビットになります。

町天気の傾向エントロピー
ヤマ町Bほぼ毎日晴れほぼ0ビット
ミナト町晴れが多い1.75ビット
ヤマ町Aどの天気も同じ確率2ビット

エントロピーは、「結果をどれだけ予測しにくいか」を表す値です。すべての結果が同じ確率で起こるとき、予測が最も難しく、エントロピーは最大になります。4種類の結果があるときの最大値は log2 4 = 2ビットです。

練習問題2

表と裏が 1/2 ずつで出る公平なコインと、表が 0.99 の確率で出る偏ったコインがあります。エントロピーについて正しい説明はどれでしょうか。

  1. どちらのコインも結果が2種類なので、エントロピーは同じになる
  2. 偏ったコインは表がよく出るので、エントロピーは大きくなる
  3. 公平なコインのエントロピーは、0ビットになる
  4. 公平なコインのほうが予測しにくく、エントロピーは大きい

解答:4

解説:エントロピーは予測しにくさを表します。公平なコインはどちらが出るか予測できないため、エントロピーは最大の1ビットです。偏ったコインはほぼ表と予測できるため、エントロピーは0に近くなります。

  • 1は誤りです。エントロピーは結果の種類の数だけでなく、それぞれの確率の偏りによって変わります
  • 2は誤りです。偏りが大きいほど予測しやすくなり、エントロピーは小さくなります
  • 3は誤りです。0ビットになるのは、結果が確実に決まっている場合です

講師向け補足

  • エントロピーの式は、Σとマイナスが重なって難しく見えます。「自己情報量の平均」と言い換え、ミナト町の表を使って1行ずつ足し算を見せると抵抗感が下がります
  • 熱力学のエントロピー(乱雑さ)を知っている受講者もいます。「考え方は似ているが、ここでは確率の予測しにくさを表す」と区別しておきましょう
  • 受講者への問いかけ例:「サイコロ1回の結果のエントロピーと、コイン1回の結果のエントロピーは、どちらが大きいでしょうか」(答え:サイコロ。log2 6 ≈ 2.58ビットと1ビット)

第3章 KLダイバージェンス:思い込みによる損失

物語

翌年、ハルさんは別の町へ研修に出かけ、代わりに新人のソラさんが電信を担当することになりました。

ソラさんはミナト町に来たばかりで、天気の記録を見ていませんでした。そこで「天気はどれも同じくらい起こるだろう」と考え、すべての天気に2ビットの記号を割り当てた暗号表を作りました。

天気本当の確率 Pソラさんの思い込み Qソラさんの記号長さ
晴れ1/21/4002ビット
くもり1/41/4012ビット
雨1/81/4102ビット
雪1/81/4112ビット

1か月後、電信料金の請求書が届きました。1日あたり平均2ビットです。ハルさんの暗号表なら1.75ビットで済んでいたので、1日あたり0.25ビット多く払っていたことになります。

研修から戻ったハルさんは言いました。「この0.25ビットが、思い込みと現実のずれによる損失です。この損失の大きさを、KLダイバージェンスといいます」

KLダイバージェンスの式

本当の分布 P と、思い込みの分布 Q のKLダイバージェンスは次の式で表します。

D_{KL}(P \| Q) = \sum_{x} p(x) \log_2 \frac{p(x)}{q(x)}

  • p(x):本当の確率(実際にその天気が起こる割合)
  • q(x):思い込みの確率(暗号表を作るときに想定した確率)
  • log2(p(x)/q(x)):思い込みで作った記号の長さ -log2 q(x) と、最適な記号の長さ -log2 p(x) の差

つまり、「1回あたりの記号の長さの差」を、本当の確率で重みを付けて平均したものです。

ミナト町で計算してみます。

天気p(x)q(x)長さの差p(x) × 長さの差
晴れ1/21/410.5
くもり1/41/400
雨1/81/4-1-0.125
雪1/81/4-1-0.125
合計0.25

晴れの日は、ハルさんの記号より1ビット長くなります。雨と雪の日は、逆に1ビット短くなります。しかし晴れの日のほうがずっと多いため、平均すると0.25ビットの損になります。請求書の結果と一致しました。

KLダイバージェンスの性質

  • 必ず0以上になる:どんな暗号表を作っても、本当の確率に合わせた暗号表より平均が短くなることはありません
  • 0になるのは、P と Q が完全に一致するときだけ:思い込みが現実と同じなら、損失はありません
  • 向きによって値が変わる:D(P‖Q) と D(Q‖P) は一般に異なります

3つ目の性質を確認します。本当の分布が P = (1/2, 1/2)、思い込みが Q = (1/4, 3/4) のとき、計算すると次のようになります。

  • D(P‖Q) ≈ 0.208ビット
  • D(Q‖P) ≈ 0.189ビット

値が異なるため、KLダイバージェンスは、地図上の2点間の距離のような「どちらから測っても同じ値」にはなりません。そのため「KL距離」と呼ばれることもありますが、厳密には距離ではありません。

練習問題3

KLダイバージェンス D(P‖Q) について、正しい説明はどれでしょうか。

  1. P と Q が一致するとき0になり、それ以外は正の値になる
  2. P と Q を入れ替えても、必ず同じ値になる
  3. Q が P とずれるほど、値はマイナスの方向に大きくなる
  4. P のエントロピーが大きいほど、必ず値も大きくなる

解答:1

解説:KLダイバージェンスは、思い込み Q を使ったことによる余計なコストです。Q が P と一致すれば余計なコストは0で、ずれがあれば正の値になります。

  • 2は誤りです。KLダイバージェンスは向きによって値が変わります
  • 3は誤りです。KLダイバージェンスは0以上の値しかとりません
  • 4は誤りです。KLダイバージェンスは P と Q のずれによって決まり、P のエントロピーの大きさとは直接関係しません

講師向け補足

  • KLダイバージェンスの式で最もつまずきやすいのは、log の中が分数になっている点です。「log(p/q) = (-log q) - (-log p) = 思い込みの長さ - 正しい長さ」と分解して見せると、意味がつかみやすくなります
  • 雨と雪の日に長さの差がマイナスになる点に、受講者は疑問を持ちます。「個別の日では得をすることもあるが、平均すると必ず損になる」という点を強調しましょう
  • 受講者への問いかけ例:「ソラさんが晴れの確率を 1/2 と正しく見積もっていたら、損失はどうなるでしょうか」

第4章 クロスエントロピー:思い込みで測った平均

物語

ハルさんは、請求書の「1日あたり平均2ビット」という値に注目しました。

「この2ビットは、本当の天気の確率 P で起こる出来事を、思い込みの確率 Q で作った暗号表で送ったときの平均の長さです。これをクロスエントロピーといいます」

そして、ここまでの3つの値を並べました。

  • エントロピー H(P):1.75ビット(正しい暗号表での平均)
  • KLダイバージェンス D(P‖Q):0.25ビット(思い込みによる損失)
  • クロスエントロピー H(P, Q):2ビット(思い込みの暗号表での平均)

1.75 + 0.25 = 2。請求額は、「避けられない最低限のコスト」と「思い込みによる余計なコスト」の合計だったのです。

クロスエントロピーの式

H(P, Q) = -\sum_{x} p(x) \log_2 q(x)

エントロピーの式とよく似ていますが、log の中が p(x) ではなく q(x) になっています。

  • 重み p(x):実際に起こる頻度は、本当の確率で決まる
  • 長さ -log2 q(x):記号の長さは、思い込みの確率で決めた

本当の確率と思い込みの確率が交差(クロス)しているため、クロスエントロピーと呼ばれます。

ミナト町で計算すると、次のとおりです。

-\left( \frac{1}{2} \log_2 \frac{1}{4} + \frac{1}{4} \log_2 \frac{1}{4} + \frac{1}{8} \log_2 \frac{1}{4} + \frac{1}{8} \log_2 \frac{1}{4} \right) = 2

4つの概念をつなぐ式

ここで、冒頭の式に戻ります。

H(P, Q) = H(P) + D_{KL}(P \| Q)

式の上でも確かめてみます。KLダイバージェンスの log を分解すると、次のようになります。

D_{KL}(P \| Q) = \sum_{x} p(x) \log_2 p(x) - \sum_{x} p(x) \log_2 q(x) = -H(P) + H(P, Q)

両辺に H(P) を足すと、上の関係式が得られます。

機械学習とのつながり

物語はここで機械学習の世界につながります。

ミナト町の気象台に、明日の天気を予測するAIが導入されました。AIは毎日「晴れ70%、くもり20%、雨5%、雪5%」のように、確率で予測を出します。この予測が思い込みの分布 Q です。そして、実際に起こった天気が本当の分布 P です。

AIの予測を良くするとは、Q を P に近づけることです。つまり、KLダイバージェンスを小さくすることが目標になります。

ここで、クロスエントロピー = エントロピー + KLダイバージェンス の関係が役に立ちます。エントロピー H(P) は本当の天気だけで決まる値で、AIがどう予測しても変わりません。そのため、クロスエントロピーを小さくすることは、KLダイバージェンスを小さくすることと同じ意味になります。

クロスエントロピーは式が単純で計算しやすいため、機械学習ではクロスエントロピーを損失関数(予測の悪さを表す値)として使い、これを最小にするように学習を進めます。

正解が1つのときのクロスエントロピー

機械学習の分類問題では、正解は1つです。ある日の天気が実際に雨だった場合、本当の分布 P は「雨の確率が1、それ以外は0」になります。このような表し方を one-hot表現といいます。

このとき、クロスエントロピーの式の中で p(x) が0の項はすべて消え、雨の項だけが残ります。

H(P, Q) = -\log_2 q(rain)

つまり、「正解に割り当てた確率の自己情報量」がそのまま損失になります。

AI雨に割り当てた確率損失
AI-A0.8約0.32ビット
AI-B0.1約3.32ビット

正解に高い確率を割り当てたAIは、損失が小さくなります。正解をほとんど予想していなかったAIは「大きく驚いた」ことになり、損失が大きくなります。第1章の「驚き」が、ここで損失関数として再登場するのです。

練習問題4

AIの予測の分布 Q を本当の分布 P に近づけたいとき、クロスエントロピーを最小化すればよい理由として、最も適切なものはどれでしょうか。

  1. クロスエントロピーは、P と Q を入れ替えても同じ値になるから
  2. クロスエントロピーは、P のエントロピーと必ず等しくなるから
  3. P のエントロピーは一定なので、KLダイバージェンスの最小化と同じになるから
  4. クロスエントロピーは、Q のエントロピーだけで決まる値だから

解答:3

解説:クロスエントロピー = P のエントロピー + KLダイバージェンス です。P のエントロピーは正解データだけで決まる一定の値なので、クロスエントロピーを小さくすることは、KLダイバージェンスを小さくすることと同じになります。

  • 1は誤りです。クロスエントロピーも、P と Q を入れ替えると値が変わります
  • 2は誤りです。等しくなるのは P と Q が一致したときだけで、通常は KLダイバージェンスの分だけ大きくなります
  • 4は誤りです。クロスエントロピーは、P と Q の両方を使って計算します

講師向け補足

  • 4つの概念の関係を図にする場合は、横棒グラフが効果的です。全体の長さをクロスエントロピー(2ビット)とし、そのうち1.75ビットをエントロピー、残りの0.25ビットをKLダイバージェンスとして色分けします
  • 受講者が混乱しやすいのは、「エントロピーとクロスエントロピーのどちらが log の中に q を使うか」です。「記号の長さは思い込み(q)で決まり、使う頻度は現実(p)で決まる」と、物語の場面で覚えさせると定着します
  • 受講者への問いかけ例:「AIが正解に確率0を割り当てたら、損失はどうなるでしょうか」(答え:-log 0 は無限大になる。実装では確率に非常に小さな値を足すなどの対策をとる)

追記:あわせて押さえたい重要な概念

4つの概念を理解したら、次の内容もあわせて押さえておくと、G検定、E資格、実務の理解がつながります。

対数の底と単位:ビットとナット

この記事では、電信の物語に合わせて2を底とする対数を使い、単位をビットとしました。一方、機械学習のライブラリでは、ネイピア数 e(約2.718)を底とする自然対数を使うのが一般的です。このときの単位はナット(nat)です。

底単位主に使う場面
2ビット(bit)情報理論、通信、データ圧縮
eナット(nat)機械学習の損失関数

底が違うだけで、考え方はまったく同じです。たとえば、正解に確率0.5を割り当てたときの損失は、1ビット、または約0.693ナットになります。PyTorchのCrossEntropyLossなどが出す値はナットで計算されています。

2値交差エントロピー(バイナリクロスエントロピー)

「迷惑メールかどうか」のように、結果が2種類しかない分類では、2値交差エントロピーを損失関数として使います。正解ラベル y(1または0)と、AIが出した「1である確率」q を使って、次のように表します。

L = -\{ y \log q + (1 - y) \log (1 - q) \}

  • 正解が1のとき:L = -log q となり、q が1に近いほど損失は小さくなります
  • 正解が0のとき:L = -log(1 - q) となり、q が0に近いほど損失は小さくなります

たとえば、AIが「迷惑メールの確率0.9」と予測したとき、本当に迷惑メールなら損失は約0.105ナット、迷惑メールでなければ約2.303ナットです。結果が2種類のときのクロスエントロピーを、1つの式にまとめたものだと理解してください。

クロスエントロピーの最小化と最尤推定

統計学には、「手元のデータが最も起こりやすくなるように、モデルのパラメータを決める」という最尤推定(さいゆうすいてい)の考え方があります。

データが起こる確率(尤度)を最大にすることは、その対数にマイナスを付けた値(負の対数尤度)を最小にすることと同じです。そして、負の対数尤度をデータ1件あたりの平均にしたものが、クロスエントロピーと一致します。

つまり、「クロスエントロピーを最小化する学習」は、「最尤推定」と同じことをしています。E資格では、この関係が問われることがあります。

条件付きエントロピーと相互情報量

ミナト町の天気は、前日の夕焼けを見ると少し予測しやすくなるとします。

  • 条件付きエントロピー H(X|Y):夕焼け(Y)を見た後に残っている、天気(X)の予測しにくさ
  • 相互情報量 I(X; Y):夕焼けを見たことで減った予測しにくさ

I(X; Y) = H(X) - H(X \mid Y)

相互情報量は、「Yを知ると、Xについてどれだけの情報が得られるか」を表します。XとYが無関係なら、Yを知ってもXの予測しにくさは変わらないため、相互情報量は0になります。機械学習では、予測に役立つ特徴量を選ぶ方法や、決定木の分割の良さを表す情報利得として使われます。

JSダイバージェンス

KLダイバージェンスは向きによって値が変わるため、扱いにくい場面があります。そこで、P と Q の平均の分布 M を使って、両方向から測ったKLダイバージェンスを平均したものが JSダイバージェンス(ジェンセン・シャノン・ダイバージェンス)です。

D_{JS}(P \| Q) = \frac{1}{2} D_{KL}(P \| M) + \frac{1}{2} D_{KL}(Q \| M)

ここで M は、P と Q の各確率を平均した分布です。

M = \frac{1}{2} (P + Q)

JSダイバージェンスは、P と Q を入れ替えても同じ値になります。画像を生成するAIである GAN(敵対的生成ネットワーク)の理論で登場するため、G検定やE資格でも出題されることがあります。

練習問題5

追記の内容について、正しい説明はどれでしょうか。

  1. 自然対数を使うと、クロスエントロピーの考え方そのものが変わる
  2. 相互情報量は、XとYが無関係なときに最大の値をとる
  3. JSダイバージェンスは、KLダイバージェンスと同じく向きで値が変わる
  4. クロスエントロピーの最小化は、最尤推定と同じことをしている

解答:4

解説:負の対数尤度をデータ1件あたりで平均したものがクロスエントロピーと一致するため、クロスエントロピーを最小化することは、尤度を最大化する最尤推定と同じ意味になります。

  • 1は誤りです。対数の底を変えると単位がビットからナットに変わるだけで、考え方は同じです
  • 2は誤りです。XとYが無関係なとき、相互情報量は0になります
  • 3は誤りです。JSダイバージェンスは両方向の平均をとるため、入れ替えても同じ値になります

Pythonで計算を確認する

物語に登場した値を、Pythonで確認できます。研修では、受講者に数値を変えて実行させると理解が深まります。

import math

# 本当の天気の確率(晴れ、くもり、雨、雪)
p = [1/2, 1/4, 1/8, 1/8]
# ソラさんの思い込み(すべて同じ確率)
q = [1/4, 1/4, 1/4, 1/4]

def self_information(prob):
    # 自己情報量(ビット)
    return -math.log2(prob)

def entropy(p):
    # エントロピー:自己情報量の平均
    return sum(pi * self_information(pi) for pi in p if pi > 0)

def cross_entropy(p, q):
    # クロスエントロピー:本当の確率で重み付けし、思い込みの確率で長さを測る
    return sum(pi * self_information(qi) for pi, qi in zip(p, q) if pi > 0)

def kl_divergence(p, q):
    # KLダイバージェンス:思い込みによる余計な長さの平均
    return sum(pi * math.log2(pi / qi) for pi, qi in zip(p, q) if pi > 0)

print("雪の自己情報量:", self_information(1/8))
print("エントロピー H(P):", entropy(p))
print("クロスエントロピー H(P,Q):", cross_entropy(p, q))
print("KLダイバージェンス D(P||Q):", kl_divergence(p, q))
print("H(P) + D(P||Q):", entropy(p) + kl_divergence(p, q))

実行結果は次のとおりです。

雪の自己情報量: 3.0
エントロピー H(P): 1.75
クロスエントロピー H(P,Q): 2.0
KLダイバージェンス D(P||Q): 0.25
H(P) + D(P||Q): 2.0

コードを読むときのポイントは次のとおりです。

  • if pi > 0 は、確率0の出来事を計算から除くための条件です。確率0の出来事は起こらないため、平均への影響もありません。log2(0) を計算するとエラーになるため、この条件が必要です
  • q に0が含まれ、対応する p が0でない場合は、エラーになります。「起こる出来事を、絶対に起こらないと思い込んでいた」状態で、損失が無限大になることを表しています
  • 受講者への演習として、q を本当の確率 p と同じ値に書き換えて実行させると、KLダイバージェンスが0になり、クロスエントロピーがエントロピーと一致することを確認できます

研修での進め方の例(90分)

時間内容進め方
0〜10分導入全体像の表を見せ、「驚き」から始まることを伝える
10〜25分第1章 自己情報量対数の復習、暗号表を受講者に作らせる、練習問題1
25〜40分第2章 エントロピーミナト町の平均を手計算、町の比較、練習問題2
40〜55分第3章 KLダイバージェンスソラさんの請求書を計算、ペアで損失の理由を説明し合う、練習問題3
55〜70分第4章 クロスエントロピー関係式の確認、AIの損失の計算、練習問題4
70〜80分追記とPython重要概念の紹介、コードの実行と数値の変更、練習問題5
80〜90分振り返り4つの概念を物語の言葉で説明させる

ペアワークの例として、「ソラさんに、なぜ料金が高くなったのかを説明する」という課題が効果的です。KLダイバージェンスの意味を、数式を使わずに自分の言葉で説明できるかを確認できます。

まとめ

今回の物語の流れを振り返ります。

  • 自己情報量:めったに起こらない出来事ほど驚きが大きい。驚きは -log2 p で表し、その出来事を送る電信の最適な長さにもなる
  • エントロピー:驚きの平均。正しい暗号表を使ったときの平均の長さで、これ以上短くできない限界の値
  • KLダイバージェンス:思い込みの暗号表を使ったことによる、余計な長さの平均。0以上で、向きによって値が変わる
  • クロスエントロピー:思い込みの暗号表を使ったときの平均の長さ。エントロピーとKLダイバージェンスの合計
  • 機械学習では、エントロピーが一定であることを利用し、クロスエントロピーを損失関数として最小化することで、予測を正解に近づける

理解度を確認するために、受講者に次の問いを投げかけてみてください。

  • 自己情報量に対数が使われるのはなぜですか
  • エントロピーが最大になるのは、どのような確率分布のときですか
  • クロスエントロピーを小さくすると、なぜAIの予測が正解に近づくのですか

次の学習ステップとしては、ソフトマックス関数とクロスエントロピー損失の組み合わせに進むことをおすすめします。ソフトマックス関数がAIの出力を確率 Q に変換し、クロスエントロピーがその Q と正解 P のずれを測る、という流れを学ぶと、分類モデルの学習の仕組みがひと続きで理解できます。そのうえで、損失を小さくするためにパラメータをどう更新するかを、勾配降下法と誤差逆伝播法で学ぶとよいでしょう。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
海外放浪の末、2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。