ott.geometry#
This package implements several classes to define a geometry, arguably the most
influential ingredient of optimal transport problem. In its full generality, a
Geometry defines source points (input measure),
target points (target measure) and a ground cost function (resp. a positive
kernel function) that quantifies how expensive (resp. easy) it is to displace a
unit of mass from any of the input points to the target points.
The geometry package proposes a few simple geometries. The simplest of all would
be that for which input and target points coincide, and the geometry between
them simplifies to a symmetric cost or kernel matrix. In the very particular
case where these points happen to lie on grid (a Cartesian product in full
generality, e.g., 2- or-3-dimensional grids), the
Grid geometry will prove useful.
For more general settings where input/target points do not coincide, one can
alternatively instantiate a Geometry through a
rectangular cost matrix.
However, it is often preferable in applications to define ground costs
“symbolically”, by listing instead points in the input/target point clouds, to
specify directly a cost function between them. Such functions should follow
the CostFn class description. We provide a few
standard cost functions that are meaningful in an OT context, notably the
(unbalanced, regularized) Bures distances between Gaussians [Janati et al., 2020].
That cost can be used for instance to compute a distance between Gaussian
mixtures, as proposed in [Chen et al., 2019] and revisited in [Delon and Desolneux, 2020].
To be useful with Sinkhorn solvers,
Geometries typically need to provide
an epsilon regularization parameter. We propose either to set that value
once for all, or implement an annealing
Epsilon scheduler.
Geometries#
|
Base class to define ground costs/kernels used in optimal transport. |
|
Defines geometry for 2 point clouds (possibly 1 vs itself). |
|
Class describing the geometry of points taken in a Cartesian product. |
|
Graph distance approximation using heat kernel [Crane et al., 2013, Heitz et al., 2021]. |
|
Graph distance approximation using heat kernel [Huguet et al., 2023]. |
|
Geometry whose cost is defined by product of two low-rank matrices. |
|
Low-rank kernel geometry. |
Semidiscrete point cloud geometry. |
|
|
Scheduler class for the regularization parameter epsilon. |
Scaling applied to statistic (mean/std) of cost to compute default epsilon. |
Cost Functions#
Base class for all costs. |
|
Base class for translation invariant (TI) costs. |
|
Squared p-norm of the difference of two vectors. |
|
|
\(p\)-norm to the power \(p\) and divided by \(p\). |
Squared Euclidean distance. |
|
Negative Dot-product cost. |
|
|
Regularized translation-invariant cost. |
Euclidean distance. |
|
\(p\)-power of Euclidean norm. |
|
|
Cosine distance cost function. |
|
Arc-cosine cost function [Cho and Saul, 2009]. |
|
Bures distance between a pair of (mean, covariance matrix). |
|
Unbalanced Bures distance between two triplets of (mass, mean, cov). |
|
Soft dynamic time warping (DTW) cost [Cuturi and Blondel, 2017]. |
|
1D Wasserstein cost for two 1D distributions. |
Regularizers#
Proximal operator base class. |
|
|
Postcomposition operator \(\alpha f\left(x\right) + b\). |
|
Regularization operator \(f\left(x\right) + \frac{\rho}{2}\|x - a\|_2^2\). |
|
Orthogonal operator \(f\left( Ax \right) + b\). |
|
Quadratic operator \(\frac{1}{2} \left<x, Q x\right> + b\). |
L1-norm regularizer \(\ell_1\). |
|
|
Squared L2-norm regularizer \(\ell_2^2\). |
|
Soft thresholding operator with vanishing shrinkage regularizer [Schreck et al., 2016]. |
Squared k-overlap norm regularizer [Argyriou et al., 2012]. |
Utilities#
|
Segment and pad as needed the entries of a point cloud. |