ãã®æç« ã¯ïŒè±èªã®å匷ãå Œãã
https://vincentherrmann.github.io/blog/wasserstein/
ã®åèš³ã§ãïŒ
twitter:@UMU____
ç§ãèŠãã«ïŒæè¿ææ¡ãããWasserstein GAN(WGANs)ã¯ãšãŠãè峿·±ããã®ã§ããïŒãã®æçš¿ã§ã¯ïŒWGANsã«ã€ããŠã®èæ¯ãæ§é ãå©ç¹ã«ã€ããŠã¯èª¬æããªãïŒWGANã«ã€ããŠã®æ§é çã«ã€ããŠã¯ïŒå è«æããã®çŽ æŽãããèŠçŽ(è±èª)ãåç §ããããšããªã¹ã¹ã¡ããïŒãã®ä»£ããïŒãã®æçš¿ã§ã¯äž»ã«Kantorovich-Rubinstein å察æ§ãšãã®ç¹æ®ãªã±ãŒã¹ã®è©³çްã«ã€ããŠèšåããïŒãã®å察æ§ã¯ããæå³WGANsã®äžå¿çãªåœ¹å²ãæãããŠãããšèããããïŒãã¡ããïŒãã®å察æ§ã«ã€ããŠã®ç ç©¶ã¯æè¿ã«ãªã£ãŠæ°ãã瀺ããããã®ã§ã¯ãªããïŒWGANsãšããå¿çšå ãšããŠã¯é åçãªææ³ã§ããïŒ
å è«æã¯ïŒãã£ãŒã«ãºè³åè³è ã®ãã©ã³ã¹ã®å¥äººCedric Villaniã«ããâOptimal Transport - Old and NewâãåŒçšããŠããïŒããã¯Villaniã®ããŒã ããŒãžããããŠã³ããŒãã§ããïŒãã®æç®ã¯çŽåããŒãžã«ãåã¶æ°åŠåå£«ãæ°åŠç ç©¶è åãã«æžããããã®ã§ããïŒæ¥œãã¿ãªããèªãã§ã¿ãŠã»ããïŒVillaniã¯ããã§åãäžãã話é¡ã«ã€ããŠãïŒãã®ã¬ã¯ãã£ãŒåç»ã§ã¢ã¯ã»ã¹ã§ãã圢ã§åãäžããŠããïŒ28åé ïŒïŒåèã«é¢ããæ¬è³ªçãªèª¬æãããŠããŠïŒãã€ç§ã®ç¥ããªãèšå€§ããªå®çŸ©ãå®çã®åç §ãå«ãã§ããªãè³æãèŠã€ããããšã«ãšãŠãèŠåŽããïŒãã®æçš¿ã«ãã£ãŠïŒè¡éãåããäœæ¥ãå€å°ã¯æ¥œã«ãªãã ããïŒãã®æçš¿ã§ã¯åºæ¬çãªç·åœ¢ä»£æ°ïŒç¢ºçè«ïŒæé©åã®çè«ã®ã¿ãçšããŠããïŒå³å¯ãªèšŒæã¯ããã«ïŒãããŸãã«çè«ã远ã£ãŠããããšãšãããïŒçè«ã®æµãã¯ã§ãããéãå®å šãã€æçœã«ãªãããã«ããã®ã§ïŒãã®è©±é¡ã«ã€ããŠäœããåŸãããã®ã«ååãªã¯ãã§ããïŒ
WGANsã®ããã«å¿ èŠãšãªãKantorovich-Rubinsteinå察æ§ã«ã€ããŠã®è°è«ã¯ïŒå®ã¯ããã»ã©è€éããããã®ã§ã¯ãªãïŒããåäœã§çè§£ã§ãããã®ã§ããïŒããããªããïŒãã®çè«ã¯ãšãŠãæœè±¡çã§ããïŒãã®ããïŒç§ã¯ãã®æœè±¡çãªè°è«ãçµè«ãŸã§å éãã«ããŠïŒãŸãçè§£ãããã颿£çãªã±ãŒã¹ãšïŒç·åœ¢èšç»æ³ã«é¢ããåé¡ããå§ããããšæ±ºããïŒ
ããèå³ããããªãïŒä»¥éã«äœ¿çšãããŠããå³ãäœãããã«äœ¿çšããJupyter notebookãã¡ã€ã«ãèŠãããšãã§ããïŒ
Earth-Moverè·é¢
颿£ç¢ºçååžã®ã¿ãèããã°ïŒWassersteinè·é¢ã¯Earth-Moverè·é¢(EMD)ãšããã°ããŠããïŒå³ïŒã®ãããªååžã®éã確çå¯åºŠååžãèãïŒãããåã®å±±ãšããŠã¿ããšïŒEMDã¯ïŒçæ¹ã®ç¢ºçååžã®å±±ãããçæ¹ã®ç¢ºçååžã®å±±ã«ïŒåã茞éããŠå€åœ¢ãããããã®æå°ã®åŽåã§ããïŒããã§ïŒèŒžéããåŽåãšã¯ïŒèŒžéããåã®éãšèŒžéããè·é¢ãšã®ç©ã§å®çŸ©ãããïŒïŒã€ãã確çååžããããã $P_r$ãš $P_\theta$ãšãïŒããããããèµ·ãããäºè±¡ã®å€æ°ã$x$ïŒ$y$ïŒäºè±¡ã®æ°ã$l$åãšããïŒ
å³ïŒã確çå¯åºŠååž $P_r$ ãš $P_\theta$ïŒ10åã®å€ããšããã1次å ïŒ
EMDã®äžè¿°ã®å®çŸ©ãããããããã«ïŒEMDãèšç®ããããšããèªäœãæé©ååé¡ãšãªã£ãŠããïŒåã茞éããŠç®çã®åœ¢ã«å€åœ¢ããæ¹æ³ã¯ç¡éã®æ¹æ³ããããïŒä»ã»ããã®ã¯æé©ãªæ¹æ³ã§ããïŒé©åãªåã®èŒžéæ¹æ³ãæ±ããããã«ïŒ$\gamma(x,y)$ãå®çŸ©ããïŒããã¯ïŒ$P_r$ã $P_\theta$ã«å€åœ¢ããããã«xããyãžåã茞éããéã§ããïŒéãç¶ãïŒïŒ
蚳泚ïŒããã§ã¯èŒžéããªãåã¯$\gamma(x,y=x)$ã§è¡šãããšãšããïŒ
èŒžéæ¹æ³$\gamma(x,y)$ãæå¹ãªæ¹æ³ãšããããã«ïŒ $\sum_x \gamma(x,y) = P_r(y)$ ãš$\sum_y \gamma(x,y) = P_\theta(x)$ãåœç¶ãªããå¶çŽãããŠããå¿ èŠãããïŒ$\gamma$ã¯ïŒåæç¢ºçãšããŠèããããšãã§ãïŒãã®å Žåå¶çŽã¯$\gamma \in \Pi(P_r, P_\theta)$ãšãªãïŒ$\Pi(P_r, P_\theta)$ã¯$x$ïŒ$y$ã«ããåšèŸºååžããããã$P_r$ãš$P_\theta$ã«ãªããããªåæç¢ºçååžã®éåã§ããïŒEMDãåŸãããã«ïŒãã®åæç¢ºç$\gamma(x,y)$ãšïŒ$x$ãš$y$ãšã®è·é¢ã®ç©ã®ãã¹ãŠã®çµã¿åããã®ç·åãèšç®ããå¿ èŠãããïŒããã«åºã¥ãïŒEMDã®å®çŸ©ã¯ïŒæ¬¡ã®ããã«ãªãïŒ
$$ \mathrm{EMD}(P_r, P_\theta) = \inf_{\gamma \in \Pi} , \sum\limits_{x,y} \Vert x - y \Vert \gamma (x,y) = \inf_{\gamma \in \Pi} \ \mathbb{E}_{(x,y) \sim \gamma} \Vert x - y \Vert $$
$\inf$ãšããèšå·ã«äžæ £ãã§ããæ¹ãžèª¬æãããšïŒ$\inf$ã¯infimum(æå€§ã®äžçïŒäžé)ã®ããšã§ããïŒããã¯æå°å€ãšã»ãŒåãæå³ã§ããïŒinfimumã®éã¯supremum(äžé)ã§ããïŒåŸçšãã®è¡šèšãåºãŠããããšã«ãªãïŒããã§ïŒ$\mathbf{\Gamma} = \gamma(x,y)$ ïŒ $\mathbf{D} = \Vert x - y \Vert$ïŒ $\mathbf{\Gamma}, \mathbf{D} \in \mathbb{R}^{l \times l}$ãšããã°ïŒEMDã¯æ¬¡ã®ããã«ã衚ããïŒ
$$ \mathrm{EMD}(P_r, P_\theta) = \inf_{\gamma \in \Pi} , \langle \mathbf{D}, \mathbf{\Gamma} \rangle_\mathrm{F} $$
$\langle , \rangle_\mathrm{F}$ã¯ïŒãããããŠã¹ç©ïŒå¯Ÿå¿ããèŠçŽ ã®ç©ã®ç·åïŒã§ããïŒ
å³ïŒãæé©èŒžéæ¹æ³$\mathbf{\Gamma}$ãšèŒžéè·é¢$\mathbf{D}$
ç·åœ¢èšç»æ³
å³ïŒã¯ïŒå³1ã«ç€ºããã$P_r$ ãã $P_\theta$ãžã®ïŒæé©èŒžéæ¹æ³$\mathbf{\Gamma}$ãšèŒžéè·é¢$\mathbf{D}$ã瀺ãããã®ã§ããïŒãã®æé©èŒžéæ¹æ³ã¯ïŒäžè¬çãªç·åœ¢èšç»æ³(LP,Linear Programming)ã®ææ³ã䜿ã£ãŠè§£ãããšãã§ããïŒLPã§ã¯ïŒæ¬¡ã®ãããªåœ¢åŒã®åé¡ãè§£ãããšãã§ããïŒ
$z = \mathbf{c}^T \mathbf{x}, \ \mathbf{c} \in \mathbb{R}^n$ãæå°åãããããªãªãã¯ãã«$\mathbf{x} \in \mathbb{R}^n$ã¯äœãïŒãã ãïŒ
$\mathbf{x}$ ã¯æ¬¡ã®ãããªå¶çŽãæºãããŠãããšããïŒ $\mathbf{A} \mathbf{x} = \mathbf{b}, \ \mathbf{A} \in \mathbb{R}^{m \times n}, \mathbf{b} \in \mathbb{R}^m$ and $\mathbf{x} \geq \mathbf{0}$.
EMDãç·åœ¢èšç»æ³ã§èšç®ããããã«ïŒãŸã$\mathbf{\Gamma}$ ãš $\mathbf{D}$ããã¯ãã«åããïŒ
\begin{align}
\mathbf{x} &= \mathrm{vec}(\mathbf{\Gamma}) \\
\mathbf{c} &= \mathrm{vec}(\mathbf{D}) \\
\end{align}
ãã㯠$n = l^2$ãšãªãããšãæå³ããïŒãŸãå¶çŽã«ã€ããŠã¯ïŒãŸãïŒã€ã®æŽ»çååžãåäœãããŠæ¬¡ã®ããã«ããïŒããã«ãã $m=2l$ãšãªãïŒ
\mathbf{b} = \begin{bmatrix} P_r \\Â P_\theta\end{bmatrix}
$\mathbf{A}$ã«ã€ããŠã¯åè¿°ããå¶çŽãäœãããã«å€§ããçãª0ã1ã®è¡åãäœæãïŒ$\mathbf{x}$ããããã€ãã®å€ããšã£ãŠ$\mathbf{b}$ã«ãããšãã£ããããªèšç®ãè¡ã. 次åŒãèŠããšããããããïŒ
% <![CDATA[
\newcommand\FixWidth[1]{ \hspace{2.2em} \llap{#1}}
\begin{array}{rc}
& \left. \left[ \begin{array} {rrrr|rrrr}
\FixWidth{P_r(x_1)} & \FixWidth{P_r(x_2)} & \FixWidth{\dots} & \FixWidth{P_r(x_n)} & \FixWidth{P_\theta(y_1)} & \FixWidth{P_\theta(y_2)} & \FixWidth{\dots} & \FixWidth{P_\theta(y_n)}
\end{array} \right] \, \right\} \; \mathbf{b}^T \\ \\
\mathbf{x} \left\{ \begin{bmatrix}
\gamma(x_1, y_1) \\
\gamma(x_1, y_2) \\
\vdots \\ \hline
\gamma(x_2, y_1) \\
\gamma(x_2, y_2) \\
\vdots \\ \hline
\vdots \\ \hline
\gamma(x_n, y_1) \\
\gamma(x_n, y_2) \\
\vdots \\
\end{bmatrix} \right.
& \left. \left[ \begin{array}{rrrr|rrrr}
1 & 0 & \dots & 0 & 1 & 0 & \dots & 0 \cr
1 & 0 & \dots & 0 & 0 & 1 & \dots & 0 \cr
\vdots & \vdots & \dots & \vdots & \vdots & \vdots & \ddots & \vdots \cr \hline
0 & 1 & \dots & 0 & 1 & 0 & \dots & 0 \cr
0 & 1 & \dots & 0 & 0 & 1 & \dots & 0 \cr
\vdots & \vdots & \dots & \vdots & \vdots & \vdots & \ddots & \vdots \cr \hline
\FixWidth{\vdots} & \FixWidth{\vdots} & \FixWidth{\vdots} & \FixWidth{\vdots} & \FixWidth{\vdots} &
\FixWidth{\vdots} & \FixWidth{\vdots} & \FixWidth{\vdots} \cr \hline
0 & 0 & \dots & 1 & 1 & 0 & \dots & 0 \cr
0 & 0 & \dots & 1 & 0 & 1 & \dots & 0 \cr
\vdots & \vdots & \dots & \vdots & \vdots & \vdots & \ddots & \vdots \cr
\end{array} \right] \right\} \mathbf{A}^T
\end{array} %]]>
ãã®ããã«æ§ç¯ããç·åœ¢èšç»åé¡ã«å¯ŸããŠïŒç·åœ¢èšç»åé¡ãè§£ãã¹ã¿ã³ããŒããªã©ã€ãã©ãªã䜿ã£ãŠè§£ãïŒ
import numpy as np
from scipy.optimize import linprog
# We construct our A matrix by creating two 3-way tensors,
# and then reshaping and concatenating them
A_r = np.zeros((l, l, l))
A_t = np.zeros((l, l, l))
for i in range(l):
for j in range(l):
A_r[i, i, j] = 1
A_t[i, j, i] = 1
A = np.concatenate((A_r.reshape((l, l**2)), A_t.reshape((l, l**2))), axis=0)
b = np.concatenate((P_r, P_t), axis=0)
c = D.reshape((l**2))
opt_res = linprog(c, A_eq=A, b_eq=b)
emd = opt_res.fun
gamma = opt_res.x.reshape((l, l))
ãããšå³ïŒã®ããã«æé©èŒžéæ¹æ³ãèšç®ããããšãã§ããïŒ
å³ïŒïŒæé©èŒžéæ¹æ³
å察圢åŒ
æ®å¿µãªããšã«ïŒãã®ææ³ã䜿ã£ãæé©åã¯ããããã®ã±ãŒã¹ã§éçŸå®çã§ïŒGANsãéåžžçšãããããããªåéã«ãããŠãåæ§ã«éçŸå®çã§ããïŒåè¿°ã®äŸã§ã¯ïŒ1次å ã§10åã®äºè±¡ããšããã確ç倿°ãæ±ã£ãïŒç¢ºç倿°ããšãããäºè±¡ã®æ°ã¯ïŒç¢ºç倿°ã®æ¬¡å ã®æ°ãå¢ããã«ãããã£ãŠææ°é¢æ°çã«å¢å€§ããïŒããšãã°ç»åãåãæ±ããããã°ïŒæ¬¡å ã¯åªã«æ°å次å ãè¶ ããããšã«ãªãïŒããã§ã¯ïŒ$\gamma$ã¯æ¬¡å ã倧ããã®ã§è¿äŒŒããã§ããªãïŒ
ããããªããïŒå®éã«ã¯æã ã¯æé©èŒžéæ¹æ³$\gamma$ãç¥ãããããã§ã¯ãªãïŒç¥ãããã®ã¯ãã 1ã€ã®éïŒEMDã®ã¿ã§ããïŒåæ§ã«ïŒWGANsã«ãŠgeneratorãåŠç¿ããããã«å¿ èŠãšãªãã®ã¯ïŒgeneratorãåºåããååž$P_\theta$ãæ£ããååž$P_r$ã«ããããã®EMDã®ã¿ã§ããïŒåŠç¿ãè¡ãããã«ã¯ïŒ$P_r$ ãš $P_\theta$ã®ã¿ããèšç®ãããïŒEMDã®åŸé $\nabla_{P_\theta} \mathrm{EMD}(P_r, P_\theta)$ãèšç®å¯èœã§ããå¿ èŠãããïŒãããçŽæ¥çãªæ¹æ³ã§ã¯ïŒæ¬¡å ãå€ãããïŒ$\gamma$ãèšç®ããã®ã倧å€ã§ïŒé£ããïŒ
çµè«ããèšãã°ïŒEMDããã簡䟿ã«èšç®ããã»ãã®æ¹æ³ãããïŒããããç·åœ¢èšç»åé¡ã¯ïŒãã®åé¡ãå®åŒåããïŒã€ã®æ¹æ³ãããïŒäž»åœ¢åŒ(primal form)ãšïŒããã«å¯Ÿå¿ããå察圢åŒ(dual form)ã§ããïŒ
% <![CDATA[
\begin{array}{c|c}
\mathbf{primal \ form:} & \mathbf{dual \ form:}\\
\begin{array}{rrcl}
\mathrm{minimize} \ & z & = & \ \mathbf{c}^T \mathbf{x}, \\
\mathrm{so \ that} \ & \mathbf{A} \mathbf{x} & = & \ \mathbf{b} \\
\mathrm{and}\ & \mathbf{x} & \geq &\ \mathbf{0}
\end{array} &
\begin{array}{rrcl}
\mathrm{maximize} \ & \tilde{z} & = & \ \mathbf{b}^T \mathbf{y}, \\
\mathrm{so \ that} \ & \mathbf{A}^T \mathbf{y} & \leq & \ \mathbf{c} \\ \\
\end{array}
\end{array} %]]>
倿°éã®é¢ä¿åŒãå€ããããšã«ãã£ãŠïŒæå°ååé¡ãæå€§ååé¡ãžãšå€åœ¢ããããšãã§ããïŒå察圢åŒã§ã¯ïŒç®ç颿°$\tilde{z}$ã¯$\mathbf{b}$ã«çŽæ¥äŸåããŠããïŒ$\mathbf{b}$ã¯$P_r$ ãš $P_\theta$ãå«ãã ãã®ã§ããã®ã§ïŒããããŸãã«æã ãæ¬²ããŠãããã®ã§ããïŒãã®$\tilde{z}$ãïŒäž»åœ¢åŒã®æ¹ã®ïŒ$z$ã®äžçã«ãªãããšã¯ïŒå®¹æã«ç€ºãããïŒ
$$ z = \mathbf{c}^T \mathbf{x} \geq \mathbf{y}^T \mathbf{A} \mathbf{x} = \mathbf{y}^T \mathbf{b} = \tilde{z} $$
ããã¯åŒ±å察å®çãšåŒã°ããŠããïŒå®çã®ååããæšå¯ã§ããããã«ïŒåŒ·å察å®çãšããã®ãååšãïŒåŒ·å察å®çã¯ïŒå察åé¡ã«æé©å€$\tilde{z}$ãååšãããªãã°ïŒããã¯äž»åé¡ã®æé©å€$z$ãšçãã($z=\tilde{z}$)ãšããããšã䞻匵ããïŒåŒ·å察å®çã蚌æããã®ã¯å°ãè€éã§ïŒFarkasã®è£é¡ã瀺ãå¿ èŠãããïŒ
Farkasã®è£é¡
è¡å$\hat{\mathbf{A}} \in \mathbb{R}^{d \times n}$ã®åããã¯ãã«$\mathbf{a}_{1}$$\mathbf{a}_{2}, ..., \mathbf{a}_{n} \in \mathbb{R}^{d}$ãšã¿ãªãããšã«ããïŒãããã®ãã¯ãã«ã®ç·åœ¢éè² çµåã§è¡šãããé åã¯ïŒåç¹ãé ç¹ãšããåžéã«ãªãïŒãã¡ããå šç©ºé $\mathbb{R}^{d}$ãšãªãããïŒïŒãã®é åãéè² çµåã®ä¿æ°$\mathbf{x} \in \mathbb{R}^{n}_{\geq 0}$ã§ããããïŒ
ããã§ïŒãã¯ãã«$\hat{\mathbf{b}} \in \mathbb{R}^{d}$ãèãããšïŒïŒã€ã®å¯èœæ§ãããïŒ$\hat{\mathbf{b}}$ãåžéã®é åã«å«ãŸãããïŒå«ãŸããªããã§ããïŒä»®ã«$\hat{\mathbf{b}}$ãåžéã«å«ãŸããªããšãããšïŒ$\hat{\mathbf{b}}$ãšåžéã®éã«è¶ å¹³é¢$h$ãäœãããšãã§ãïŒè¶ å¹³é¢ã®$\hat{\mathbf{b}}$åŽã®æ³ç·$\hat{\mathbf{y}} \in \mathbb{R}^{d}$ãå®çŸ©ã§ããïŒãã®è¶ å¹³é¢$h$äžã®ãã¯ãã«$\mathbf{v} \in \mathbb{R}^{d}$ã«é¢ããŠïŒå ç©$\mathbf{v}^T \hat{\mathbf{y}}$ã¯ïŒ$\mathbf{v}$ã$\mathbf{b}$åŽã«ããã°æ£ïŒãã®éåŽã«ããã°è² ïŒè¶ å¹³é¢äžãªãé¶ãšãªãïŒãã£ãŠïŒå³ïŒã®ããã«ïŒè¶ å¹³é¢$h$ãååšããã°ïŒã©ã®$\mathbf{a}_i$ããšã£ãŠã$\mathbf{b}$ãšã¯è¶ å¹³é¢$h$ãå¢ã«ããŠéåŽã«ååšããïŒïŒååšããªããã°ãã®ããã«ã§ããªãïŒïŒ
å³ïŒ: Frakasã®è£é¡ã®å¹ŸäœåŠçãªã€ã¡ãŒãžïŒ$\mathbf{b}$ãéãåžéã®å€åŽã«ããã°ïŒ$h$ã$\mathbf{b}$ãšåžéã®éã«ã²ãããšãã§ããïŒ
ããªãã¡ïŒæ¬¡ã®2ã€ã®æ¡ä»¶ã®ãã¡ïŒåžžã«çæ¹ã®ã¿ãæ£ãããšãããïŒ
- $(1)$ $\hat{\mathbf{A}} \mathbf{x} = \hat{\mathbf{b}}$ ã〠$\mathbf{x} \geq \mathbf{0}$ãšãªããããª$\mathbf{x} \in \mathbb{R}^{n}$ãååšããïŒ
- $(2)$ $\hat{\mathbf{A}}^T \hat{\mathbf{y}} \leq \mathbf{0}$ ã〠$\hat{\mathbf{b}}^T \hat{\mathbf{y}} > 0$ãšãªããã㪠$\hat{\mathbf{y}} \in \mathbb{R}^{d}$ãååšããïŒ
ãã®å®çãFarkasã®è£é¡ãšåŒã¶ïŒFarkasã®è£é¡ã«ã¯åŸ®åŠã«éãããŒãžã§ã³ãéã蚌æããããïŒä»ããã§å¿ èŠãªãã®ã¯äžèšã«ç€ºãããã®ã§ååã§ããïŒ
匷å察æ§
匷å察å®çã®èšŒæã®ã€ã¥ãã¯ïŒå ã®ç·åœ¢èšç»åé¡ã«1ã€ã®æ°ããæ¬¡å ãå°å ¥ããŠïŒ$\hat{\mathbf{b}}$ãåžéã®ã»ãã®è¿ãã«ãããããªåé¡ãèããïŒãããŠïŒFrakasã®è£é¡ããïŒãã$\hat{\mathbf{y}}$ã«ãããŠïŒããã«åºã¥ãè¶ å¹³é¢ã¯$\hat{\mathbf{b}}$ã«ä»»æã«è¿ã¥ãããšãã§ããïŒããã«åŒ±å察å®çãå ããŠïŒåŒ·å察æ§å®çã蚌æããïŒ
äž»åé¡ã®æé©å€ïŒæå°å€ïŒã${z^* } = \mathbf{c}^T \mathbf{x}^{* }$ãšããïŒããã«æ¬¡ãå®çŸ©ããïŒ
\hat{\mathbf{A}} = \begin{bmatrix} \mathbf{A} \\ -\mathbf{c}^T \end{bmatrix}, \ \ \
\hat{\mathbf{b}}_\epsilon = \begin{bmatrix} \mathbf{b} \\ -z^* + \epsilon \end{bmatrix}, \ \ \
\hat{\mathbf{y}} = \begin{bmatrix} \mathbf{y} \\ \alpha \end{bmatrix}
ãã ã $\epsilon, \alpha \in \mathbb{R}$ã§ãã. $\epsilon = 0$ã®å Žåãèãããš, ããã¯Frakasã®è£é¡ã®$(1)$ã®å Žåã§ããïŒããã¯$\hat{\mathbf{A}} \mathbf{x}^* = \hat{\mathbf{b}}_0$ã§ããããã§ãã. $\epsilon > 0$ã®å Žåãèãããš, éè² ã®è§£ã¯ååšããïŒ ($z^{* }$ ããã§ã«æé©å€ã§ãããã) Farkasã®è£é¡ã®$(2)$ã«çžåœãã. ããã¯ããªãã¡ïŒæ¬¡åŒãæºãã$\mathbf{y}$ and $\alpha$ãååšãããšããããšã§ããïŒ
\begin{bmatrix} \mathbf{A} \\ -\mathbf{c}^T \end{bmatrix}^T
\begin{bmatrix} \mathbf{y} \\ \alpha \end{bmatrix} \leq \mathbf{0}, \ \ \ \
\begin{bmatrix} \mathbf{b} \\ -z^* + \epsilon \end{bmatrix}
\begin{bmatrix} \mathbf{y} \\ \alpha \end{bmatrix} > 0
ãŸãã¯æ¬¡ã®ããã«ã衚ããïŒ
$$\mathbf{A}^T \mathbf{y} \leq \alpha \mathbf{c}, \ \ \mathbf{b}^T \mathbf{y} > \alpha(z^* - \epsilon).$$
å
ã»ã©æ§ç¯ãããããªæ¹æ³ã§ïŒ$\hat{\mathbf{b}}_0 \hat{\mathbf{y}} = 0$ãšãªããããª$\hat{\mathbf{y}}$ãèŠã€ããããšãã§ããïŒãŸãïŒ$\epsilon$ãïŒãã倧ããæ°ã«ãããšïŒ$\hat{\mathbf{b}}_0 \hat{\mathbf{y}} > 0$ãšãªãïŒæã
ãèããŠããåé¡ã§ã¯ïŒ$z^* > 0$ã§ããã®ã§ïŒããã¯$\alpha > 0$ãæç«ããŠãããšãã®ã¿å¯èœã§ããïŒå
ã»ã©ç€ºããããã«$\hat{\mathbf{y}}$ã¯è¶
å¹³é¢ã®æ³ç·ã§ããããïŒæ£ãªãã°å€§ãããèªç±ã«å€ããããšãã§ããïŒãã£ãŠïŒ$\alpha = 1$ãšããŠãäžè¬æ§ã倱ããªãïŒããã¯æ¬¡åŒãæºãã$\mathbf{y}$ãååšããããšã瀺ããŠããïŒ
$$
\mathbf{A}^T \mathbf{y} \leq \mathbf{c}, \ \ \mathbf{b}^T \mathbf{y} > z^* - \epsilon.$$
ãã£ãŠïŒäž»åé¡ãšå察åé¡ã®é¢ä¿ã«ãããŠïŒãããã$\epsilon > 0$ã«ã€ããŠ$\tilde{z} := z^* - \epsilon$ã§ããããšããããïŒåŒ±å察å®çããïŒ$\tilde{z} \leq z^{* }$ã§ããããïŒããªãã¡ããã¯äž»åé¡ã®æé©å€ãšå察åé¡ã®æé©å€ãïŒååšããã°ïŒäžèŽããããšãæå³ããïŒ
å察圢åŒå
ããã§ãã£ãšèªä¿¡ããã£ãŠEMDãèšç®ããããã®å察圢åŒãžã®å€æãããããšãã§ããïŒå察圢åŒã®ãšããã§ç€ºããããã«ïŒ$\tilde{z}^* = \mathbf{b}^T \mathbf{y}^{* }$ïŒå察圢åŒã®æé©å€ïŒãæ±ããEMDã«ãªãïŒæ¬¡åŒãå®çŸ©ããïŒ
\mathbf{y}^* = \begin{bmatrix} \mathbf{f} \\ \mathbf{g} \end{bmatrix}
ãã ãïŒ $\mathbf{f}, \mathbf{g} \in \mathbb{R}^d$ïŒããã¯$\mathrm{EMD}(P_r, P_\theta) = \mathbf{f}^T P_r + \mathbf{g}^T P_\theta$ãæå³ããïŒ å察圢åŒã®å¶çŽ$\mathbf{A}^T \mathbf{y} \leq \mathbf{c}$ãèããïŒ
% <![CDATA[
\newcommand\FixWidth[1]{ \hspace{1.6em} \llap{#1}}
\begin{array}{rc}
& \left. \left[ \begin{array} {rrr|rrr|r|rrr}
\FixWidth{\mathbf{D}_{1,1}} & \FixWidth{\mathbf{D}_{1,2}} & \FixWidth{\dots} & \FixWidth{\mathbf{D}_{2,1}} & \FixWidth{\mathbf{D}_{2,2}} & \FixWidth{\dots} & \FixWidth{\dots} & \FixWidth{\mathbf{D}_{n,1}} & \FixWidth{\mathbf{D}_{ n,2}} & \FixWidth{\dots}
\end{array} \right] \, \right\} \; \mathbf{c}^T \\ \\
\mathbf{y} \left\{ \begin{bmatrix}
f(x_1) \\
f(x_2) \\
\vdots \\
f(x_n) \\ \hline
g(x_1) \\
g(x_2) \\
\vdots \\
g(x_n) \\
\end{bmatrix} \right.
& \left. \;\; \left[ \begin{array} {rrr|rrr|r|rrr}
1 & 1 & \dots & 0 & 0 & \dots & \dots & 0 & 0 & \dots \cr
0 & 0 & \dots & 1 & 1 & \dots & \dots & 0 & 0 & \dots \cr
\vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \dots & \vdots & \vdots & \vdots \cr
0 & 0 & \dots & 0 & 0 & \dots & \dots & 1 & 1 & \dots \cr \hline
1 & 0 & \dots & 1 & 0 & \dots & \dots & 1 & 0 & \dots \cr
0 & 1 & \dots & 0 & 1 & \dots & \dots & 0 & 1 & \dots \cr
\vdots & \vdots & \ddots & \vdots & \vdots & \ddots & \dots & \vdots & \vdots & \ddots \cr
\FixWidth{0} & \FixWidth{0} & \FixWidth{\dots} & \FixWidth{0} & \FixWidth{0} & \FixWidth{\dots} & \FixWidth{\dots} & \FixWidth{0} & \FixWidth{0} & \FixWidth{\dots}
\end{array} \right] \right\} \mathbf{A}\phantom{^T ;}
\end{array} %]]>
ãã¯ãã«$\mathbf{f}$ and $\mathbf{g}$ã®å€ã¯é¢æ° $f$ and $g$ãšããŠè¡šçŸããããšãã§ããïŒãã®è¡šèšãéãããšïŒäžèšã®å¶çŽã¯ïŒãã¹ãŠã®$i$ã«ã€ããŠïŒ$f(x_i) + g(x_j) \leq \mathbf{D}_{i,j}$ãšæžãã. $i=j$ã®å Žåã¯$\mathbf{D}_{i,i} = 0$ã§ãããã$g(x_i) \leq -f(x_i)$ãšãªãïŒããã§ïŒ $P_r$ and $P_\theta$ã¯éè² ã§ããããïŒç®ç颿°(EMD)ãæå€§åããã«ã¯ïŒ$\sum_i \mathbf{f}_i + \mathbf{g}_i $ãå¯èœãªéã倧ããå¿ èŠãããïŒãããŠãã®åã¯æå€§ã§ïŒãšãªãïŒãã®ãšã$g = - f$ã§ããïŒããã¯ãã»ãã®å¶çŽã«åœ±é¿ãäžããçã®ãŸãŸã§ããïŒãã£ãŠïŒ$g(x_{i}) < - f(x_{i})$ãéžã¶ããšã¯ïŒå³ïŒãèŠãã°ãããéãïŒã»ãã®å¶çŽã«åœ±é¿ãäžããã«ïŒ$g = - f$ãäžããããšã§ç®ç颿°ã®å€ãå¢å ãããããšãã§ããã®ã§ïŒæå³ããªã.
å³ïŒãå察åé¡ã®å¶çŽæ¡ä»¶ïŒéãšèµ€ã®ç·ã¯$\mathbf{f}$ and $\mathbf{g}$ã®äžéã衚ããŠããïŒ$\mathbf{f} \neq -\mathbf{g}$ãšãªããã¹ãŠã®è§£ã¯ïŒç®ç颿°ãããããäœå°ãæ®ããŠããïŒ
ãã£ãŠïŒ$g = - f$ãšãªãïŒå¶çŽæ¡ä»¶ã¯ïŒ$f(x_i) - f(x_j) \leq \mathbf{D}_{i,j}$ and $f(x_i) - f(x_j) \geq -\mathbf{D}_{i,j}$ãšæžãæããããïŒãã®å¶çŽã¯ïŒ $f(x_i)$ ãé£ç¶é¢æ°ãšããŠã¿ããšïŒäžäžæ¹åã®åŸé ãå¶éãããŠããããšã«ãªãïŒããã§ã¯ãŠãŒã¯ãªããè·é¢ãçšããŠããïŒåŸé 㯠$1$ and $-1$ã§å¶éãããŠããããšã«ãªãã ããïŒãã®å¶çŽã®ããšã(1-)ãªãã·ããé£ç¶ãšãã³ïŒ$\lVert f \lVert_{L \leq 1}$ãšããïŒãã£ãŠïŒå察圢åŒåããEMDã¯ïŒæ¬¡ã®ããã«è¡šããïŒ
$$ \mathrm{EMD}(P_r, P_\theta) = \sup_{\lVert f \lVert_{L \leq 1}} \ \mathbb{E}_{x \sim P_r} f(x) - \mathbb{E}_{x \sim P_\theta} f(x). $$
å®è£ ã¯æ¬¡ã®ããã«ãªãïŒç°¡åïŒïŒçµæã¯å³ïŒïŒ
# linprog() can only minimize the cost, because of that
# we optimize the negative of the objective. Also, we are
# not constrained to nonnegative values.
opt_res = linprog(-b, A, c, bounds=(None, None))
emd = -opt_res.fun
f = opt_res.x[0:l]
g = opt_res.x[l:]
å³ïŒã$\mathbf{f}$ãš$P_r$ã®èŠçŽ ç©ïŒãªãã³ã«$\mathbf{g} = -\mathbf{f}$ãš$P_\theta$ã®èŠçŽ ç©
ã¿ãŠãããããã«ïŒæé©æŠç¥ã¯ãã¡ãã$P_r(x) > P_\theta(x)$ã§ãããšãã«$f(x)$ãé«ãå€ã«ïŒéã« $P_\theta > P_r$ã§ãããšãã¯ïŒäœãå€ã«ããããšã§ããïŒ
Wassersteinè·é¢
æåŸã«ïŒç¢ºçååžãé£ç¶çã§ãããšããèããïŒãã¡ããïŒçŽæçã«ã¯ïŒåè¿°ã®é¢æ£çãªãã®ãç¡éã«ç¶æ ããããšèãïŒåæ§ãªãããããè¡ãã°ïŒåããããªããšãèšããïŒããããªããïŒåãã«èšã£ãããã«ïŒãã£ãšããããªæ¹æ³ã«ææŠããïŒé£ç¶ååž$p_r$ïŒ$p_\theta$ããã³åæååž$\pi(p_r, p_\theta)$ãèããïŒãããšWassersteinè·é¢ã¯æ¬¡ã®ããã«ãªãïŒ
$$W(p_r, p_\theta) = \inf_{\gamma \in \pi} \iint\limits_{x,y} \lVert x - y \lVert \gamma (x,y) , \mathrm{d} x , \mathrm{d} y = \inf_{\gamma \in \pi} \mathbb{E}_{x,y \sim \gamma} \left[ \lVert x - y \lVert \right].ã$$
ããã«é©åãªé ãä»ãããšïŒ$\gamma$ã«ã€ããŠã®ååžã®å¶çŽãé€ãããšãã§ããïŒãã®å Žåé©åãªé ãšã¯ïŒé¢æ°$f: x \mapsto k \in \mathbb{R}$ã«é¢ããæ°ããªæé©åé ã远å ããããšã§ãã:
% <![CDATA[
\begin{array}{rl}
W(p_r, p_\theta) & = \inf\limits_{\gamma \in \pi} \mathbb{E}_{x,y \sim \gamma} [ \lVert x - y \lVert ] \\
&\begin{array}{cc}
= \inf\limits_{\gamma } \mathbb{E}_{x,y \sim \gamma} [ \lVert x - y \lVert & + \; \underbrace{\sup\limits_{f} \mathbb{E}_{s \sim p_r}[f(s)] - \mathbb{E}_{t \sim p_\theta}[f(t)] - \left( f(x) - f(y) \right)} ] \\
&= \cases{\begin{align} 0, & \ \ \ \mathrm{if \ \gamma \in \mathrm{\pi}} \\ + \infty & \ \ \ \mathrm{else} \end{align}} \end{array}\\
& = \inf\limits_{\gamma} \ \sup\limits_{f} \ \mathbb{E}_{x,y \sim \gamma} [ \lVert x - y \lVert + \mathbb{E}_{s \sim p_r}[f(s)] - \mathbb{E}_{t \sim p_\theta}[f(t)] - \left( f(x) - f(y) \right) ]
\end{array} %]]>
ãã®ããã«ããããšã«ãã£ãŠïŒå€ããã«2段éèšç»åé¡ãåŸãïŒããã¯å€åŽã®æé©å($\inf_\gamma$)ãè¡ãããã®ãã¹ãŠã®å€ã«ã€ããŠïŒå åŽã®æé©å($\sup_f$)ãè¡ãå¿ èŠããããšããããšã§ããïŒæ¬¡ã«ïŒç¹å®ã®å Žåã«ãã㊠$\inf$ãš$\sup$ãå ¥ãæ¿ããããããããã¯ã¹åçãå©çšããïŒãã®åã«ïŒæã ãèããŠããåé¡ããã®ãããªç¹æ®ã±ãŒã¹ã§ãããã©ããã瀺ãïŒ
颿°$g: A, B \rightarrow \mathbb{R}$ãèããïŒ$g(\hat{a}, \hat{b}) = \inf_{a \in A} \sup_{\ b \in B} g(a,b)$ïŒæå€§ã®ãã¡ã§æãäœãïŒãš$g(\hat{a}â, \hat{b}â) = \sup_{\ b \in B} \inf_{a \in A} g(a,b)$ïŒæå°ã®ãã¡ã§æãé«ãïŒãšããïŒ$g(\hat{a}, \hat{b}) \geq g(\hat{a}â, \hat{b}â)$ã¯ïŒ$g(\hat{a}, \hat{b})$ãèªåçã«$\sup_{\ b \in B} \inf_{a \in A} g(a,b)$ã®äžéã®åè£ã«ãªãããšãããããïŒãã®éã¯æãç«ããªãïŒ
$g(\hat{a}, \hat{b}) > g(\hat{a}â, \hat{b}â)$ãæãç«ã€ãšãïŒå°ãªããšã次ã®äºã€ã¯æãç«ã€ïŒ
- $g(\hat{a}+t, \hat{b}) < g(\hat{a}, \hat{b})$ã t \neq 0$ã§ãªããšãã«æãç«ã€. ããã¯$a$ã«ã€ããŠ$\sup_{\ b \in B} g(a,b)$ãåžåºãªããšãã«ã®ã¿æãç«ã€ïŒãªããªã,$\hat{a}$ã«ã€ããŠ$g(\hat{a}, \hat{b})$ããã§ã«äžéãšãªãŠããããã§ããïŒ
- $g(\hat{a}â, \hat{b}â+t) > g(\hat{a}â, \hat{b}â)$ã$t \neq 0$åºãªããšãã«æãç«ã€. ããã¯$\inf_{\ a \in A} g(a,b)$ã$b$ã«ã€ããŠå¹åºãªããšãã«ã®ã«æãç«ã€ïŒãªããªãïŒ $\hat{b}â$ã«ã€ããŠ$g(\hat{a}â, \hat{b}â)$ããã§ã«äžéãšãªã£ãŠããããã§ããïŒ
ããã¯ïŒããªãã¡ïŒ$\sup_{\ b \in B} g(a,b)$ãåžã§ãã€$\inf_{\ a \in A} g(a,b)$ãå¹ã§ãããšãïŒããããã¯ã¹åçãé©çšãŠããŠ$g(\hat{a}, \hat{b}) = g(\hat{a}â, \hat{b}â)$ãããããšããããšã§ããïŒæã ã®å Žåã§ã¯ïŒãã®æ¡ä»¶ã¯ãã§ã«äžæ¬åŒ§ããåžæ¡ä»¶ãæºããããŠããããšããããïŒãã£ãŠ$\sup \inf$ã亀æã§ããŸãïŒäº€æãããšïŒæ¬¡ã®ããã«ãªãïŒ
\begin{array}{ll}
&\phantom{= , } \sup\limits_{f} \ \inf\limits_{\gamma} \ \mathbb{E}_{x,y \sim \gamma} [ \lVert x - y \lVert + \mathbb{E}_{s \sim p_r}[f(s)] - \mathbb{E}_{t \sim p_\theta}[f(t)] - (f(x) - f(y)) ] \\
&\begin{array}{cc}
= \sup\limits_{f} \ \mathbb{E}_{s \sim p_r}[f(s)] - \mathbb{E}_{t \sim p_\theta}[f(t)] + & \underbrace{ \inf\limits_{\gamma} \ \mathbb{E}_{x,y \sim \gamma} [ \lVert x - y \lVert - ( f(x) - f(y))} ] \\
&= \cases{\begin{align} 0, & \ \ \ \mathrm{if} \ \| f \| {}_{L} \leq 1\\ - \infty & \ \ \ \mathrm{else} \end{align}}
\end{array}
\end{array}
å ããŠå¿ èŠãªäžçã®å¹æ§ã確èªã§ããïŒããã§ïŒãªãã·ããé£ç¶ãšãªã颿°$f$ã«ã€ããŠïŒ$\inf_\gamma$ã¯åãæé©å€ãšãªãïŒããã«ãªãã·ããé£ç¶ã§ããããšãïŒè𳿳šïŒãã以å€ã¯ãã€ãã¹ç¡é倧ãšãªãããïŒ$\sup_f$ã®æé©å€ãšããŠå¿ èŠã§ããããïŒãã®äºæ®µéèšç»åé¡ãå¶çŽä»ãèšç»åé¡ã«å€åœ¢ããããšãã§ããïŒãã£ãŠïŒWasserstein distanceã®å察圢åŒã¯ïŒæ¬¡ã®ããã«ãªãïŒ
\begin{align}
W(p_r, p_\theta) & = \sup_{f} \ \mathbb{E}_{s \sim p_r}[f(s)] - \mathbb{E}_{t \sim p_\theta}[f(t)] + \inf_{\gamma} \ \mathbb{E}_{x,y \sim \gamma} [ \lVert x - y \lVert - ( f(x) - f(y)) ] \\
& = \sup_{\lVert f \lVert_{L \leq 1}} \ \mathbb{E}_{s \sim p_r}[f(s)] - \mathbb{E}_{t \sim p_\theta}[f(t)]
\end{align}
ãããïŒWassersteinè·é¢ã«é¢ããKantorovich-Rubinsteinå察æ§ã§ããïŒããã¯å®ã¯ïŒæã ã䜿ã£ãŠãããŠãŒã¯ãªããè·é¢ã§ã¯ãªãã»ãã®æž¬åºŠã§ãæãç«ã€ããšãç¥ãããŠããïŒãããïŒé¢æ° $f$ã¯ãã¥ãŒã©ã«ãããã¯ãŒã¯ãçšããŠè¿äŒŒããã®ã«é©ããŠããïŒãã®æ¹æ³ã§ã¯ïŒãªãã·ããé£ç¶æ§ãéã¿ãå¶çŽã¥ããããšã§éæã§ãããšããå©ç¹ãããïŒ
(èš³çµ)
äžèšææ³
ããåŸé ãåºãè·é¢ã䜿ããïŒ










