2025/08/21 23:15 A Short Introduction to Optimal Transport and Wasserstein Distance

やあ、ロボ子!今日は最適輸送理論について話すのじゃ!

最適輸送理論ですか、博士。それは一体どんな理論なのでしょう?

簡単に言うと、ある場所から別の場所へものを運ぶのに、一番効率的な方法を見つける理論なのじゃ。例えば、土の山を穴に移動させるみたいなものじゃな。

なるほど。それが最適輸送理論なのですね。記事によると、統計や機械学習で確率分布間の距離を測るのに役立つそうですが…。

そう!KLダイバージェンスの欠点を克服できるのがミソなのじゃ。KLダイバージェンスは非対称だったり、サポートが等しくないと無限大になったりするけど、最適輸送理論に基づくWasserstein距離なら大丈夫!

Wasserstein距離、別名Earth Mover's Distanceですね。対称性や三角不等式を満たすとのことですが、具体的にどういうことですか?

対称性っていうのは、AからBへの距離とBからAへの距離が同じってこと。三角不等式は、AからCへの距離が、AからBへの距離とBからCへの距離の合計以下になるってことじゃ。直感的でしょ?

確かに、分かりやすいです。画像処理や生成モデル、生物学的データ分析などへの応用も増えているんですね。

そうそう!例えば、2次元の輸送問題で、土の山Pを穴Qに移動させるタスクを考えるのじゃ。一番効率的な輸送計画は、総輸送コストを最小化するものになるわけ。

コストは、ユークリッド距離の二乗で計算するんですね。 記事に「1単位の土を((x_0, y_0))から((x_1, y_1))に移動するコストCは、ユークリッド距離の二乗で与えられる」とあります。

その通り!輸送計画Tは、各地点間の輸送量を示すのじゃ。これを最適化するわけじゃな。

連続分布だと難しいから、離散化して近似するんですね。n個のビンがある場合、PとQを数式で表すと…

P = (\sum_{i=1}^n mathbf{p}_i delta_{mathbf{x}_i})、Q = (\sum_{i=1}^n mathbf{q}_i delta_{mathbf{x}_i})じゃな!ビンiからビンjへの輸送コストは(mathbf{C}_{ij} = ||mathbf{x}_i - mathbf{x}_j||^2)で計算するのじゃ。

最適輸送計画は、線形計画問題を解くことで得られるんですね。`scipy.optimize.linprog()`が使えると。

そう!そして、Wasserstein距離は(mathcal{W}(P, Q) = (langle mathbf{T}^*, mathbf{C} angle)^{1/2})で定義されるのじゃ!

最適化問題は多項式時間で解けるんですね。エントロピー正則化という手法もあるんですね。

エントロピー正則化は、輸送計画のエントロピーが小さい場合にペナルティを課すのじゃ。正則化項(epsilon H(mathbf{T}))を追加して、問題を解きやすくするのじゃな。

(\epsilon)を大きくすると解きやすくなるんですね。高次元データでは計算上の利点が大きいと。

そういうこと!最適輸送理論、奥が深いじゃろ?

はい、とても勉強になりました!ところで博士、土を運ぶ話で思い出しましたが、博士の部屋、まるで土砂崩れみたいになってますね…。

むむ、それは言わない約束じゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。