LoginSignup
3
2

More than 3 years have passed since last update.

Computational Optimal Transport 精読会 記録 (#9: 3.7)

Posted at

背景

今回の範囲の内容

  • Sinkhornあたりと関係があるらしいオークションアルゴリズムによる計算

アンチョコ

  • Kantorovich problem: $L_C(\mathbf{a,b}) = \min_{\mathrm{P}\in U(\mathbf{a, b})} \langle C, P \rangle$, $U(a, b) = \{\mathrm{P}\in \mathbb{R}_+^{n\times m}\mid \mathrm{P} \mathbb{1}_m = \mathbf{a}, \mathbf{P}^T \mathbb{1}_n = \mathbf{b} \}$

  • Dual problem $L_C(\mathbf{a,b}) = \max_{(\mathbf{f, g})\in R(C)} \langle \mathbf{f, a}\rangle + \langle \mathbf{g, b}\rangle$, $R(C) = \{(\mathbf{f,g})\in\mathbb{R}^n\times \mathbb{R}^m \mid \mathbf{f \oplus g} \leq C\}$

  • $G({\bf P})$は輸送が存在する山の間に辺をはった二部グラフ

  • complementary: もし${\bf P}_{i,j} > 0$ (輸送する)ならば,$C_{i,j} = {\bf f}_i + {\bf g}_j$であること

  • feasible: $\mathbf{f} \oplus \mathbf{g} \leq \mathbf{C}$であること

§3.7 Auction Algorithm

  • イマイチ何がオークションなのかよくわからないがこのタイトル(本来はより一般的な枠組みらしい)
  • ここではKantrovichでもなく割当$\sigma$の最適化に関する議論からオークションアルゴリズムを学ぶ

  • 最適割当 $\sigma^\star$ が分かっている場合,complementary slacknessが成立

    • このときのdual側の最適解が$\mathbf{f}^\star, \mathbf{g}^\star$
    • CS性: $\mathbf{f^\star_i} + \mathbf{g^\star_{\sigma^\star_i}} = C_{i,\sigma^\star_i}$
  • 以前使ったC-Transformを思い出す: 参考 Computational Optimal Transport 精読会 記録 (#5: 3.1-3.2)

  • C-Transformを利用することで$\mathbf{f}^\star = \mathbf{g^\star}^{\bar{C}}$にできる

    • 補足: C-Transformで解が改善するが,ここでは最適解なので一致する
    • C-Transformの定義より次が成り立つ: $C_{i,\sigma^\star_i} - \mathbf{g^\star_{\sigma^\star_i}} = \min_{j} C_{i,j} - \mathbf{g^\star_j}$
  • これは逆も成り立つ

オークションアルゴリズムのやること

  • オークションアルゴリズムは部分解 $S, \xi, \mathbf{g}$ を計算していく

    • $S$はすでに割当が計算されている箇所の集合
    • $\xi$は部分割当
    • $\mathbf{g}$はdual vector
  • 計算は$S=\emptyset$から初めて,以下の(a)-(c)を常に満たした状態で計算を行う

    • (a) 任意の$i$について,$\epsilon$-CSが満たされる: $C_{i,\xi_i} - \mathbf{g}_{\xi_i} \leq \epsilon + \min_{j} C_{i,j} - \mathbf{g_j}$: CS性の条件を小さな正の数$\epsilon$で緩めた
    • (b) $S$が必ず大きくなっていく
    • (c) $\mathbf{g}_i$が最小でも$\epsilon$減少するような$i$が存在すること
  • 処理1: 2nd bestを選んで値を更新

    • $j_i^1 \in \arg\min_{j} C_{i, j} - \mathbf{g}_j$
    • $j_i^2 \in \arg\min_{j, j\neq j_i^1} C_{i, j} - \mathbf{g}_j$
    • ここで得られた2つのインデクスを利用して,最小の位置を更新
      • $\mathbf{g}_{j_i^1} \leftarrow \mathbf{g}_{j_i^1} - \left( (C_{i,j_{i}^2} - \mathbf{g}_{j_i^2}) - (C_{i,j_{i}^1} - \mathbf{g}_{j_i^1}) + \epsilon \right) = C_{i,j_i^1} - (C_{i,j_i^2} - \mathbf{g}_{j_i^2}) - \epsilon$
  • 処理2: 更新に利用した2つのインデクスを確認して部分割当$\xi$を更新

    • もし$i'\in S$について$\xi_{i'}=j_i^1$ (すでに使われていた)
      • $S$から$i'$を取り除き,$j_i^1$に置き換え,今の処理1で固定している$i$を$S$に加える
    • そうでないとき,$\xi$は大きくならないが,どこかの値が減少している

Prop 3.7

  • 主張: 更新によって$\epsilon$-CS性が崩れない
  • 式展開から自然と成り立つ(ここは式展開が丁寧なので分かる)

Prop 3.8

  • 計算量(更新回数)に関する主張
  • よく分からなかったので教えてもらった

  • (メモ)

    • もし止まってないとする
    • このときdual vector $\mathbf{g}_j=0$となっている(まだ計算されていないので初期値のまま)
    • そしてこのとき仮定として,$n > ||C||_\infty/\epsilon$とする(ここから背理法)
      • 式展開から,更新したときに$\epsilon$-CSが満たされなくなってしまう
      • しかしアルゴリズムは$\epsilon$-CSを保存することが確認されていたのでおかしく,仮定が間違っている
    • よって更新回数が抑えられる

Prop 3.9

  • オークションアルゴリズムの解の質について,$n\epsilon$-suboptimalである
  • 式展開から分かる(ここも式展開が丁寧なのでそのまま)

Next

  • 5/28に開催
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2