4.4.2
Jensen-Shannon ダイバージェンス
まとめ
- Jensen-Shannon ダイバージェンスは KL ダイバージェンスを対称化し、有限値にした指標です。
- Python での計算例とともに、距離(平方根)との関係を整理します。
- クラスタリングや生成モデル評価での活用ポイントを紹介します。
- KLダイバージェンス の概念を先に学ぶと理解がスムーズです
1. 定義と性質 #
確率分布 \(P\) と \(Q\) に対して、\(M = \frac{1}{2}(P + Q)\) とすると Jensen-Shannon ダイバージェンスは
$$ \mathrm{JSD}(P \parallel Q) = \frac{1}{2} \mathrm{KL}(P \parallel M) + \frac{1}{2} \mathrm{KL}(Q \parallel M) $$で定義され、常に 0 以上 1 以下(底を 2 とした対数の場合)の値を取ります。
- 対称性:\(\mathrm{JSD}(P \parallel Q) = \mathrm{JSD}(Q \parallel P)\)。
- 有限値:サポートがずれても補間した \(M\) を介して有限値になります。
- 平方根を取った値は Jensen-Shannon 距離として三角不等式を満たします。
2. Python による計算例 #
| |
jensenshannon が返すのは距離(平方根)なので、ダイバージェンスを求めたい場合は 2 乗します。
3. 特長と比較ポイント #
- 対称性と安定性:KL のように一方の分布にだけ依存しないため、分布比較の基準が明確です。
- バウンディング:値が 0~1 に収まるため、閾値設定やモニタリング指標として扱いやすいです。
- メトリック性:平方根を取れば距離となり、クラスタリングや可視化に利用できます。
4. 実務での活用例 #
- 生成モデル評価:生成サンプルと実データの分布差を測り、学習の安定性を確認。
- 言語モデル・トピックモデル:単語分布やトピック分布の違いを定量化。
- 異常検知:時系列で得られる分布を比較し、閾値を超えた場合に異常と判断。
- モデル選択:複数モデルの出力分布を比較し、実データにもっとも近い候補を選定。
5. 注意点 #
- 連続分布を扱う場合は、適切にビン分割するかカーネル密度推定を用いて離散化します。
- ゼロ確率が多い場合は、微小な平滑化を事前に行うと数値が安定します。
- 距離が小さくても必ずしもモデル性能が高いとは限らないため、他指標と併せて判断しましょう。
まとめ #
Jensen-Shannon ダイバージェンスは KL を対称化し、有限値に収めた分布比較指標です。SciPy の実装を使えば容易に計算でき、生成モデル評価や異常検知など幅広いシナリオで役立ちます。
- KL ダイバージェンス — JS の構成要素
- ワッサースタイン距離 — 輸送コストベースの距離
- ヘリンガー距離 — もう一つの対称距離
- PSI — 分布の変化を監視するドリフト検出指標
分布の差と JS ダイバージェンス #
2 つの分布の差を変えると JS ダイバージェンスがどう変化するか確認できます。