機械学習やデータ分析の勉強を進めていくと、必ずと言っていいほど登場する言葉があります。
それがKLダイバージェンスです。
正式にはカルバック・ライブラー情報量と呼ばれ、統計学や情報理論の世界では古くから使われてきた概念です。
とはいえ、名前だけを聞いてもピンとこない方が多いのではないでしょうか。
相対エントロピーという別名もあり、さらに混乱してしまう方もいるかもしれません。
この記事では、KLダイバージェンスの意味や定義を、できるだけかみ砕いてご紹介していきます。
数式の話も出てきますが、まずは直感的なイメージをつかむことを優先します。
そのうえで、情報理論における位置づけや、機械学習での実際の使われ方まで、順を追って解説していきます。
確率分布同士の違いをどう測るのか、その入り口として読んでいただければ幸いです。
目次
KLダイバージェンスとは二つの確率分布の隔たりを数値化する指標である
それではまずKLダイバージェンスの結論となる意味について解説していきます。
結論から言うと、KLダイバージェンスとは、二つの確率分布がどれくらい異なっているかを数値で表す指標です。
たとえば、あるデータの本当の分布と、モデルが予測した分布があるとします。
この二つがぴったり一致していれば、KLダイバージェンスの値はゼロになります。
逆に、二つの分布がかけ離れているほど、値は大きくなっていきます。
つまりKLダイバージェンスは、分布のずれ具合を映し出す一種の物差しなのです。
KLダイバージェンスの基本的な意味
KLダイバージェンスは、確率分布Pと確率分布Qという二つの分布を比較するときに使われます。
Pを真の分布、Qを近似したい分布として考えるケースが一般的です。
機械学習の文脈で言えば、Pは実際のデータが従う分布、Qはモデルが学習した分布に相当します。
この二つの分布がどれだけずれているかを表すのが、KLダイバージェンスの値です。
値が小さいほど、モデルは実際のデータをうまく再現できていると言えるでしょう。
反対に値が大きいほど、モデルの予測は現実からかけ離れていることになります。
カルバック・ライブラー情報量という別名について
KLダイバージェンスという呼び方は、実は略称です。
正式名称はカルバック・ライブラー情報量で、これは考案者であるソロモン・カルバックとリチャード・ライブラーという二人の統計学者の名前に由来しています。
1950年代に発表された論文の中で、この概念が定義されました。
もともとは情報理論の分野で、情報量の違いを測る目的で生み出されたものです。
現在では統計学、機械学習、自然言語処理など、幅広い分野で応用されています。
呼び方は違っても、指しているものはすべて同じ指標だと覚えておくとよいでしょう。
KLダイバージェンスの数式による定義を確認する
続いては数式によるKLダイバージェンスの定義を確認していきます。
言葉での説明だけでは、どうしても曖昧さが残ってしまいます。
ここでしっかり数式に触れておくことで、理解がぐっと深まるはずです。
離散分布での定義式
確率変数が離散的な値をとる場合、KLダイバージェンスは次のように定義されます。
D(P||Q) = Σ P(x) log( P(x) / Q(x) )
ここでΣはすべての事象xについての総和を意味します。
P(x)は真の分布における確率、Q(x)は近似分布における確率です。
この式が意味しているのは、各事象ごとの確率の比率を対数変換し、真の分布Pの確率で重み付けして足し合わせるということです。
P(x)とQ(x)の比が1に近いほど、対数の値はゼロに近づきます。
逆に比率が1から離れるほど、対数の値は大きく振れることになります。
連続分布での定義式
確率変数が連続的な値をとる場合は、和の代わりに積分を使います。
D(P||Q) = ∫ p(x) log( p(x) / q(x) ) dx
p(x)とq(x)は、それぞれ真の分布と近似分布の確率密度関数です。
正規分布のような連続確率分布を扱う機械学習のモデルでは、この連続版の定義がよく使われます。
積分の計算は複雑になりがちですが、基本的な考え方は離散分布の場合と変わりません。
相対エントロピーとの関係
KLダイバージェンスは、別名として相対エントロピーとも呼ばれています。
これは、後述するエントロピーという概念と密接に関わっているためです。
エントロピーが一つの分布の不確実性を表す量であるのに対し、相対エントロピーは二つの分布の間の情報量の差を表します。
言い換えると、Qという誤った分布を使って情報をやり取りしたときに、本来のPを使う場合と比べてどれだけ余分な情報が必要になるか、という指標です。
この視点を持っておくと、後の情報理論の説明もスムーズに理解できるでしょう。
KLダイバージェンスの性質と特徴を整理する
続いてはKLダイバージェンスが持つ数学的な性質について確認していきます。
これを知っておくと、実際に使うときの注意点も見えてきます。
非対称性という重要な特徴
KLダイバージェンスの最大の特徴は、非対称であるという点です。
つまり、D(P||Q)とD(Q||P)は一般に異なる値になります。
これは直感に反すると感じる方も多いポイントでしょう。
通常の距離であれば、AからBまでの距離とBからAまでの距離は等しいはずです。
しかしKLダイバージェンスは、その意味での距離ではありません。
ここは非常に重要なポイントです。
KLダイバージェンスは厳密には距離ではなく、あくまで分布間の隔たりを表す一つの指標にすぎません。
数学的な距離の公理である対称性を満たしていないためです。
この点を誤解したまま使ってしまうと、モデルの評価結果を読み間違えることにもつながりかねません。
非負性という性質
KLダイバージェンスには、常に値がゼロ以上になるという性質があります。
これはギブスの不等式と呼ばれる数学的な定理によって保証されているものです。
どのような確率分布PとQを選んでも、D(P||Q)が負になることはありません。
この非負性のおかげで、KLダイバージェンスを損失関数の一部として安心して使うことができます。
分布が一致する場合の値
PとQがまったく同じ分布であるとき、KLダイバージェンスの値はちょうどゼロになります。
これは先ほどの非負性とあわせて考えると、ゼロが最小値であることを意味します。
つまりKLダイバージェンスがゼロに近づくほど、二つの分布は似ていると判断できるわけです。
機械学習のモデル訓練では、この値をできるだけゼロに近づけることが目標になるケースが多くあります。
| 性質 | 内容 | 備考 |
|---|---|---|
| 対称性 | 成り立たない | D(P||Q)とD(Q||P)は異なる値になる |
| 非負性 | 常に成り立つ | 値は必ずゼロ以上になる |
| 最小値 | ゼロ | PとQが完全に一致するときのみゼロになる |
| 三角不等式 | 成り立たない | 数学的な距離の公理を満たさない |
情報理論におけるKLダイバージェンスの位置づけを知る
続いては情報理論という、もともとKLダイバージェンスが生まれた分野での位置づけを確認していきます。
ここを押さえておくと、単なる数式ではなく、意味のある概念としてKLダイバージェンスを理解できるようになるでしょう。
エントロピーとの関係
情報理論の基本となる概念にエントロピーがあります。
エントロピーとは、ある確率分布がどれだけ不確実であるか、言い換えればどれだけ予測しにくいかを表す量です。
サイコロのように出目が均等な分布ほど、エントロピーは大きくなります。
反対に、ほぼ一つの結果しか起こらないような分布では、エントロピーは小さくなります。
KLダイバージェンスは、このエントロピーの考え方を二つの分布の比較に拡張したものだと捉えることができます。
交差エントロピーとの関係
機械学習の損失関数としてよく登場する交差エントロピーも、KLダイバージェンスと深いつながりがあります。
実は交差エントロピーは、エントロピーとKLダイバージェンスの和として表すことができます。
H(P, Q) = H(P) + D(P||Q)
H(P, Q)は交差エントロピー、H(P)はPのエントロピーを表します。
ここでH(P)は真の分布Pだけで決まる定数であるため、モデルの学習においてはD(P||Q)を小さくすることと、交差エントロピーを小さくすることは、実質的に同じ意味を持ちます。
分類問題の損失関数として交差エントロピーがよく使われる背景には、こうした理論的なつながりがあるのです。
符号化理論的な解釈
KLダイバージェンスは、データ圧縮の理論とも結びついています。
本来はPという分布に従うデータを、Qという誤った分布を前提にして符号化するとどうなるでしょうか。
その場合、最適な符号化と比べて、平均して余分に必要となるビット数がKLダイバージェンスに相当します。
つまりKLダイバージェンスは、間違った前提を使うことで生じる非効率さを表す指標とも言えるのです。
このように考えると、統計学だけでなく通信や圧縮の分野にもKLダイバージェンスが応用される理由が見えてきます。
機械学習におけるKLダイバージェンスの活用例を見ていく
続いては機械学習の現場でKLダイバージェンスがどのように使われているのか、具体例を見ていきます。
理論だけでなく実用面を知ることで、この指標のありがたみがより実感できるはずです。
変分オートエンコーダでの利用
生成モデルの一種である変分オートエンコーダ、いわゆるVAEでは、KLダイバージェンスが損失関数の重要な一部を担っています。
VAEは、入力データを潜在変数と呼ばれる低次元の空間に圧縮し、そこから元のデータを再構築する仕組みです。
このとき、潜在変数の分布をあらかじめ決めておいた標準正規分布に近づける役割をKLダイバージェンスが果たしています。
潜在空間が整った形に保たれることで、新しいデータをうまく生成できるようになるわけです。
VAEの損失関数は、再構築誤差とKLダイバージェンスの和として設計されることがほとんどです。
強化学習での利用
強化学習の分野でも、KLダイバージェンスは方策の更新を制御する目的で使われます。
代表的な例がTRPOやPPOといったアルゴリズムです。
これらの手法では、方策を更新する際に、更新前と更新後の方策の分布が大きく変わりすぎないよう制約をかけます。
その制約の測定にKLダイバージェンスが用いられているのです。
急激な方策の変化は学習を不安定にしてしまうため、こうした制御が学習の安定性を保つうえで欠かせません。
生成モデルや分布近似での利用
KLダイバージェンスは、複雑で扱いにくい確率分布を、扱いやすい分布で近似する手法にも応用されています。
これは変分推論と呼ばれる統計手法の中核をなす考え方です。
複雑な事後分布を正規分布などの単純な分布で近似する際、その近さを測る基準としてKLダイバージェンスが使われます。
ベイズ統計の計算は本来とても重たいものですが、変分推論を使うことで比較的高速に近似解を求めることが可能になります。
自然言語処理の分野でも、単語の分布や文書のトピック分布を比較する際にKLダイバージェンスが登場することがあります。
KLダイバージェンスを計算・利用する際の注意点を押さえる
続いてはKLダイバージェンスを実際に使う場面で気をつけたいポイントを解説していきます。
理論を理解していても、実務で扱う際にはいくつかの落とし穴があります。
ゼロ除算や定義域の問題
KLダイバージェンスの式には、Q(x)で割る操作が含まれています。
そのため、Q(x)がゼロになる箇所があると、計算が破綻してしまいます。
特に、Pがゼロでない値を持つ場所でQがゼロになってしまうと、その項は無限大に発散します。
実装の際には、ごく小さな値を足すなどして、ゼロ除算を避ける工夫が一般的に行われています。
この点は、コードを書くうえで見落としがちな注意点と言えるでしょう。
JSダイバージェンスなど対称化した指標との違い
KLダイバージェンスの非対称性が扱いにくいと感じる場面では、対称性を持つ別の指標が使われることがあります。
その代表例がJSダイバージェンス、つまりイェンセン・シャノンダイバージェンスです。
JSダイバージェンスは、二つのKLダイバージェンスを組み合わせて対称になるよう設計された指標です。
敵対的生成ネットワーク、いわゆるGANの理論的な背景にも、このJSダイバージェンスが登場します。
目的に応じて、KLダイバージェンスとJSダイバージェンスのどちらが適しているかを見極めることが大切です。
| 指標 | 対称性 | 主な用途 |
|---|---|---|
| KLダイバージェンス | なし | 分布の近似、損失関数、変分推論 |
| JSダイバージェンス | あり | GANの理論的背景、分布比較 |
| ユークリッド距離 | あり | 点と点の空間的な距離の測定 |
実装時によく使われるライブラリ
実際にKLダイバージェンスを計算する際、ゼロから数式を書く必要はほとんどありません。
PythonであればSciPyの関数を使えば、離散分布のKLダイバージェンスを簡単に計算できます。
PyTorchやTensorFlowといった深層学習のフレームワークにも、KLダイバージェンスを計算する専用の関数が用意されています。
これらのライブラリは、先ほど触れたゼロ除算への対策なども組み込まれていることが多いです。
自作で実装する前に、まずは既存のライブラリで十分かどうかを確認するとよいでしょう。
まとめ
ここまで、KLダイバージェンスの意味や定義について解説してきました。
KLダイバージェンスとは、二つの確率分布がどれだけ異なっているかを数値化する指標であり、正式にはカルバック・ライブラー情報量、あるいは相対エントロピーとも呼ばれます。
数式的には、真の分布と近似分布の確率の比を対数変換し、真の分布の確率で重み付けして足し合わせた値として定義されます。
非対称であり、数学的な意味での距離ではないという点は、特に押さえておきたい特徴です。
情報理論の観点では、エントロピーや交差エントロピーと密接に結びついており、機械学習の損失関数の設計にも直結しています。
変分オートエンコーダや強化学習、変分推論など、応用範囲は非常に広いと言えるでしょう。
実装の際にはゼロ除算などの注意点もありますが、既存のライブラリを活用すれば大きな問題にはなりません。
KLダイバージェンスという言葉に出会ったとき、この記事の内容を思い出していただければ幸いです。