最適輸送とは、ある分布から別の分布へ輸送するとき、ある点から別の点へ輸送するとき、コストが最小になるようにどう運べばいいのかを解く問題である。
問題定義
離散については、以下のように定める。
- 運ぶもとは{xi}i=1n個存在する。
- 運ぶ先には、{yj}j=1m個存在する。
- 与えられたデータの{xi}i=1n,{xj}j=1mについて、ヒストグラムによる経験分布となるp,qは、ディラックのデルタ関数を用いて以下のように定めることができる。
p=∑i=1npiδxi,p=∑j=1mpjδyj - 輸送行列Tは、n×mの行列で、Tijとは、xiのデータをyiへ運ぶ量のことを指す。
- コスト行列Cは、同様にn×mの行列で、Cijとは、xiのデータをyiへ運ぶとき、1単位当たりのデータにかかるコスト。
つまり、最適輸送は、以下の最適化問題である。1行目はすべてのpから出る輸送計画の合計はpの各要素と等しくないといけないし、すべてのqに入る輸送計画についても同様である。
∀b,∑i=1nT1m=p,∑i=1mTT1n=qminT∑i=1n∑j=1mCijTij Partial Optimal Transport
しかし、ものによってはPartial Optimal Transportといい、全部運ばなくてよく、運びやすい一部だけ運べばいいという制約がある。
現実では、誤差によって外れ値まで運んでほしくない、計算コストの低減などの需要がある。
この時、以下のように、0≤s≤min(n,m)として、合計sの量だけ運ぶ。
∀b,∑i=1nT1m≤p,∑i=1mTT1n≤q1nTT1m=sminT∑i=1n∑j=1mCijTij これを解くとき、dummy pointを割り当てるという操作が一般的である。
以下がくわしい。
📄
2020-NIPS-Partial Optimal Transport with Applications on Positive-Unlabeled Learning
Wasserstein距離について
以下のように定義されるのがp-Wassertein距離である。
さきほどの最適輸送のコストの部分について、p乗となり、全体で1/p乗される。
Wp(p,q)=(minT∑i=1n∑j=1mCijpTij)1/p このpの選び方について、以下のような基準がある。
- p=1の場合、一次モーメントに敏感で、分布の位置のズレをよく合わせようとする。
- 具体的には、実際の物理的な最適な輸送計画や、変形していくときによく合う。
- 特に何も考えていない場合、p=1となる。
- p=2の場合、二次モーメントに敏感で、分布の広がりやばらつきにより注目する。
- 生成モデルやクラスタリング、Domain Adaptationなどで使われるらしい。
- さらに大きくしていくと外れ値や極端な差異に対してより敏感になる。
- p<1にすると、距離関数が満たすべき距離の公理が崩れてしまう。三角不等式が成り立たない。
同じ基底にはない場合
2つの分布が同じ基底空間に存在しない(Domain Adaptationでよくある)場合、Gromov-Wassertein距離を使う。
- Source Domain上の点{xi}i=1nが運ぶ元。
- Target Domain上の点{yj}j=1mが運ぶ先。
通常、Domainが違うので、Cijは計算できない。その代わりに、各Domain内で(運ぶ元同士、運ぶ先同士)で距離行列からコストを計算し、その分布の形状の違いをできるだけ合わせようとする。
なので、まずSource Domain間の点{xi}i=1nについて、距離行列Ciksを作り、Target Domain間の点についてもCjltを作る。
以下のものが、Gromov-Wasserstein距離である。
GWpp(p,q)=minT∑i,k=1n∑j,l=1m∣Ciks−Cjlt∣TijTkl この測度は、形状を比較するのでDomainが違く手も対応できるし、回転や平行移動やスケーリングにたいしても不変性がある。
しかし、実際の計算では非凸の最適化が必要で厳密解は計算できない。一般的にはSinkhornのアルゴリズムで解く。
Sinkhorn’s Algorithm
Frank-Wolfe Algorithm