From 49a612d62df955c5d61ecdfe418c25984c0f9b45 Mon Sep 17 00:00:00 2001 From: Arina Danilina Date: Sun, 19 Jan 2025 17:29:18 +0100 Subject: [PATCH] unbalanced formula fix --- docs/figures/Kantorovich_couplings_sol.jpeg | Bin 0 -> 66835 bytes docs/ot_background.md | 27 +++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 docs/figures/Kantorovich_couplings_sol.jpeg diff --git a/docs/figures/Kantorovich_couplings_sol.jpeg b/docs/figures/Kantorovich_couplings_sol.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..e9c15497b6381ccc5cb671543615e5055bda3e10 GIT binary patch literal 66835 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 XA%gt9&U%ms-ouU5#XdU`d literal 0 HcmV?d00001 diff --git a/docs/ot_background.md b/docs/ot_background.md index 1ab2c63f..f8851fb8 100644 --- a/docs/ot_background.md +++ b/docs/ot_background.md @@ -14,6 +14,14 @@ The regularized {term}`linear problem` reads: where $\varepsilon$ is the {term}`entropic regularization`, and $\mathbf{H(P) \overset{\mathrm{def.}}{=} - \sum_\mathnormal{i,j} P_\mathnormal{i,j} \left( \log (P_\mathnormal{i,j}) - 1 \right)}$ is the discrete entropy of a coupling matrix. +:::{figure} figures/Kantorovich_couplings_sol.jpeg +:align: center +:alt: Kantorovich couplings. +:class: img-fluid + +Continuous and discrete couplings between measures $\alpha, \beta$. Figure from {cite}`peyre:19`. +::: + ## Gromov-Wasserstein (GW) When the data points (e.g. cells) from source and target distributions lie in different metric spaces, @@ -69,14 +77,25 @@ and $\alpha \in [0,1]$ is the tradeoff between the feature and the structure cos ## Unbalanced OT In cases that require allowing to ignore any outliers or skip points that don’t have a satisfactory mapping, -we can add a penalty for the amount of mass variation using some divergence $D_{\varphi}$ +we can add a penalty for the amount of mass variation using Kullback-Leibler divergence defined as + +```{math} +\begin{align*} + \mathrm{KL}\mathbf{(P|K) \overset{\mathrm{def.}}{=} \sum_\mathnormal{i,j} P_\mathnormal{i,j} \log \left( \frac{P_\mathnormal{i,j}}{K_\mathnormal{i,j}} \right) - P_\mathnormal{i,j} + K_\mathnormal{i,j}} +\end{align*} +``` + and get the minimization of an OT distance between approximate measures ```{math} \begin{align*} - \mathbf{L_C^{\tau}(a,b) = \min_{\tilde{a},\tilde{b}} L_C(a,b) + \tau_1 D_{\varphi}(a,\tilde{a}) + \tau_2 D_{\varphi}(b,\tilde{b})} \\ - \mathbf{= \min_{P\in \mathbb{R}_+^\mathnormal{n\times m}} \left\langle C,P \right\rangle + \tau_1 D_{\varphi}(P\mathbb{1}_\mathnormal{m}|a) + \tau_2 D_{\varphi}(P^\top\mathbb{1}_\mathnormal{m}|b)} + \mathbf{L_C^{\lambda}(a,b) = \min_{\tilde{a},\tilde{b}} L_C(a,b) + \lambda_1 KL(a,\tilde{a}) + \lambda_2 KL(b,\tilde{b})} \\ + \mathbf{= \min_{P\in \mathbb{R}_+^\mathnormal{n\times m}} \left\langle C,P \right\rangle + \lambda_1 KL(P\mathbb{1}_\mathnormal{m}|a) + \lambda_2 KL(P^\top\mathbb{1}_\mathnormal{m}|b)} \end{align*} ``` -where $(\tau_1, \tau_2)$ controls how much mass variations are penalized as opposed to transportation of the mass. +where $(\lambda_1, \lambda_2)$ controls how much mass variations are penalized as opposed to transportation of the mass. + +$\tau = \frac{\lambda}{\lambda + \varepsilon}$ + +Please see {doc}`Trajectory inference ` for a use case of {term}`unbalanced OT problem`.