Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
1 KYOTO UNIVERSITY
KYOTO UNIVERSITY
最適輸送入門
佐藤竜馬
@IBIS 2021 チュートリアル
2 / 88 KYOTO UNIVERSITY
最適輸送は確率分布を比較するツール

このチュートリアルのトピック: 最適輸送

類似ツール: KLダイバージェンス, MMD

このチュートリアルでは

KL ダイバージェンスに比べた最適輸送の優れた点を知る

最適輸送のアルゴリズムを知る
をめざします
最適輸送は確率分布と確率分布を比較するのに使えるツール
take home message
3 / 88 KYOTO UNIVERSITY
最適輸送の直感的な導入とメリット
4 / 88 KYOTO UNIVERSITY
分布比較の例: カテゴリ予測

確率分布の比較は機械学習のあらゆる場面で登場する

例1: カテゴリ予測のロス関数

クロスエントロピー(KL ダイバージェンス)が有名
dog cat lion bird dog cat lion bird
予測分布
正解ラベル
距離 = ロス
5 / 88 KYOTO UNIVERSITY
分布比較の例: 生成モデル

確率分布の比較は機械学習のあらゆる場面で登場する

例2: 生成モデルのロス関数
生成サンプルの経験分布 訓練サンプルの経験分布
距離 = ロス
Tero Karras, Timo Aila, Samuli Laine, Jaakko Lehtinen. Progressive Growing of GANs for Improved Quality, Stability,
and Variation. ICLR 2018.
https://mmlab.ie.cuhk.edu.hk/projects/CelebA.html
6 / 88 KYOTO UNIVERSITY
最適輸送の直感的な意味: 確率分布の「山」を輸送

確率分布の「山」を移動させて一致させるのにかかるコストが
最適輸送の直感的な定義

輸送という単語はここからきている

土塊を運ぶイメージから、Earth Mover’s Distance とも呼ばれる
μ ν
運ぶ
7 / 88 KYOTO UNIVERSITY
ヒストグラム比較の場合の例

クラス確率(ヒストグラム)比較の場合

各クラスから他のクラスへ山を移動させるコストを人手で定める
cat → lion は cat → bird よりも低コストという知識を込めてもよい

μ の山を移動させて ν に一致させるコストが最適輸送距離
(ν の山を移動させて μ の山に移動させるとしてもコストは同じ)
dog cat lion bird dog cat lion bird
μ ν
不動
不動
不動
dog
へ
lion
へ
8 / 88 KYOTO UNIVERSITY
点群比較の場合の例

連続分布の経験分布(点群)比較の場合

各点に質量 1/n の砂山があると考えその輸送距離を考える
9 / 88 KYOTO UNIVERSITY
最適な輸送についてのコストを用いて距離を定義する

輸送の仕方は複数通りあるが、最もコストが少ない輸送方法を選ぶ
ヒストグラムの場合も同様

「最適」という言葉はここからきている
最適ではない輸送の例
10 / 88 KYOTO UNIVERSITY
もう少し規模が大きい場合の最適輸送の例

もう少し規模の大きい点群の最適輸送
11 / 88 KYOTO UNIVERSITY
KL ダイバージェンスは要素ごとの項の和

KL ダイバージェンスとの比較を通して最適輸送の利点を確認する

離散分布は n 次元のベクトル p で表現できる
pi
は i 番目の要素の確率値

KL ダイバージェンス:

要素ごとに独立に項を足し合わせているのがポイント
12 / 88 KYOTO UNIVERSITY
KL ダイバージェンスは要素の距離を考慮できない

気温をクラス分類により予測する問題を考える

KL ダイバージェンスを用いると、要素ごとの和となるので、
青・赤の距離と青・緑の距離は同じ
21
22
23
24
25
26
27
28
29
21
22
23
24
25
26
27
28
29
=
13 / 88 KYOTO UNIVERSITY
最適輸送は要素どうしの距離を考慮できる

最適輸送を用いると、青・赤の方が輸送にかかるコストが少ないので
距離が小さいと判定される

22 度を 23 度と間違えているだけなので、22 度を 28 度と
間違えるより距離が小さいと判定されるのは直感に適合している
21
22
23
24
25
26
27
28
29
21
22
23
24
25
26
27
28
29
<
14 / 88 KYOTO UNIVERSITY
KL はサポートが被っていないと使えない

連続分布の経験分布(点群)比較を考える

KL はサポートが被っていないと距離が ∞ と判断される
→ 連続分布の経験分布の比較ができない
経験分布においては、ちょうどこの点における
青の確率はゼロと判断される → - log 0 の項が登場して KL = ∞
確率値が正を取る点集合
15 / 88 KYOTO UNIVERSITY
最適輸送はサポートが被っていなくても使える

最適輸送は輸送という概念のおかげでサポートが被っていないときにも
利用できる
16 / 88 KYOTO UNIVERSITY
最適輸送は分布の対応関係を得ることができる

最適輸送は副産物として、分布の対応関係を得ることができる

正規分布の対応関係:
分布がずれていても、ずれを修正するような対応関係が得られる
17 / 88 KYOTO UNIVERSITY
応用: 最適輸送は色相変換にも利用できる

入力: 色相の異なる二つの画像

ピクセルを RGB 空間内におき、画像を RGB 空間内の点群とみる
→ 二つの点群の最適輸送を計算
→ 得られた対応関係をもとに、ピクセルの色を置換する

出力: 色相を入れ替えた二つの画像
Gabriel Peyré. Optimal Transport in Imaging Sciences. 2012.
https://www.slideshare.net/gpeyre/optimal-transport-in-imaging-sciences
18 / 88 KYOTO UNIVERSITY
最適輸送は KL の限界を克服できる

最適輸送まとめ:

最適輸送は距離構造を利用できる
(↔ KL はできない)

最適輸送はサポートが被っていないときにも利用できる
(↔ KL はできない)

最適輸送は分布の対応関係を得ることができる
(↔ KL はできない)

点どうしに自然な距離を導入できるときには最適輸送チャンス
「猫」 と 「ライオン」 は 「猫」 と 「鳥」 より近い(クラス分類)
温度のような順序尺度
ユークリッド空間上の点群
19 / 88 KYOTO UNIVERSITY
KL を最適輸送に置き換えることを提案する論文たち

実際、KL を最適輸送に置き換える提案がさまざまな文脈で
なされている

Arjovsky et al. Wasserstein GAN. ICML 2017.
GAN のロスを JS ダイバージェンスから最適輸送距離に

Frogner et al. Learning with Wasserstein Loss.
NeurIPS 2015.
マルチクラス分類のロスをクロスエントロピーから最適輸送距離に

Liu et al. Importance-Aware Semantic Segmentation
in Self-Driving with Discrete Wasserstein Training.
AAAI 2020.
セグメンテーションのロスをクロスエントロピーから最適輸送距離に
20 / 88 KYOTO UNIVERSITY
KL が現れたら最適輸送に置き換えられないか考えてみる

少しズルいですが:
卒論のテーマが思い浮かばないとき、KL を使っている手法を探して
最適輸送に置き換えるだけで論文になります。

ただし:
タスクによって最適輸送との相性あり。
距離構造の定義の仕方は工夫のみせどころ。
よいタスク・距離構造をうまく選べると非常によい研究になります。
山ほどあります
最適輸送は KL の欠点を克服できる。
手法中に KL が現れたら最適輸送を考えてみましょう。
take home message
21 / 88 KYOTO UNIVERSITY
最適輸送の定義と求め方
22 / 88 KYOTO UNIVERSITY
ヒストグラムの最適輸送距離の定式化: 線形計画

入力: 比較するヒストグラム
各点の距離を表す行列

出力: ヒストグラムの距離

最適輸送距離を以下の最適化問題の最適値と定義する
 総コスト
 輸送量は非負
 余りなし
 不足なし
決定変数 Pij
は
点 i から点 j に
輸送する量を
表す
これは線形計画
23 / 88 KYOTO UNIVERSITY
ヒストグラム比較の例

入力:
dog, cat, lion, bird
dog, cat, lion, bird
dog,
cat,
lion,
bird
↑ cat と lion のミスはコストが低い
cat から lion へ
0.2 の輸送
dog cat lion bird dog cat lion bird
不動
不動
不動
lion
へ

出力:
24 / 88 KYOTO UNIVERSITY
点群の最適輸送距離の定式化: 線形計画

入力: 比較する点群
各点の距離を表す関数

出力: 点群の距離

最適輸送距離を以下の最適化問題の最適値と定義する
 総コスト
 輸送量は非負
 余りなし
 不足なし
決定変数 Pij
は
点 i から点 j に
輸送する量を
表す
これは線形計画
25 / 88 KYOTO UNIVERSITY
連続分布比較の場合の最適輸送距離の定式化

入力: 比較する確率分布
各点の距離を表す関数

出力: 分布の距離

最適輸送距離を以下の最適化問題の最適値と定義する
 総コスト
 輸送量は非負
 余りなし
 不足なし
ざっくり言うと
和を積分にして
連続にしている
26 / 88 KYOTO UNIVERSITY
離散最適輸送は線形計画、連続の場合は工夫が必要

ヒストグラムの場合と点群の場合はほとんど同じ線形計画
アルゴリズムを考える上ではこれらは同じ問題とみなされることが多い

線形計画なので、既存のソルバを用いて解くことができる

連続分布どうしの最適輸送は連続分布の最適化問題になるので
解くのが難しい
1. 連続分布からサンプリングを行い点群比較に帰着する、または
2. このチュートリアルの後半で紹介する双対を使ったアプローチで
直接解く

以下、主に離散最適輸送を考える
27 / 88 KYOTO UNIVERSITY
ワッサースタイン距離は最適輸送の特殊ケース

最適輸送距離はコスト行列の設定次第で距離公理は満たさない
すべてコストが 0 のとき、すべての分布の距離はゼロになってしまう

ワッサースタイン距離は距離公理を満たす最適輸送の特殊ケース

定義: ワッサースタイン距離
上の距離関数 と実数
を用いてコスト行列を と定義する。
を p-ワッサースタイン距離という。

ユークリッド距離の 1-ワッサースタイン や
2-ワッサースタイン がよく用いられる
28 / 88 KYOTO UNIVERSITY
ワッサースタイン距離は距離公理を満たす

定理: ワッサースタイン距離は距離公理を満たす
証明は下記文献など参照

すなわち、点の距離として距離公理を満たすものを使えば、
分布の距離として自動的に距離公理が満たされるようになる

cf. KL は距離の公理を満たさない
Gabriel Peyré, Marco Cuturi. Computational Optimal Transport. 2019.
29 / 88 KYOTO UNIVERSITY
ワッサースタイン距離の例

について、 , が確率 1 で出てくる確率分布 ,
のワッサースタイン距離は

一方、KL ダイバージェンスは

ワッサースタイン距離の方がより細かく見分けているといえる
30 / 88 KYOTO UNIVERSITY
ソルバの紹介: POT がオススメ

最適輸送を実際に使う際には様々なソルバが利用できる

Python Optimal Transport (POT): オススメ
pip install pot でインストールできる
a: numpy array (n,)
b: numpy array (m,)
C: numpy array (n, m)
ot.emd(a, b, C) を呼び出せば最適輸送行列 P* が返る

Scipy:
scipy.optimize.linear_sum_assignment
→ 1 対 1 対応の場合のみ
scipy.optimize.linprog → 一般の線形計画
31 / 88 KYOTO UNIVERSITY
POT の使用例: 簡単に使えます

数値例: 二つの正規分布からの点群の比較
import numpy as np
import matplotlib.pyplot as plt
import ot # POT ライブラリ
n = 100 # 点群サイズ
mu = np.random.randn(n, 2) # 入力分布 1
nu = np.random.randn(n, 2) + 1 # 入力分布 2
a = np.ones(n) / n # 質量ヒストグラム (1/n, ..., 1/n)
b = np.ones(n) / n # 質量ヒストグラム (1/n, ..., 1/n)
C = np.linalg.norm(nu[np.newaxis] - mu[:, np.newaxis], axis=2) # コスト行列
P = ot.emd(a, b, C) # 最適輸送距離の計算
plt.scatter(mu[:, 0], mu[:, 1]) # mu の散布図描写
plt.scatter(nu[:, 0], nu[:, 1]) # nu の散布図描写
for i in range(n):
j = P[i].argmax() # i の対応相手: 最もたくさん輸送している先
plt.plot([mu[i, 0], nu[j, 0]], [mu[i, 1], nu[j, 1]], c='grey', zorder=-1)
↑ コピペで試せます
32 / 88 KYOTO UNIVERSITY
最適輸送は線形計画。ソルバで簡単に解ける。
最適輸送距離は線形計画として定式化される
ワッサースタイン距離は距離公理を満たす特殊ケース
ソルバを利用すると簡単に最適輸送を計算できる
take home message
33 / 88 KYOTO UNIVERSITY
シンクホーンアルゴリズム
34 / 88 KYOTO UNIVERSITY
高速でホワイトボックスなアルゴリズムが欲しい

前章での議論:
最適輸送は線形計画 → 線形計画ソルバに投げると解ける

欠点:
汎用ソルバ・厳密ソルバは遅い
ブラックボックスなので、自分の手法に有機的に組込みづらい

これから紹介するシンクホーンアルゴリズム:
高速
シンプル → さまざまな手法と組み合わせやすい
ただし、厳密な最適輸送は求まらない
35 / 88 KYOTO UNIVERSITY
エントロピー正則化つき最適輸送問題を考える

以下のエントロピー正則化つき最適輸送問題を考える

ε > 0 は正則化係数(ハイパーパラメータ)
オリジナルの最適輸送とは別問題。ただし ε → 0 で元問題に。
エントロピー項 = H(P)
36 / 88 KYOTO UNIVERSITY
エントロピー正則化つき問題は強凸

嬉しさ : エントロピー正則化つき問題の目的関数は強凸

制約が線形制約だけということは実行可能領域は凸なので
実行可能領域凸 + 目的関数強凸 → 最適解は一意に定まる
↔ 線形計画は面全体で最適をとることがあり、一意に定まらない
線形 エントロピーは強凹
→ 全体で強凸
→ 最適化しやすい
Gabriel Peyré, Marco Cuturi. Computational Optimal Transport. 2019.
37 / 88 KYOTO UNIVERSITY
双対問題は制約なし最大化問題

エントロピー正則化つき最適輸送の(凸計画としての)双対問題は
→ 制約なし最大化問題

双対問題を解くことをめざす

双対問題の導出は下記文献などを参照
Gabriel Peyré, Marco Cuturi. Computational Optimal Transport. 2019.
最適輸送の解き方 https://www.slideshare.net/joisino/ss-249394573
38 / 88 KYOTO UNIVERSITY
双対問題の目的関数の勾配は f 内 g 内で絡みなし

双対問題の目的関数を D をおく

D の f と g についての勾配は以下の通り
 fi
の勾配の中に fk
(k ≠ i), gj
の勾配の中に gk
(k ≠ j) は
出てこない(絡みなし)
39 / 88 KYOTO UNIVERSITY
f ごと、g ごとに最適値が厳密に求まる

シンクホーンアルゴリズムの基本的な考えは座標向上法

f を固定したときの g の最適値は勾配イコールゼロとおいて
g を固定したときの f の最適値も同様に

シンクホーンアルゴリズムは f 固定での g の厳密最適化 →
g 固定での f の厳密最適化を交互に繰り返す
40 / 88 KYOTO UNIVERSITY
シンクホーンアルゴリズムは f と g を交互に最適化する

対数領域でのシンクホーンアルゴリズム

ステップ 1: f(1)
を適当に初期化(例えばゼロベクトル), t = 1 に

ステップ 2:

ステップ 3:

ステップ 4: f と g が収束するまで t ← t + 1 でステップ 2 へ

目的関数が微分可能で各ステップ唯一解なので大域最適に収束
41 / 88 KYOTO UNIVERSITY
指数関数を使って変数変換するとシンプルに書ける

先程のイテレーションでは log や exp がたくさん出てくる

と変数変換するとシンプルに
42 / 88 KYOTO UNIVERSITY
ギブスカーネルの定義

さらに K ∈ Rn×m
を以下で定める

K をギブス (Gibbs) カーネルという

i と j の類似度を表している

例えば C がユークリッド距離の自乗(2-ワッサースタイン)
のときガウスカーネルになる
コストに負号 → 類似度
exp は単調
43 / 88 KYOTO UNIVERSITY
シンクホーンのイテレーションは行列積でかける

ギブスカーネル行列を使うとさらにシンプルに

ただし KT
は転置行列、割り算は要素ごと、分母は行列ベクトル積

非常に単純に実装できる

行列ベクトル積がメインなので GPU で高速計算可能
ふつうシンクホーンというと
この形の更新アルゴリズムを指す
44 / 88 KYOTO UNIVERSITY
シンクホーン変数から元の変数への戻し方

シンクホーンにより (u, v) が求まると、変数変換の式より元の
双対変数は

主問題の変数は双対最適解と主最適解の対応関係より
f, g が完璧に収束しない限り、求めた Pij
は厳密には実行可能とは
限らないことに注意(実用上は多少の誤差は問題ないことも多い)
 この Pij
から違反分をいい感じに分配して実行可能解を計算する
アルゴリズムも提案されている [Altschuler+ 2017]
Jason Altschuler, Jonathan Weed, Philippe Rigollet. Near-linear time approximation algorithms for optimal transport
via Sinkhorn iteration. NeurIPS 2017.
45 / 88 KYOTO UNIVERSITY
シンクホーンアルゴリズム: 例

例(以前使ったもの):
dog, cat, lion, bird
dog, cat, lion, bird
dog,
cat,
lion,
bird
↑ cat と lion のミスはコストが低い

エントロピー正則化なしの場合の出力:
dog cat lion bird dog cat lion bird
不動
不動
不動
lion
へ
46 / 88 KYOTO UNIVERSITY
シンクホーンアルゴリズム: 例
import numpy as np
import matplotlib.pyplot as plt
n, m = 4, 4
C = np.array([
[0, 2, 2, 2],
[2, 0, 1, 2],
[2, 1, 0, 2],
[2, 2, 2, 0]])
a = np.array([0.2, 0.5, 0.2, 0.1])
b = np.array([0.3, 0.3, 0.4, 0.0])
eps = 0.2 # 大きいと高速に、小さいと厳密に
K = np.exp(- C / eps) # ギブスカーネルの計算
u = np.ones(n) # すべて 1 で初期化
for i in range(100):
v = b / (K.T @ u) # ステップ (2)
u = a / (K @ v) # ステップ (3)
f = eps * np.log(u + 1e-9) # 対数領域に戻す
g = eps * np.log(v + 1e-9) # 対数領域に戻す
P = u.reshape(n, 1) * K * v.reshape(1, m) # 主解
plt.pcolor(P, cmap=plt.cm.Blues) # 解の可視化
← コピペで試せます
メインロジックはわずか 3 行
↑ エントロピーなしの解とほぼ一致
(左下が (1, 1) であることに注意)
外部ライブラリに頼らない
47 / 88 KYOTO UNIVERSITY
シンクホーンは自動微分できる

計算が行列演算だけからなるので、自動微分ライブラリにより
微分が求まる

たとえば以下のように numpy の代わりに torch とする
import torch
K = torch.exp(- C / eps) # ギブスカーネルの計算
u = torch.ones(n) # すべて 1 で初期化
for i in range(100):
v = b / (K.T @ u) # ステップ (2)
u = a / (K @ v) # ステップ (3)
f = eps * torch.log(u + 1e-9) # 対数領域に戻す
g = eps * torch.log(v + 1e-9) # 対数領域に戻す
P = u.reshape(n, 1) * K * v.reshape(1, m) # 主解
loss = (P * C).sum()
loss.backward()
48 / 88 KYOTO UNIVERSITY
自動微分の例

例: 以下の点群を考える。赤は固定、青の位置がパラメータ。
Sinkhorn により計算された値をロスとして勾配法で最適化。
49 / 88 KYOTO UNIVERSITY
自動微分の例

Sinkhorn により求まった輸送行列を参考に記している
50 / 88 KYOTO UNIVERSITY
自動微分の例

Sinkhorn により求まった輸送行列を参考に記している
51 / 88 KYOTO UNIVERSITY
自動微分の例

Sinkhorn により求まった輸送行列を参考に記している
52 / 88 KYOTO UNIVERSITY
自動微分の例

Sinkhorn により求まった輸送行列を参考に記している
53 / 88 KYOTO UNIVERSITY
自動微分の例

Sinkhorn により求まった輸送行列を参考に記している
54 / 88 KYOTO UNIVERSITY
自動微分の例

Sinkhorn により求まった輸送行列を参考に記している
55 / 88 KYOTO UNIVERSITY
自動微分の例

Sinkhorn により求まった輸送行列を参考に記している
56 / 88 KYOTO UNIVERSITY
自動微分の例

輸送距離の小さい青の配置が求まった
57 / 88 KYOTO UNIVERSITY
ソースコード全貌
import matplotlib.pyplot as plt
import torch
import torch.optim
import torch.nn
# データ生成
torch.manual_seed(0)
x = torch.rand(20, 2)
y = torch.rand(20, 2) + 
torch.FloatTensor([0, 2])
z = torch.rand(20, 2) + 
torch.FloatTensor([1, 1])
mu = torch.cat([x, y, z])
nu = torch.rand(12, 2) * 2
nu = torch.nn.parameter.Parameter(nu)
n, m = len(mu), len(nu)
a = torch.ones(n) / n
b = torch.ones(m) / m
optimizer = torch.optim.SGD([nu], lr=1.0)
for it in range(100):
eps = 0.1
D = torch.linalg.norm(mu.reshape(n, 1, 2) - 
nu.reshape(1, m, 2), axis=2)
K = torch.exp(- D / eps) # ギブスカーネルの計算
u = torch.ones(n) # すべて 1 で初期化
for i in range(100):
v = b / (K.T @ u) # ステップ (2)
u = a / (K @ v) # ステップ (3)
f = eps * torch.log(u + 1e-9) # 対数領域に戻す
g = eps * torch.log(v + 1e-9) # 対数領域に戻す
P = u.reshape(n, 1) * K * v.reshape(1, m) # 主解
loss = (P * D).sum()
optimizer.zero_grad()
loss.backward()
optimizer.step()
plt.clf()
plt.scatter(mu[:, 0], mu[:, 1])
plt.scatter(nu.data[:, 0], nu.data[:, 1])
plt.show()
コピペで試せます
58 / 88 KYOTO UNIVERSITY
最新の手法でも公平予測問題にシンクホーンが使われる

他にも、二つの集合の距離を近づけるための微分可ロスとして使われる

例えば、公平性の担保のため、男性についての予測と女性についての
予測分布が同じようにしたい

予測誤差 + 赤と青の最適輸送距離を最小化 [Oneto+ NeurIPS 2020]
Luca Oneto, Michele Donini, Giulia Luise, Carlo Ciliberto, Andreas Maurer, Massimiliano Pontil. Exploiting
MMD and Sinkhorn Divergences for Fair and Transferable Representation Learning. NeurIPS 2020.
ニューラルネットワーク
入力
d 次元ベクトルが
出てくる
Rd
予測器
出力
各丸は各サンプルの
埋め込み
赤: 女性サンプル
青: 男性サンプル
59 / 88 KYOTO UNIVERSITY
まとめ: シンクホーンはシンプルかつ高い柔軟性を誇る
エントロピーを導入すると最適化が簡単に
シンクホーンは行列演算だけでできるシンプル最適化法
簡単にニューラルネットワークに組み込むことができる
take home message
60 / 88 KYOTO UNIVERSITY
Wasserstein GAN
(連続分布についての最適輸送)
61 / 88 KYOTO UNIVERSITY
連続分布の最適輸送を直接解くアプローチを考える

連続分布についての最適輸送を考える
 総コスト
 輸送量は非負
 余りなし
 不足なし
62 / 88 KYOTO UNIVERSITY
双対を取ると 2 つの関数の最適化に -> 難しい

双対をとると
この問題の最適値 = 最適輸送距離(強双対性)
双対の導出は下記文献などを参照

連続関数 f, g を最適化する問題
→ 依然難しい
最適輸送の解き方 https://www.slideshare.net/joisino/ss-249394573
63 / 88 KYOTO UNIVERSITY
1-ワッサースタインのときには 1 つの関数の最適化に

命題: コスト関数 C が距離関数のとき(1-ワッサースタイン)、
最適解において f = g
証明は下記文献など参照

以降 1-ワッサースタインのみを考える。これにより変数 g を削除できる

連続関数 f を最適化する問題
最適輸送の解き方 https://www.slideshare.net/joisino/ss-249394573
64 / 88 KYOTO UNIVERSITY
1-ワッサースタインの双対の条件はリプシッツと等価
C が距離関数のとき、
これは f が 1-リプシッツということ
65 / 88 KYOTO UNIVERSITY
以降、リプシッツ連続関数を最適化する問題を考える

リプシッツ性は局所的な条件(各点での勾配)で表せるので嬉しい

双対や f = g の議論は込み入っているので、短時間では詳細まで
追えませんでした。気になる人は下記文献をあとで参照してください。

以降は、上記の問題さえ解ければ最適輸送が解けるということを
前提に、上記の問題を解くことに集中します。
最適輸送の解き方 https://www.slideshare.net/joisino/ss-249394573
66 / 88 KYOTO UNIVERSITY
μ のサンプルを上げ、ν のサンプルを下げるのが目的

f は μ からのサンプル上で大きければ大きいほど
ν からのサンプル上で小さければ小さいほどよい

ただし、f は「滑らか」(リプシッツ連続)でなければならない
67 / 88 KYOTO UNIVERSITY
関数最適化のイメージ

例: 赤点は μ からのサンプル、青点は ν からのサンプルに対応
背景が赤いほど
f の値が大きい
背景が青いほど
f の値が小さい
関数の変化は滑らか
68 / 88 KYOTO UNIVERSITY
双対問題は 2 クラス分類問題と見ることができる

このように見ると、μ からのサンプルを正例、ν からのサンプルを
負例としたときの 2 クラス分類問題と見ることができる

激しく変化する分類器は制約違反
「正則化」としてリプシッツ関数の条件
69 / 88 KYOTO UNIVERSITY
分類問題をニューラルネットワークに任せる

「分類器」 f をニューラルネットワークでモデリングすることを考える

ロス関数はシンプルに

これを経験誤差最小化

f が 1-リプシッツ連続であることを課すのは難しい

ここでは素朴な解決策を 2 つ紹介
70 / 88 KYOTO UNIVERSITY
パラメータの値を無理やり制限してリプシッツ性を課す

解決策 1: weight clipping [Arjovsky+ 2017]

訓練の際ニューラルネットワークの各パラメータの絶対値が
定数 γ > 0 を越えるたびに絶対値 γ にクリップする(γ:ハイパラ)

こうすると、ニューラルネットワーク f の表現できる関数は制限され
急激な変化をする関数は表せなくなる

γ の設定次第で、何らかの k > 0 について k-リプシッツであることが
保証できる

k-リプシッツな関数全てを表現できる訳ではないが、ニューラルネットワー
クの柔軟性よりそれなりに豊富な関数が表現できることが期待できる
Martin Arjovsky, Soumith Chintala, Léon Bottou. Wasserstein GAN. ICML 2017
71 / 88 KYOTO UNIVERSITY
各点での勾配が 1 から離れるとペナルティ

解決策 2: gradient penalty [Gulrajani+ 2017]

f が微分可のとき各点での勾配のノルムが 1 以下 ↔ 1-リプシッツ

色んな点で勾配を評価して 1 から離れていたらペナルティを課す
をロスとして最適化
Ishaan Gulrajani, Faruk Ahmed, Martín Arjovsky, Vincent Dumoulin, Aaron C. Courville.. Improved
Training of Wasserstein GANs. NeurIPS 2017
ハイパラ正則化係数
勾配を 1 に近づける
72 / 88 KYOTO UNIVERSITY
ニューラルネットワークの定式化は GAN に用いられる

f をニューラルネットワークで表すと f(x) は x について微分可能
→ 最適輸送コストを下げるには x をどう動かせばよいかが分かる

ニューラルネットワークによる定式化は GAN(生成モデル)の
訓練によく用いられる: Wasserstein GAN

自然サンプルの集合を X ⊂ Rd
とする。例えば画像の集合

GAN により、X に似たサンプル集合を生成したい

GAN により生成したサンプルの集合を Y ⊂ Rd
とし、X と Y の距離を
最適輸送コストで測る

これを最小化するように GAN を訓練する
73 / 88 KYOTO UNIVERSITY
ニューラルネットワークの推定は大規模データと相性よし

典型的な X は非常に大きい(数百万枚の画像など)

生成モデルの生成結果 Y の候補は無限にある

シンクホーンアルゴリズムでは全ての対を一度に解かなければ
ならず、非常に大きいデータには適していない

「分類器」 f を分類するという考え方に立てば、
X と Y から一部のデータをミニバッチとして取り出し f を徐々に
訓練していけばよい
→ ニューラルネットワークによる推定は大規模(or 無限)のデータ
について解くのと相性がよい
74 / 88 KYOTO UNIVERSITY
Wasserstein GAN: 生成モデル と f の交互訓練

1. 生成モデル G: Rr
→ Rd
をランダムに初期化
これはノイズ z ∈ Rr
を受け取り画像 G(z) ∈ Rd
を返す
最適輸送問題を解くニューラルネットワーク f をランダムに初期化
 2. G を使って画像 Y = {G(z1
), G(z2
), ..., G(zm
)} を生成

3. f が X と Y を分類できるようにミニバッチで訓練して
X と Y の(ミニバッチの)最適輸送コストを計算

4. f を使った最適輸送コストが小さくなるように G をアップデート

5. 2 へ戻る。このとき Y は変化するが f を一から訓練するのではなく、
少し G が変わったくらいでは最適な f もほぼ同じなので
以前のパラメータから訓練をスタートする(ウォームスタート)
75 / 88 KYOTO UNIVERSITY
深層畳み込みネットワークを使うことでリアルな画像生成

Wasserstein GAN の論文や後続の論文では G や f として
深層畳み込みニューラルネットワークを使う

上は X を顔写真集合として訓練したてできた生成画像
非常にリアルな顔写真が生成できている
上の画像は段階的学習など別のテクニックも駆使して訓練されている
Tero Karras, Timo Aila, Samuli Laine, Jaakko Lehtinen. Progressive Growing of GANs for Improved
Quality, Stability, and Variation. ICLR 2018.
76 / 88 KYOTO UNIVERSITY
連続分布の最適輸送は分類問題として解ける
連続分布の最適輸送の双対問題は分類問題とみなせる
「分類器」 f をニューラルネットワークでモデリング
WGAN は最適輸送距離が小さくなるようにサンプルを動かす
take home message
77 / 88 KYOTO UNIVERSITY
まとめ
78 / 88 KYOTO UNIVERSITY
テイクホームメッセージ 1
最適輸送は確率分布と確率分布を比較するのに使えるツール
take home message
79 / 88 KYOTO UNIVERSITY
テイクホームメッセージ 2
take home message
最適輸送は KL の欠点を克服できる。
手法中に KL が現れたら最適輸送を考えてみましょう。
80 / 88 KYOTO UNIVERSITY
テイクホームメッセージ 3
最適輸送距離は線形計画として定式化される
ワッサースタイン距離は距離公理を満たす特殊ケース
ソルバを利用すると簡単に最適輸送を計算できる
take home message
81 / 88 KYOTO UNIVERSITY
テイクホームメッセージ 4
take home message
エントロピーを導入すると最適化が簡単に
シンクホーンは行列演算だけでできるシンプル最適化法
簡単にニューラルネットワークに組み込むことができる
82 / 88 KYOTO UNIVERSITY
テイクホームメッセージ 5
take home message
連続分布の最適輸送の双対問題は分類問題とみなせる
「分類器」 f をニューラルネットワークでモデリング
WGAN は最適輸送距離が小さくなるようにサンプルを動かす
83 / 88 KYOTO UNIVERSITY
アルゴリズムを勉強したい方におすすめの資料

最適輸送のアルゴリズム面についてもっと詳しく知りたい方は:

アルゴリズム面について以前行ったセミナーの資料が利用できるので
ぜひご覧ください

最適輸送の解き方
https://www.slideshare.net/joisino/ss-249394573
84 / 88 KYOTO UNIVERSITY
さらに勉強したい方におすすめの本

最適輸送全般についてもっと詳しく知りたい方は:

Gabriel Peyré and Macro Cuturi. Computational
Optimal Transport with Applications to Data Science.

arXiv で電子版が公開されています
https://arxiv.org/abs/1803.00567
85 / 88 KYOTO UNIVERSITY
最適輸送の学習にうってつけの本(宣伝)

機械学習プロフェッショナルシリーズより最適輸送本が刊行予定です
(来年末ごろ予定)

発売された暁にはぜひご覧ください
86 / 88 KYOTO UNIVERSITY
参考文献一覧
87 / 88 KYOTO UNIVERSITY
参考文献一覧

Jason Altschuler, Jonathan Weed, Philippe Rigollet. Near-linear time
approximation algorithms for optimal transport via Sinkhorn iteration.
NeurIPS 2017.

Martin Arjovsky, Soumith Chintala, Léon Bottou. Wasserstein GAN.
ICML 2017.

Charlie Frogner, Chiyuan Zhang, Hossein Mobahi, Mauricio Araya-Polo,
Tomaso A. Poggio. Learning with a Wasserstein Loss. NIPS 2015.

Ishaan Gulrajani, Faruk Ahmed, Martín Arjovsky, Vincent Dumoulin,
Aaron C. Courville.. Improved Training of Wasserstein GANs. NeurIPS
2017.

Tero Karras, Timo Aila, Samuli Laine, Jaakko Lehtinen. Progressive
Growing of GANs for Improved Quality, Stability, and Variation. ICLR
2018.
88 / 88 KYOTO UNIVERSITY
参考文献一覧

Xiaofeng Liu, Yuzhuo Han, Song Bai, Yi Ge, Tianxing Wang, Xu Han,
Site Li, Jane You, Jun Lu. Importance-Aware Semantic Segmentation in
Self-Driving with Discrete Wasserstein Training. AAAI 2020.

Luca Oneto, Michele Donini, Giulia Luise, Carlo Ciliberto, Andreas
Maurer, Massimiliano Pontil. Exploiting MMD and Sinkhorn Divergences
for Fair and Transferable Representation Learning. NeurIPS 2020.

Gabriel Peyré. Optimal Transport in Imaging Sciences. 2012.

https://www.slideshare.net/gpeyre/optimal-transport-in-imaging-
sciences

Gabriel Peyré, Marco Cuturi. Computational Optimal Transport. 2019.

佐藤竜馬. 最適輸送の解き方. https://www.slideshare.net/joisino/ss-
249394573

More Related Content

最適輸送入門

  • 1. 1 KYOTO UNIVERSITY KYOTO UNIVERSITY 最適輸送入門 佐藤竜馬 @IBIS 2021 チュートリアル
  • 2. 2 / 88 KYOTO UNIVERSITY 最適輸送は確率分布を比較するツール  このチュートリアルのトピック: 最適輸送  類似ツール: KLダイバージェンス, MMD  このチュートリアルでは  KL ダイバージェンスに比べた最適輸送の優れた点を知る  最適輸送のアルゴリズムを知る をめざします 最適輸送は確率分布と確率分布を比較するのに使えるツール take home message
  • 3. 3 / 88 KYOTO UNIVERSITY 最適輸送の直感的な導入とメリット
  • 4. 4 / 88 KYOTO UNIVERSITY 分布比較の例: カテゴリ予測  確率分布の比較は機械学習のあらゆる場面で登場する  例1: カテゴリ予測のロス関数  クロスエントロピー(KL ダイバージェンス)が有名 dog cat lion bird dog cat lion bird 予測分布 正解ラベル 距離 = ロス
  • 5. 5 / 88 KYOTO UNIVERSITY 分布比較の例: 生成モデル  確率分布の比較は機械学習のあらゆる場面で登場する  例2: 生成モデルのロス関数 生成サンプルの経験分布 訓練サンプルの経験分布 距離 = ロス Tero Karras, Timo Aila, Samuli Laine, Jaakko Lehtinen. Progressive Growing of GANs for Improved Quality, Stability, and Variation. ICLR 2018. https://mmlab.ie.cuhk.edu.hk/projects/CelebA.html
  • 6. 6 / 88 KYOTO UNIVERSITY 最適輸送の直感的な意味: 確率分布の「山」を輸送  確率分布の「山」を移動させて一致させるのにかかるコストが 最適輸送の直感的な定義  輸送という単語はここからきている  土塊を運ぶイメージから、Earth Mover’s Distance とも呼ばれる μ ν 運ぶ
  • 7. 7 / 88 KYOTO UNIVERSITY ヒストグラム比較の場合の例  クラス確率(ヒストグラム)比較の場合  各クラスから他のクラスへ山を移動させるコストを人手で定める cat → lion は cat → bird よりも低コストという知識を込めてもよい  μ の山を移動させて ν に一致させるコストが最適輸送距離 (ν の山を移動させて μ の山に移動させるとしてもコストは同じ) dog cat lion bird dog cat lion bird μ ν 不動 不動 不動 dog へ lion へ
  • 8. 8 / 88 KYOTO UNIVERSITY 点群比較の場合の例  連続分布の経験分布(点群)比較の場合  各点に質量 1/n の砂山があると考えその輸送距離を考える
  • 9. 9 / 88 KYOTO UNIVERSITY 最適な輸送についてのコストを用いて距離を定義する  輸送の仕方は複数通りあるが、最もコストが少ない輸送方法を選ぶ ヒストグラムの場合も同様  「最適」という言葉はここからきている 最適ではない輸送の例
  • 10. 10 / 88 KYOTO UNIVERSITY もう少し規模が大きい場合の最適輸送の例  もう少し規模の大きい点群の最適輸送
  • 11. 11 / 88 KYOTO UNIVERSITY KL ダイバージェンスは要素ごとの項の和  KL ダイバージェンスとの比較を通して最適輸送の利点を確認する  離散分布は n 次元のベクトル p で表現できる pi は i 番目の要素の確率値  KL ダイバージェンス:  要素ごとに独立に項を足し合わせているのがポイント
  • 12. 12 / 88 KYOTO UNIVERSITY KL ダイバージェンスは要素の距離を考慮できない  気温をクラス分類により予測する問題を考える  KL ダイバージェンスを用いると、要素ごとの和となるので、 青・赤の距離と青・緑の距離は同じ 21 22 23 24 25 26 27 28 29 21 22 23 24 25 26 27 28 29 =
  • 13. 13 / 88 KYOTO UNIVERSITY 最適輸送は要素どうしの距離を考慮できる  最適輸送を用いると、青・赤の方が輸送にかかるコストが少ないので 距離が小さいと判定される  22 度を 23 度と間違えているだけなので、22 度を 28 度と 間違えるより距離が小さいと判定されるのは直感に適合している 21 22 23 24 25 26 27 28 29 21 22 23 24 25 26 27 28 29 <
  • 14. 14 / 88 KYOTO UNIVERSITY KL はサポートが被っていないと使えない  連続分布の経験分布(点群)比較を考える  KL はサポートが被っていないと距離が ∞ と判断される → 連続分布の経験分布の比較ができない 経験分布においては、ちょうどこの点における 青の確率はゼロと判断される → - log 0 の項が登場して KL = ∞ 確率値が正を取る点集合
  • 15. 15 / 88 KYOTO UNIVERSITY 最適輸送はサポートが被っていなくても使える  最適輸送は輸送という概念のおかげでサポートが被っていないときにも 利用できる
  • 16. 16 / 88 KYOTO UNIVERSITY 最適輸送は分布の対応関係を得ることができる  最適輸送は副産物として、分布の対応関係を得ることができる  正規分布の対応関係: 分布がずれていても、ずれを修正するような対応関係が得られる
  • 17. 17 / 88 KYOTO UNIVERSITY 応用: 最適輸送は色相変換にも利用できる  入力: 色相の異なる二つの画像  ピクセルを RGB 空間内におき、画像を RGB 空間内の点群とみる → 二つの点群の最適輸送を計算 → 得られた対応関係をもとに、ピクセルの色を置換する  出力: 色相を入れ替えた二つの画像 Gabriel Peyré. Optimal Transport in Imaging Sciences. 2012. https://www.slideshare.net/gpeyre/optimal-transport-in-imaging-sciences
  • 18. 18 / 88 KYOTO UNIVERSITY 最適輸送は KL の限界を克服できる  最適輸送まとめ:  最適輸送は距離構造を利用できる (↔ KL はできない)  最適輸送はサポートが被っていないときにも利用できる (↔ KL はできない)  最適輸送は分布の対応関係を得ることができる (↔ KL はできない)  点どうしに自然な距離を導入できるときには最適輸送チャンス 「猫」 と 「ライオン」 は 「猫」 と 「鳥」 より近い(クラス分類) 温度のような順序尺度 ユークリッド空間上の点群
  • 19. 19 / 88 KYOTO UNIVERSITY KL を最適輸送に置き換えることを提案する論文たち  実際、KL を最適輸送に置き換える提案がさまざまな文脈で なされている  Arjovsky et al. Wasserstein GAN. ICML 2017. GAN のロスを JS ダイバージェンスから最適輸送距離に  Frogner et al. Learning with Wasserstein Loss. NeurIPS 2015. マルチクラス分類のロスをクロスエントロピーから最適輸送距離に  Liu et al. Importance-Aware Semantic Segmentation in Self-Driving with Discrete Wasserstein Training. AAAI 2020. セグメンテーションのロスをクロスエントロピーから最適輸送距離に
  • 20. 20 / 88 KYOTO UNIVERSITY KL が現れたら最適輸送に置き換えられないか考えてみる  少しズルいですが: 卒論のテーマが思い浮かばないとき、KL を使っている手法を探して 最適輸送に置き換えるだけで論文になります。  ただし: タスクによって最適輸送との相性あり。 距離構造の定義の仕方は工夫のみせどころ。 よいタスク・距離構造をうまく選べると非常によい研究になります。 山ほどあります 最適輸送は KL の欠点を克服できる。 手法中に KL が現れたら最適輸送を考えてみましょう。 take home message
  • 21. 21 / 88 KYOTO UNIVERSITY 最適輸送の定義と求め方
  • 22. 22 / 88 KYOTO UNIVERSITY ヒストグラムの最適輸送距離の定式化: 線形計画  入力: 比較するヒストグラム 各点の距離を表す行列  出力: ヒストグラムの距離  最適輸送距離を以下の最適化問題の最適値と定義する  総コスト  輸送量は非負  余りなし  不足なし 決定変数 Pij は 点 i から点 j に 輸送する量を 表す これは線形計画
  • 23. 23 / 88 KYOTO UNIVERSITY ヒストグラム比較の例  入力: dog, cat, lion, bird dog, cat, lion, bird dog, cat, lion, bird ↑ cat と lion のミスはコストが低い cat から lion へ 0.2 の輸送 dog cat lion bird dog cat lion bird 不動 不動 不動 lion へ  出力:
  • 24. 24 / 88 KYOTO UNIVERSITY 点群の最適輸送距離の定式化: 線形計画  入力: 比較する点群 各点の距離を表す関数  出力: 点群の距離  最適輸送距離を以下の最適化問題の最適値と定義する  総コスト  輸送量は非負  余りなし  不足なし 決定変数 Pij は 点 i から点 j に 輸送する量を 表す これは線形計画
  • 25. 25 / 88 KYOTO UNIVERSITY 連続分布比較の場合の最適輸送距離の定式化  入力: 比較する確率分布 各点の距離を表す関数  出力: 分布の距離  最適輸送距離を以下の最適化問題の最適値と定義する  総コスト  輸送量は非負  余りなし  不足なし ざっくり言うと 和を積分にして 連続にしている
  • 26. 26 / 88 KYOTO UNIVERSITY 離散最適輸送は線形計画、連続の場合は工夫が必要  ヒストグラムの場合と点群の場合はほとんど同じ線形計画 アルゴリズムを考える上ではこれらは同じ問題とみなされることが多い  線形計画なので、既存のソルバを用いて解くことができる  連続分布どうしの最適輸送は連続分布の最適化問題になるので 解くのが難しい 1. 連続分布からサンプリングを行い点群比較に帰着する、または 2. このチュートリアルの後半で紹介する双対を使ったアプローチで 直接解く  以下、主に離散最適輸送を考える
  • 27. 27 / 88 KYOTO UNIVERSITY ワッサースタイン距離は最適輸送の特殊ケース  最適輸送距離はコスト行列の設定次第で距離公理は満たさない すべてコストが 0 のとき、すべての分布の距離はゼロになってしまう  ワッサースタイン距離は距離公理を満たす最適輸送の特殊ケース  定義: ワッサースタイン距離 上の距離関数 と実数 を用いてコスト行列を と定義する。 を p-ワッサースタイン距離という。  ユークリッド距離の 1-ワッサースタイン や 2-ワッサースタイン がよく用いられる
  • 28. 28 / 88 KYOTO UNIVERSITY ワッサースタイン距離は距離公理を満たす  定理: ワッサースタイン距離は距離公理を満たす 証明は下記文献など参照  すなわち、点の距離として距離公理を満たすものを使えば、 分布の距離として自動的に距離公理が満たされるようになる  cf. KL は距離の公理を満たさない Gabriel Peyré, Marco Cuturi. Computational Optimal Transport. 2019.
  • 29. 29 / 88 KYOTO UNIVERSITY ワッサースタイン距離の例  について、 , が確率 1 で出てくる確率分布 , のワッサースタイン距離は  一方、KL ダイバージェンスは  ワッサースタイン距離の方がより細かく見分けているといえる
  • 30. 30 / 88 KYOTO UNIVERSITY ソルバの紹介: POT がオススメ  最適輸送を実際に使う際には様々なソルバが利用できる  Python Optimal Transport (POT): オススメ pip install pot でインストールできる a: numpy array (n,) b: numpy array (m,) C: numpy array (n, m) ot.emd(a, b, C) を呼び出せば最適輸送行列 P* が返る  Scipy: scipy.optimize.linear_sum_assignment → 1 対 1 対応の場合のみ scipy.optimize.linprog → 一般の線形計画
  • 31. 31 / 88 KYOTO UNIVERSITY POT の使用例: 簡単に使えます  数値例: 二つの正規分布からの点群の比較 import numpy as np import matplotlib.pyplot as plt import ot # POT ライブラリ n = 100 # 点群サイズ mu = np.random.randn(n, 2) # 入力分布 1 nu = np.random.randn(n, 2) + 1 # 入力分布 2 a = np.ones(n) / n # 質量ヒストグラム (1/n, ..., 1/n) b = np.ones(n) / n # 質量ヒストグラム (1/n, ..., 1/n) C = np.linalg.norm(nu[np.newaxis] - mu[:, np.newaxis], axis=2) # コスト行列 P = ot.emd(a, b, C) # 最適輸送距離の計算 plt.scatter(mu[:, 0], mu[:, 1]) # mu の散布図描写 plt.scatter(nu[:, 0], nu[:, 1]) # nu の散布図描写 for i in range(n): j = P[i].argmax() # i の対応相手: 最もたくさん輸送している先 plt.plot([mu[i, 0], nu[j, 0]], [mu[i, 1], nu[j, 1]], c='grey', zorder=-1) ↑ コピペで試せます
  • 32. 32 / 88 KYOTO UNIVERSITY 最適輸送は線形計画。ソルバで簡単に解ける。 最適輸送距離は線形計画として定式化される ワッサースタイン距離は距離公理を満たす特殊ケース ソルバを利用すると簡単に最適輸送を計算できる take home message
  • 33. 33 / 88 KYOTO UNIVERSITY シンクホーンアルゴリズム
  • 34. 34 / 88 KYOTO UNIVERSITY 高速でホワイトボックスなアルゴリズムが欲しい  前章での議論: 最適輸送は線形計画 → 線形計画ソルバに投げると解ける  欠点: 汎用ソルバ・厳密ソルバは遅い ブラックボックスなので、自分の手法に有機的に組込みづらい  これから紹介するシンクホーンアルゴリズム: 高速 シンプル → さまざまな手法と組み合わせやすい ただし、厳密な最適輸送は求まらない
  • 35. 35 / 88 KYOTO UNIVERSITY エントロピー正則化つき最適輸送問題を考える  以下のエントロピー正則化つき最適輸送問題を考える  ε > 0 は正則化係数(ハイパーパラメータ) オリジナルの最適輸送とは別問題。ただし ε → 0 で元問題に。 エントロピー項 = H(P)
  • 36. 36 / 88 KYOTO UNIVERSITY エントロピー正則化つき問題は強凸  嬉しさ : エントロピー正則化つき問題の目的関数は強凸  制約が線形制約だけということは実行可能領域は凸なので 実行可能領域凸 + 目的関数強凸 → 最適解は一意に定まる ↔ 線形計画は面全体で最適をとることがあり、一意に定まらない 線形 エントロピーは強凹 → 全体で強凸 → 最適化しやすい Gabriel Peyré, Marco Cuturi. Computational Optimal Transport. 2019.
  • 37. 37 / 88 KYOTO UNIVERSITY 双対問題は制約なし最大化問題  エントロピー正則化つき最適輸送の(凸計画としての)双対問題は → 制約なし最大化問題  双対問題を解くことをめざす  双対問題の導出は下記文献などを参照 Gabriel Peyré, Marco Cuturi. Computational Optimal Transport. 2019. 最適輸送の解き方 https://www.slideshare.net/joisino/ss-249394573
  • 38. 38 / 88 KYOTO UNIVERSITY 双対問題の目的関数の勾配は f 内 g 内で絡みなし  双対問題の目的関数を D をおく  D の f と g についての勾配は以下の通り  fi の勾配の中に fk (k ≠ i), gj の勾配の中に gk (k ≠ j) は 出てこない(絡みなし)
  • 39. 39 / 88 KYOTO UNIVERSITY f ごと、g ごとに最適値が厳密に求まる  シンクホーンアルゴリズムの基本的な考えは座標向上法  f を固定したときの g の最適値は勾配イコールゼロとおいて g を固定したときの f の最適値も同様に  シンクホーンアルゴリズムは f 固定での g の厳密最適化 → g 固定での f の厳密最適化を交互に繰り返す
  • 40. 40 / 88 KYOTO UNIVERSITY シンクホーンアルゴリズムは f と g を交互に最適化する  対数領域でのシンクホーンアルゴリズム  ステップ 1: f(1) を適当に初期化(例えばゼロベクトル), t = 1 に  ステップ 2:  ステップ 3:  ステップ 4: f と g が収束するまで t ← t + 1 でステップ 2 へ  目的関数が微分可能で各ステップ唯一解なので大域最適に収束
  • 41. 41 / 88 KYOTO UNIVERSITY 指数関数を使って変数変換するとシンプルに書ける  先程のイテレーションでは log や exp がたくさん出てくる  と変数変換するとシンプルに
  • 42. 42 / 88 KYOTO UNIVERSITY ギブスカーネルの定義  さらに K ∈ Rn×m を以下で定める  K をギブス (Gibbs) カーネルという  i と j の類似度を表している  例えば C がユークリッド距離の自乗(2-ワッサースタイン) のときガウスカーネルになる コストに負号 → 類似度 exp は単調
  • 43. 43 / 88 KYOTO UNIVERSITY シンクホーンのイテレーションは行列積でかける  ギブスカーネル行列を使うとさらにシンプルに  ただし KT は転置行列、割り算は要素ごと、分母は行列ベクトル積  非常に単純に実装できる  行列ベクトル積がメインなので GPU で高速計算可能 ふつうシンクホーンというと この形の更新アルゴリズムを指す
  • 44. 44 / 88 KYOTO UNIVERSITY シンクホーン変数から元の変数への戻し方  シンクホーンにより (u, v) が求まると、変数変換の式より元の 双対変数は  主問題の変数は双対最適解と主最適解の対応関係より f, g が完璧に収束しない限り、求めた Pij は厳密には実行可能とは 限らないことに注意(実用上は多少の誤差は問題ないことも多い)  この Pij から違反分をいい感じに分配して実行可能解を計算する アルゴリズムも提案されている [Altschuler+ 2017] Jason Altschuler, Jonathan Weed, Philippe Rigollet. Near-linear time approximation algorithms for optimal transport via Sinkhorn iteration. NeurIPS 2017.
  • 45. 45 / 88 KYOTO UNIVERSITY シンクホーンアルゴリズム: 例  例(以前使ったもの): dog, cat, lion, bird dog, cat, lion, bird dog, cat, lion, bird ↑ cat と lion のミスはコストが低い  エントロピー正則化なしの場合の出力: dog cat lion bird dog cat lion bird 不動 不動 不動 lion へ
  • 46. 46 / 88 KYOTO UNIVERSITY シンクホーンアルゴリズム: 例 import numpy as np import matplotlib.pyplot as plt n, m = 4, 4 C = np.array([ [0, 2, 2, 2], [2, 0, 1, 2], [2, 1, 0, 2], [2, 2, 2, 0]]) a = np.array([0.2, 0.5, 0.2, 0.1]) b = np.array([0.3, 0.3, 0.4, 0.0]) eps = 0.2 # 大きいと高速に、小さいと厳密に K = np.exp(- C / eps) # ギブスカーネルの計算 u = np.ones(n) # すべて 1 で初期化 for i in range(100): v = b / (K.T @ u) # ステップ (2) u = a / (K @ v) # ステップ (3) f = eps * np.log(u + 1e-9) # 対数領域に戻す g = eps * np.log(v + 1e-9) # 対数領域に戻す P = u.reshape(n, 1) * K * v.reshape(1, m) # 主解 plt.pcolor(P, cmap=plt.cm.Blues) # 解の可視化 ← コピペで試せます メインロジックはわずか 3 行 ↑ エントロピーなしの解とほぼ一致 (左下が (1, 1) であることに注意) 外部ライブラリに頼らない
  • 47. 47 / 88 KYOTO UNIVERSITY シンクホーンは自動微分できる  計算が行列演算だけからなるので、自動微分ライブラリにより 微分が求まる  たとえば以下のように numpy の代わりに torch とする import torch K = torch.exp(- C / eps) # ギブスカーネルの計算 u = torch.ones(n) # すべて 1 で初期化 for i in range(100): v = b / (K.T @ u) # ステップ (2) u = a / (K @ v) # ステップ (3) f = eps * torch.log(u + 1e-9) # 対数領域に戻す g = eps * torch.log(v + 1e-9) # 対数領域に戻す P = u.reshape(n, 1) * K * v.reshape(1, m) # 主解 loss = (P * C).sum() loss.backward()
  • 48. 48 / 88 KYOTO UNIVERSITY 自動微分の例  例: 以下の点群を考える。赤は固定、青の位置がパラメータ。 Sinkhorn により計算された値をロスとして勾配法で最適化。
  • 49. 49 / 88 KYOTO UNIVERSITY 自動微分の例  Sinkhorn により求まった輸送行列を参考に記している
  • 50. 50 / 88 KYOTO UNIVERSITY 自動微分の例  Sinkhorn により求まった輸送行列を参考に記している
  • 51. 51 / 88 KYOTO UNIVERSITY 自動微分の例  Sinkhorn により求まった輸送行列を参考に記している
  • 52. 52 / 88 KYOTO UNIVERSITY 自動微分の例  Sinkhorn により求まった輸送行列を参考に記している
  • 53. 53 / 88 KYOTO UNIVERSITY 自動微分の例  Sinkhorn により求まった輸送行列を参考に記している
  • 54. 54 / 88 KYOTO UNIVERSITY 自動微分の例  Sinkhorn により求まった輸送行列を参考に記している
  • 55. 55 / 88 KYOTO UNIVERSITY 自動微分の例  Sinkhorn により求まった輸送行列を参考に記している
  • 56. 56 / 88 KYOTO UNIVERSITY 自動微分の例  輸送距離の小さい青の配置が求まった
  • 57. 57 / 88 KYOTO UNIVERSITY ソースコード全貌 import matplotlib.pyplot as plt import torch import torch.optim import torch.nn # データ生成 torch.manual_seed(0) x = torch.rand(20, 2) y = torch.rand(20, 2) + torch.FloatTensor([0, 2]) z = torch.rand(20, 2) + torch.FloatTensor([1, 1]) mu = torch.cat([x, y, z]) nu = torch.rand(12, 2) * 2 nu = torch.nn.parameter.Parameter(nu) n, m = len(mu), len(nu) a = torch.ones(n) / n b = torch.ones(m) / m optimizer = torch.optim.SGD([nu], lr=1.0) for it in range(100): eps = 0.1 D = torch.linalg.norm(mu.reshape(n, 1, 2) - nu.reshape(1, m, 2), axis=2) K = torch.exp(- D / eps) # ギブスカーネルの計算 u = torch.ones(n) # すべて 1 で初期化 for i in range(100): v = b / (K.T @ u) # ステップ (2) u = a / (K @ v) # ステップ (3) f = eps * torch.log(u + 1e-9) # 対数領域に戻す g = eps * torch.log(v + 1e-9) # 対数領域に戻す P = u.reshape(n, 1) * K * v.reshape(1, m) # 主解 loss = (P * D).sum() optimizer.zero_grad() loss.backward() optimizer.step() plt.clf() plt.scatter(mu[:, 0], mu[:, 1]) plt.scatter(nu.data[:, 0], nu.data[:, 1]) plt.show() コピペで試せます
  • 58. 58 / 88 KYOTO UNIVERSITY 最新の手法でも公平予測問題にシンクホーンが使われる  他にも、二つの集合の距離を近づけるための微分可ロスとして使われる  例えば、公平性の担保のため、男性についての予測と女性についての 予測分布が同じようにしたい  予測誤差 + 赤と青の最適輸送距離を最小化 [Oneto+ NeurIPS 2020] Luca Oneto, Michele Donini, Giulia Luise, Carlo Ciliberto, Andreas Maurer, Massimiliano Pontil. Exploiting MMD and Sinkhorn Divergences for Fair and Transferable Representation Learning. NeurIPS 2020. ニューラルネットワーク 入力 d 次元ベクトルが 出てくる Rd 予測器 出力 各丸は各サンプルの 埋め込み 赤: 女性サンプル 青: 男性サンプル
  • 59. 59 / 88 KYOTO UNIVERSITY まとめ: シンクホーンはシンプルかつ高い柔軟性を誇る エントロピーを導入すると最適化が簡単に シンクホーンは行列演算だけでできるシンプル最適化法 簡単にニューラルネットワークに組み込むことができる take home message
  • 60. 60 / 88 KYOTO UNIVERSITY Wasserstein GAN (連続分布についての最適輸送)
  • 61. 61 / 88 KYOTO UNIVERSITY 連続分布の最適輸送を直接解くアプローチを考える  連続分布についての最適輸送を考える  総コスト  輸送量は非負  余りなし  不足なし
  • 62. 62 / 88 KYOTO UNIVERSITY 双対を取ると 2 つの関数の最適化に -> 難しい  双対をとると この問題の最適値 = 最適輸送距離(強双対性) 双対の導出は下記文献などを参照  連続関数 f, g を最適化する問題 → 依然難しい 最適輸送の解き方 https://www.slideshare.net/joisino/ss-249394573
  • 63. 63 / 88 KYOTO UNIVERSITY 1-ワッサースタインのときには 1 つの関数の最適化に  命題: コスト関数 C が距離関数のとき(1-ワッサースタイン)、 最適解において f = g 証明は下記文献など参照  以降 1-ワッサースタインのみを考える。これにより変数 g を削除できる  連続関数 f を最適化する問題 最適輸送の解き方 https://www.slideshare.net/joisino/ss-249394573
  • 64. 64 / 88 KYOTO UNIVERSITY 1-ワッサースタインの双対の条件はリプシッツと等価 C が距離関数のとき、 これは f が 1-リプシッツということ
  • 65. 65 / 88 KYOTO UNIVERSITY 以降、リプシッツ連続関数を最適化する問題を考える  リプシッツ性は局所的な条件(各点での勾配)で表せるので嬉しい  双対や f = g の議論は込み入っているので、短時間では詳細まで 追えませんでした。気になる人は下記文献をあとで参照してください。  以降は、上記の問題さえ解ければ最適輸送が解けるということを 前提に、上記の問題を解くことに集中します。 最適輸送の解き方 https://www.slideshare.net/joisino/ss-249394573
  • 66. 66 / 88 KYOTO UNIVERSITY μ のサンプルを上げ、ν のサンプルを下げるのが目的  f は μ からのサンプル上で大きければ大きいほど ν からのサンプル上で小さければ小さいほどよい  ただし、f は「滑らか」(リプシッツ連続)でなければならない
  • 67. 67 / 88 KYOTO UNIVERSITY 関数最適化のイメージ  例: 赤点は μ からのサンプル、青点は ν からのサンプルに対応 背景が赤いほど f の値が大きい 背景が青いほど f の値が小さい 関数の変化は滑らか
  • 68. 68 / 88 KYOTO UNIVERSITY 双対問題は 2 クラス分類問題と見ることができる  このように見ると、μ からのサンプルを正例、ν からのサンプルを 負例としたときの 2 クラス分類問題と見ることができる  激しく変化する分類器は制約違反 「正則化」としてリプシッツ関数の条件
  • 69. 69 / 88 KYOTO UNIVERSITY 分類問題をニューラルネットワークに任せる  「分類器」 f をニューラルネットワークでモデリングすることを考える  ロス関数はシンプルに  これを経験誤差最小化  f が 1-リプシッツ連続であることを課すのは難しい  ここでは素朴な解決策を 2 つ紹介
  • 70. 70 / 88 KYOTO UNIVERSITY パラメータの値を無理やり制限してリプシッツ性を課す  解決策 1: weight clipping [Arjovsky+ 2017]  訓練の際ニューラルネットワークの各パラメータの絶対値が 定数 γ > 0 を越えるたびに絶対値 γ にクリップする(γ:ハイパラ)  こうすると、ニューラルネットワーク f の表現できる関数は制限され 急激な変化をする関数は表せなくなる  γ の設定次第で、何らかの k > 0 について k-リプシッツであることが 保証できる  k-リプシッツな関数全てを表現できる訳ではないが、ニューラルネットワー クの柔軟性よりそれなりに豊富な関数が表現できることが期待できる Martin Arjovsky, Soumith Chintala, Léon Bottou. Wasserstein GAN. ICML 2017
  • 71. 71 / 88 KYOTO UNIVERSITY 各点での勾配が 1 から離れるとペナルティ  解決策 2: gradient penalty [Gulrajani+ 2017]  f が微分可のとき各点での勾配のノルムが 1 以下 ↔ 1-リプシッツ  色んな点で勾配を評価して 1 から離れていたらペナルティを課す をロスとして最適化 Ishaan Gulrajani, Faruk Ahmed, Martín Arjovsky, Vincent Dumoulin, Aaron C. Courville.. Improved Training of Wasserstein GANs. NeurIPS 2017 ハイパラ正則化係数 勾配を 1 に近づける
  • 72. 72 / 88 KYOTO UNIVERSITY ニューラルネットワークの定式化は GAN に用いられる  f をニューラルネットワークで表すと f(x) は x について微分可能 → 最適輸送コストを下げるには x をどう動かせばよいかが分かる  ニューラルネットワークによる定式化は GAN(生成モデル)の 訓練によく用いられる: Wasserstein GAN  自然サンプルの集合を X ⊂ Rd とする。例えば画像の集合  GAN により、X に似たサンプル集合を生成したい  GAN により生成したサンプルの集合を Y ⊂ Rd とし、X と Y の距離を 最適輸送コストで測る  これを最小化するように GAN を訓練する
  • 73. 73 / 88 KYOTO UNIVERSITY ニューラルネットワークの推定は大規模データと相性よし  典型的な X は非常に大きい(数百万枚の画像など)  生成モデルの生成結果 Y の候補は無限にある  シンクホーンアルゴリズムでは全ての対を一度に解かなければ ならず、非常に大きいデータには適していない  「分類器」 f を分類するという考え方に立てば、 X と Y から一部のデータをミニバッチとして取り出し f を徐々に 訓練していけばよい → ニューラルネットワークによる推定は大規模(or 無限)のデータ について解くのと相性がよい
  • 74. 74 / 88 KYOTO UNIVERSITY Wasserstein GAN: 生成モデル と f の交互訓練  1. 生成モデル G: Rr → Rd をランダムに初期化 これはノイズ z ∈ Rr を受け取り画像 G(z) ∈ Rd を返す 最適輸送問題を解くニューラルネットワーク f をランダムに初期化  2. G を使って画像 Y = {G(z1 ), G(z2 ), ..., G(zm )} を生成  3. f が X と Y を分類できるようにミニバッチで訓練して X と Y の(ミニバッチの)最適輸送コストを計算  4. f を使った最適輸送コストが小さくなるように G をアップデート  5. 2 へ戻る。このとき Y は変化するが f を一から訓練するのではなく、 少し G が変わったくらいでは最適な f もほぼ同じなので 以前のパラメータから訓練をスタートする(ウォームスタート)
  • 75. 75 / 88 KYOTO UNIVERSITY 深層畳み込みネットワークを使うことでリアルな画像生成  Wasserstein GAN の論文や後続の論文では G や f として 深層畳み込みニューラルネットワークを使う  上は X を顔写真集合として訓練したてできた生成画像 非常にリアルな顔写真が生成できている 上の画像は段階的学習など別のテクニックも駆使して訓練されている Tero Karras, Timo Aila, Samuli Laine, Jaakko Lehtinen. Progressive Growing of GANs for Improved Quality, Stability, and Variation. ICLR 2018.
  • 76. 76 / 88 KYOTO UNIVERSITY 連続分布の最適輸送は分類問題として解ける 連続分布の最適輸送の双対問題は分類問題とみなせる 「分類器」 f をニューラルネットワークでモデリング WGAN は最適輸送距離が小さくなるようにサンプルを動かす take home message
  • 77. 77 / 88 KYOTO UNIVERSITY まとめ
  • 78. 78 / 88 KYOTO UNIVERSITY テイクホームメッセージ 1 最適輸送は確率分布と確率分布を比較するのに使えるツール take home message
  • 79. 79 / 88 KYOTO UNIVERSITY テイクホームメッセージ 2 take home message 最適輸送は KL の欠点を克服できる。 手法中に KL が現れたら最適輸送を考えてみましょう。
  • 80. 80 / 88 KYOTO UNIVERSITY テイクホームメッセージ 3 最適輸送距離は線形計画として定式化される ワッサースタイン距離は距離公理を満たす特殊ケース ソルバを利用すると簡単に最適輸送を計算できる take home message
  • 81. 81 / 88 KYOTO UNIVERSITY テイクホームメッセージ 4 take home message エントロピーを導入すると最適化が簡単に シンクホーンは行列演算だけでできるシンプル最適化法 簡単にニューラルネットワークに組み込むことができる
  • 82. 82 / 88 KYOTO UNIVERSITY テイクホームメッセージ 5 take home message 連続分布の最適輸送の双対問題は分類問題とみなせる 「分類器」 f をニューラルネットワークでモデリング WGAN は最適輸送距離が小さくなるようにサンプルを動かす
  • 83. 83 / 88 KYOTO UNIVERSITY アルゴリズムを勉強したい方におすすめの資料  最適輸送のアルゴリズム面についてもっと詳しく知りたい方は:  アルゴリズム面について以前行ったセミナーの資料が利用できるので ぜひご覧ください  最適輸送の解き方 https://www.slideshare.net/joisino/ss-249394573
  • 84. 84 / 88 KYOTO UNIVERSITY さらに勉強したい方におすすめの本  最適輸送全般についてもっと詳しく知りたい方は:  Gabriel Peyré and Macro Cuturi. Computational Optimal Transport with Applications to Data Science.  arXiv で電子版が公開されています https://arxiv.org/abs/1803.00567
  • 85. 85 / 88 KYOTO UNIVERSITY 最適輸送の学習にうってつけの本(宣伝)  機械学習プロフェッショナルシリーズより最適輸送本が刊行予定です (来年末ごろ予定)  発売された暁にはぜひご覧ください
  • 86. 86 / 88 KYOTO UNIVERSITY 参考文献一覧
  • 87. 87 / 88 KYOTO UNIVERSITY 参考文献一覧  Jason Altschuler, Jonathan Weed, Philippe Rigollet. Near-linear time approximation algorithms for optimal transport via Sinkhorn iteration. NeurIPS 2017.  Martin Arjovsky, Soumith Chintala, Léon Bottou. Wasserstein GAN. ICML 2017.  Charlie Frogner, Chiyuan Zhang, Hossein Mobahi, Mauricio Araya-Polo, Tomaso A. Poggio. Learning with a Wasserstein Loss. NIPS 2015.  Ishaan Gulrajani, Faruk Ahmed, Martín Arjovsky, Vincent Dumoulin, Aaron C. Courville.. Improved Training of Wasserstein GANs. NeurIPS 2017.  Tero Karras, Timo Aila, Samuli Laine, Jaakko Lehtinen. Progressive Growing of GANs for Improved Quality, Stability, and Variation. ICLR 2018.
  • 88. 88 / 88 KYOTO UNIVERSITY 参考文献一覧  Xiaofeng Liu, Yuzhuo Han, Song Bai, Yi Ge, Tianxing Wang, Xu Han, Site Li, Jane You, Jun Lu. Importance-Aware Semantic Segmentation in Self-Driving with Discrete Wasserstein Training. AAAI 2020.  Luca Oneto, Michele Donini, Giulia Luise, Carlo Ciliberto, Andreas Maurer, Massimiliano Pontil. Exploiting MMD and Sinkhorn Divergences for Fair and Transferable Representation Learning. NeurIPS 2020.  Gabriel Peyré. Optimal Transport in Imaging Sciences. 2012.  https://www.slideshare.net/gpeyre/optimal-transport-in-imaging- sciences  Gabriel Peyré, Marco Cuturi. Computational Optimal Transport. 2019.  佐藤竜馬. 最適輸送の解き方. https://www.slideshare.net/joisino/ss- 249394573