ot.mapping
最优运输地图及其变体
警告
请注意,默认情况下该模块不会在 ot 中导入。为了使用它,您需要显式导入 ot.mapping
函数
- ot.mapping.joint_OT_mapping_kernel(xs, xt, mu=1, eta=0.001, kerneltype='gaussian', sigma=1, bias=False, verbose=False, verbose2=False, numItermax=100, numInnerItermax=10, stopInnerThr=1e-06, stopThr=1e-05, log=False, **kwargs)[源]
提出的联合OT和非线性映射估计与核
[8].该函数解决以下优化问题:
\[ \begin{align}\begin{aligned}\min_{\gamma, L\in\mathcal{H}}\quad \|L(\mathbf{X_s}) - n_s\gamma \mathbf{X_t}\|^2_F + \mu \langle \gamma, \mathbf{M} \rangle_F + \eta \|L\|^2_\mathcal{H}\\s.t. \ \gamma \mathbf{1} = \mathbf{a}\\ \gamma^T \mathbf{1} = \mathbf{b}\\ \gamma \geq 0\end{aligned}\end{align} \]其中 :
\(\mathbf{M}\) 是样本之间的 (ns, nt) 平方欧几里得成本矩阵 在\(\mathbf{X_s}\) 和 \(\mathbf{X_t}\) 之间(由 \(n_s\) 缩放)
\(L\) 是一个 \(n_s \times d\) 的线性算子,作用于一个核矩阵,近似重心映射
\(\mathbf{a}\) 和 \(\mathbf{b}\) 是均匀的源权重和目标权重
该问题在于共同求解一个最优运输矩阵 \(\gamma\) 和适合重心映射的非线性映射 \(n_s\gamma \mathbf{X_t}\)。
还可以使用偏差可选参数估计具有恒定偏差的映射(请参阅[8]的补充材料)。
用于解决问题的算法是块坐标下降法,它在对\(\mathbf{G}\)(使用条件梯度)进行更新和使用经典核最小二乘求解器对\(\mathbf{L}\)进行更新之间交替进行。
- Parameters:
xs (类似数组 (ns,d)) – 源领域中的样本
xt (类数组 (nt,d)) – 目标领域中的样本
mu (float,可选) – 线性OT损失的权重 (>0)
eta (float, 可选) – 线性映射 L 的正则化项 (>0)
kerneltype (str,可选) – 调用函数
ot.utils.kernel()使用的核(默认为高斯)sigma (float, 可选) – 高斯核带宽。
bias (bool,可选) – 估计带有恒定偏差的线性映射
verbose (bool, 可选) – 在迭代过程中打印信息
verbose2 (bool, 可选) – 在迭代过程中打印信息
numItermax (int, 可选) – 最大BCD迭代次数
numInnerItermax (int, 可选) – 最大迭代次数(内层CG求解器)
stopInnerThr (float, 可选) – 错误的停止阈值(内部CG求解器) (>0)
stopThr (float, 可选) – 相关损失降低的停止阈值 (>0)
log (bool, 可选) – 如果为真,则记录日志
- Returns:
gamma ((ns, nt) array-like) – 给定参数的最佳运输矩阵
L ((ns, d) array-like) – 非线性映射矩阵 ((\(n_s+1\), d) 如果有偏差)
log (dict) – 仅在参数中log==True时返回日志字典
参考文献
另请参见
ot.lp.emd未正则化的OT
ot.optim.cg通用正则化OT
- ot.mapping.joint_OT_mapping_linear(xs, xt, mu=1, eta=0.001, bias=False, verbose=False, verbose2=False, numItermax=100, numInnerItermax=10, stopInnerThr=1e-06, stopThr=1e-05, log=False, **kwargs)[源]
联合OT和线性映射估计如在 [8]中提出的。
该函数解决以下优化问题:
\[ \begin{align}\begin{aligned}\min_{\gamma,L}\quad \|L(\mathbf{X_s}) - n_s\gamma \mathbf{X_t} \|^2_F + \mu \langle \gamma, \mathbf{M} \rangle_F + \eta \|L - \mathbf{I}\|^2_F\\s.t. \ \gamma \mathbf{1} = \mathbf{a}\\ \gamma^T \mathbf{1} = \mathbf{b}\\ \gamma \geq 0\end{aligned}\end{align} \]其中 :
\(\mathbf{M}\) 是样本之间的 (ns, nt) 平方欧几里得成本矩阵 在\(\mathbf{X_s}\) 和 \(\mathbf{X_t}\) 之间(由 \(n_s\) 缩放)
\(L\) 是一个 \(d\times d\) 线性算子,用于近似重心映射
\(\mathbf{I}\) 是单位矩阵(中性线性映射)
\(\mathbf{a}\) 和 \(\mathbf{b}\) 是均匀的源权重和目标权重
这个问题在于共同求解一个最优传输矩阵 \(\gamma\) 和一个适合重心映射的线性映射 \(n_s\gamma \mathbf{X_t}\)。
还可以使用偏差可选参数估计具有恒定偏差的映射(请参阅[8]的补充材料)。
用于解决问题的算法是块坐标下降法,它在更新\(\mathbf{G}\)(使用条件梯度)和使用经典最小二乘求解器更新\(\mathbf{L}\)之间交替进行。
- Parameters:
xs (类似数组 (ns,d)) – 源领域中的样本
xt (类数组 (nt,d)) – 目标领域中的样本
mu (float,可选) – 线性OT损失的权重 (>0)
eta (float, 可选) – 线性映射 L 的正则化项 (>0)
bias (bool,可选) – 估计带有恒定偏差的线性映射
numItermax (int, 可选) – 最大BCD迭代次数
stopThr (float, 可选) – 相关损失降低的停止阈值 (>0)
numInnerItermax (int, 可选) – 最大迭代次数(内层CG求解器)
stopInnerThr (float, 可选) – 错误的停止阈值(内部CG求解器) (>0)
verbose (bool, 可选) – 在迭代过程中打印信息
log (bool, 可选) – 如果为真,则记录日志
- Returns:
gamma ((ns, nt) array-like) – 给定参数的最优运输矩阵
L ((d, d) array-like) – 线性映射矩阵 ((\(d+1\), d) 如果有偏置)
log (dict) – 仅在参数中log==True时返回日志字典
参考文献
[8] M. Perrot, N. Courty, R. Flamary, A. Habrard, “离散最优传输的映射估计”, 神经信息处理系统 (NIPS), 2016.
另请参见
ot.lp.emd未正则化的OT
ot.optim.cg通用正则化OT
- ot.mapping.nearest_brenier_potential_fit(X, V, X_classes=None, a=None, b=None, strongly_convex_constant=0.6, gradient_lipschitz_constant=1.4, its=100, log=False, init_method='barycentric')[源]
计算在强凸势能 \(\varphi\) 下在 X 处的最优值和梯度,且具有 Lipschitz 梯度,基于由 X_classes 定义的分区,其中 \(\varphi\) 是最优的,使得 \(\nabla \varphi \#\mu \approx \nu\),给定样本 \(X = x_1, \cdots, x_n \sim \mu\) 和 \(V = v_1, \cdots, v_n \sim \nu\)。找到这样一个在分区 \((E_k)_{k \in [K]}\)(由类 X_classes 给出)上具有所需规则性的势能,相当于找到 phi 的最优值和其梯度 \(\nabla \varphi(x_i)\)(变量 `G`)。在实践中,这些最优值是通过解决以下问题找到的
\begin{gather*} \text{min} \sum_{i,j}\pi_{i,j}\|g_i - v_j\|_2^2 \\ g_1,\cdots, g_n \in \mathbb{R}^d,\; \varphi_1, \cdots, \varphi_n \in \mathbb{R},\; \pi \in \Pi(a, b) \\ \text{s.t.}\ \forall k \in [K],\; \forall i,j \in I_k: \\ \varphi_i-\varphi_j-\langle g_j, x_i-x_j\rangle \geq c_1\|g_i - g_j\|_2^2 + c_2\|x_i-x_j\|_2^2 - c_3\langle g_j-g_i, x_j -x_i \rangle. \end{gather*}常数 \(c_1, c_2, c_3\) 只依赖于 strongly_convex_constant 和 gradient_lipschitz_constant。约束 \(\pi \in \Pi(a, b)\) 表示矩阵 \(\pi\) 属于边际 a 和 b 的 OT 多面体。\(I_k\) 是 \([n]\) 的一个子集,包含满足 \(x_i\) 在分区(或类别)\(E_k\) 中的 i,即 X_classes[i] == k。
这个问题是通过交替变量 \(\pi\) 和变量 \(\varphi_i, g_i\) 来解决的。对于 \(\pi\),问题是标准的离散OT问题,而对于 \(\varphi_i, g_i\),问题是一个通过使用
cvxpy(ECOS求解器)解决的凸QCQP。接受任何兼容的后端,但将在Numpy数组上执行QCQP优化,并在最后进行转换。
警告
此函数需要CVXPY库
警告
接受任何后端,但会首先转换为Numpy,然后再转换回后端。
- Parameters:
X (数组类型 (n, d)) – 用于计算最优值 phi 和 G 的参考点
V (array-like (n, d)) – 在参考点 X 处的梯度值
X_classes (类数组 (n,), 可选) – 参考点的类别,默认值为单一类别
a (类似数组 (n,), 可选) – 参考点 X 的权重,默认为均匀分布
b (数组类型 (n,), 可选) – 目标点 V 的权重,默认为均匀
strongly_convex_constant (float, 可选) – 输入潜能 phi 的强凸性常数,默认为 0.6
gradient_lipschitz_constant (float, optional) – 输入梯度 G 的 Lipschitz 性质的常数,默认为 1.4
它的 (整型, 可选) – 迭代次数,默认为 100
log (bool, optional) – 如果为真则记录日志
init_method (str, 可选) – ‘target’ 初始化 G=V,‘barycentric’ 通过重心投影在 X 的图像上初始化
- Returns:
phi (数组类型 (n,)) – 在点 X 处的潜在最优值
G (数组类型 (n, d)) – 在点 X 处的梯度的最优值
log (字典,可选) – 如果输入的 log 为真,则包含每次迭代中变量的值及求解器信息的字典
参考文献
[58] François-Pierre Paty, Alexandre d’Aspremont, and Marco Cuturi. 正则性作为正则化: 在最优运输中的光滑和强凸Brenier势。发表于国际人工智能与统计会议,页码 1222–1232。PMLR,2020。
另请参见
ot.mapping.nearest_brenier_potential_predict_bounds在新源数据上预测SSNB图像
ot.da.NearestBrenierPotentialSSNB的BaseTransport包装器
使用 ot.mapping.nearest_brenier_potential_fit 的示例
- ot.mapping.nearest_brenier_potential_predict_bounds(X, phi, G, Y, X_classes=None, Y_classes=None, strongly_convex_constant=0.6, gradient_lipschitz_constant=1.4, log=False)[源]
计算输入点Y处的下界和上界潜能值,使用潜在的最优值phi在X处及其梯度G在X处。‘下界’潜能对应于[58]的方法,方程2,而边界特性和‘上界’潜能来自于[59],定理3.14(考虑到该定理的表述中有一个最小值而不是最大值,这是一个笔误)。这两种潜能对于SSNB问题都是最优的。
如果 \(I_k\) 是 \([n]\) 的一个子集,其中 i 使得 \(x_i\) 在分区(或类)\(E_k\) 中,对于每个 \(y \in E_k\),该函数分别解决凸 QCQP 问题,l: '下限' 和 u: '上限':
\begin{gather*} (\varphi_{l}(x), \nabla \varphi_l(x)) = \text{argmin}\ t, \\ t\in \mathbb{R},\; g\in \mathbb{R}^d, \\ \text{s.t.} \forall j \in I_k,\; t-\varphi_j - \langle g_j, y-x_j \rangle \geq c_1\|g - g_j\|_2^2 + c_2\|y-x_j\|_2^2 - c_3\langle g_j-g, x_j -y \rangle. \end{gather*}\begin{gather*} (\varphi_{u}(x), \nabla \varphi_u(x)) = \text{argmax}\ t, \\ t\in \mathbb{R},\; g\in \mathbb{R}^d, \\ \text{s.t.} \forall i \in I_k,\; \varphi_i^* -t - \langle g, x_i-y \rangle \geq c_1\|g_i - g\|_2^2 + c_2\|x_i-y\|_2^2 - c_3\langle g-g_i, y -x_i \rangle. \end{gather*}常量 \(c_1, c_2, c_3\) 仅依赖于 strongly_convex_constant 和 gradient_lipschitz_constant。
警告
此函数需要CVXPY库
警告
接受任何后端,但会首先转换为Numpy,然后再转换回后端。
- Parameters:
X (数组类型 (n, d)) – 用于计算最优值 phi 和 G 的参考点
X_classes (类数组 (n,), 可选) – 参考点的类别
phi (类数组 (n,)) – 在点 X 处的潜在最佳值
G (类似数组 (n, d)) – 在点 X 处梯度的最优值
Y (数组类型 (m, d)) – 输入点
X_classes – 参考点的类别,默认为单一类别
Y_classes (array_like (m,), 可选) – 输入点的类别,默认为单个类别
strongly_convex_constant (float, 可选) – 输入潜能 phi 的强凸性常数,默认为 0.6
gradient_lipschitz_constant (float, optional) – 输入梯度 G 的 Lipschitz 性质的常数,默认为 1.4
log (bool, optional) – 如果为真则记录日志
- Returns:
phi_lu (array-like (2, m)) – Y处下限和上限潜能的值
G_lu (array-like (2, m, d)) – Y处下限和上限潜能的梯度
log (dict, optional) – 如果输入的log为真,包含求解器信息的字典
参考文献
[58] François-Pierre Paty, Alexandre d’Aspremont, and Marco Cuturi. 正则性作为正则化: 在最优运输中的光滑和强凸Brenier势。发表于国际人工智能与统计会议,页码 1222–1232。PMLR,2020。
[59] Adrien B Taylor. 凸插值和一阶方法在凸优化中的性能估计。博士论文,洛万大学,洛万-拉-诺夫,比利时,2017年。
另请参见
ot.mapping.nearest_brenier_potential_fit在源数据和目标数据上拟合SSNB
ot.da.NearestBrenierPotentialSSNB的BaseTransport包装器
使用 ot.mapping.nearest_brenier_potential_predict_bounds 的示例
- ot.mapping.joint_OT_mapping_kernel(xs, xt, mu=1, eta=0.001, kerneltype='gaussian', sigma=1, bias=False, verbose=False, verbose2=False, numItermax=100, numInnerItermax=10, stopInnerThr=1e-06, stopThr=1e-05, log=False, **kwargs)[源]
提出的联合OT和非线性映射估计与核
[8].该函数解决以下优化问题:
\[ \begin{align}\begin{aligned}\min_{\gamma, L\in\mathcal{H}}\quad \|L(\mathbf{X_s}) - n_s\gamma \mathbf{X_t}\|^2_F + \mu \langle \gamma, \mathbf{M} \rangle_F + \eta \|L\|^2_\mathcal{H}\\s.t. \ \gamma \mathbf{1} = \mathbf{a}\\ \gamma^T \mathbf{1} = \mathbf{b}\\ \gamma \geq 0\end{aligned}\end{align} \]其中 :
\(\mathbf{M}\) 是样本之间的 (ns, nt) 平方欧几里得成本矩阵 在\(\mathbf{X_s}\) 和 \(\mathbf{X_t}\) 之间(由 \(n_s\) 缩放)
\(L\) 是一个 \(n_s \times d\) 的线性算子,作用于一个核矩阵,近似重心映射
\(\mathbf{a}\) 和 \(\mathbf{b}\) 是均匀的源权重和目标权重
该问题在于共同求解一个最优运输矩阵 \(\gamma\) 和适合重心映射的非线性映射 \(n_s\gamma \mathbf{X_t}\)。
还可以使用偏差可选参数估计具有恒定偏差的映射(请参阅[8]的补充材料)。
用于解决问题的算法是块坐标下降法,它在对\(\mathbf{G}\)(使用条件梯度)进行更新和使用经典核最小二乘求解器对\(\mathbf{L}\)进行更新之间交替进行。
- Parameters:
xs (类似数组 (ns,d)) – 源领域中的样本
xt (类数组 (nt,d)) – 目标领域中的样本
mu (float,可选) – 线性OT损失的权重 (>0)
eta (float, 可选) – 线性映射 L 的正则化项 (>0)
kerneltype (str,可选) – 调用函数
ot.utils.kernel()使用的核(默认为高斯)sigma (float, 可选) – 高斯核带宽。
bias (bool,可选) – 估计带有恒定偏差的线性映射
verbose (bool, 可选) – 在迭代过程中打印信息
verbose2 (bool, 可选) – 在迭代过程中打印信息
numItermax (int, 可选) – 最大BCD迭代次数
numInnerItermax (int, 可选) – 最大迭代次数(内层CG求解器)
stopInnerThr (float, 可选) – 错误的停止阈值(内部CG求解器) (>0)
stopThr (float, 可选) – 相关损失降低的停止阈值 (>0)
log (bool, 可选) – 如果为真,则记录日志
- Returns:
gamma ((ns, nt) array-like) – 给定参数的最佳运输矩阵
L ((ns, d) array-like) – 非线性映射矩阵 ((\(n_s+1\), d) 如果有偏差)
log (dict) – 仅在参数中log==True时返回日志字典
参考文献
[8] M. Perrot, N. Courty, R. Flamary, A. Habrard, “离散最优传输的映射估计”, 神经信息处理系统 (NIPS), 2016.
另请参见
ot.lp.emd未正则化的OT
ot.optim.cg通用正则化OT
- ot.mapping.joint_OT_mapping_linear(xs, xt, mu=1, eta=0.001, bias=False, verbose=False, verbose2=False, numItermax=100, numInnerItermax=10, stopInnerThr=1e-06, stopThr=1e-05, log=False, **kwargs)[源]
联合OT和线性映射估计如在 [8]中提出的。
该函数解决以下优化问题:
\[ \begin{align}\begin{aligned}\min_{\gamma,L}\quad \|L(\mathbf{X_s}) - n_s\gamma \mathbf{X_t} \|^2_F + \mu \langle \gamma, \mathbf{M} \rangle_F + \eta \|L - \mathbf{I}\|^2_F\\s.t. \ \gamma \mathbf{1} = \mathbf{a}\\ \gamma^T \mathbf{1} = \mathbf{b}\\ \gamma \geq 0\end{aligned}\end{align} \]其中 :
\(\mathbf{M}\) 是样本之间的 (ns, nt) 平方欧几里得成本矩阵 在\(\mathbf{X_s}\) 和 \(\mathbf{X_t}\) 之间(由 \(n_s\) 缩放)
\(L\) 是一个 \(d\times d\) 线性算子,用于近似重心映射
\(\mathbf{I}\) 是单位矩阵(中性线性映射)
\(\mathbf{a}\) 和 \(\mathbf{b}\) 是均匀的源权重和目标权重
这个问题在于共同求解一个最优传输矩阵 \(\gamma\) 和一个适合重心映射的线性映射 \(n_s\gamma \mathbf{X_t}\)。
还可以使用偏差可选参数估计具有恒定偏差的映射(请参阅[8]的补充材料)。
用于解决问题的算法是块坐标下降法,它在更新\(\mathbf{G}\)(使用条件梯度)和使用经典最小二乘求解器更新\(\mathbf{L}\)之间交替进行。
- Parameters:
xs (类似数组 (ns,d)) – 源领域中的样本
xt (类数组 (nt,d)) – 目标领域中的样本
mu (float,可选) – 线性OT损失的权重 (>0)
eta (float, 可选) – 线性映射 L 的正则化项 (>0)
bias (bool,可选) – 估计带有恒定偏差的线性映射
numItermax (int, 可选) – 最大BCD迭代次数
stopThr (float, 可选) – 相关损失降低的停止阈值 (>0)
numInnerItermax (int, 可选) – 最大迭代次数(内层CG求解器)
stopInnerThr (float, 可选) – 错误的停止阈值(内部CG求解器) (>0)
verbose (bool, 可选) – 在迭代过程中打印信息
log (bool, 可选) – 如果为真,则记录日志
- Returns:
gamma ((ns, nt) array-like) – 给定参数的最优运输矩阵
L ((d, d) array-like) – 线性映射矩阵 ((\(d+1\), d) 如果有偏置)
log (dict) – 仅在参数中log==True时返回日志字典
参考文献
[8] M. Perrot, N. Courty, R. Flamary, A. Habrard, “离散最优传输的映射估计”, 神经信息处理系统 (NIPS), 2016.
另请参见
ot.lp.emd未正则化的OT
ot.optim.cg通用正则化OT
- ot.mapping.nearest_brenier_potential_fit(X, V, X_classes=None, a=None, b=None, strongly_convex_constant=0.6, gradient_lipschitz_constant=1.4, its=100, log=False, init_method='barycentric')[源]
计算在强凸势能 \(\varphi\) 下在 X 处的最优值和梯度,且具有 Lipschitz 梯度,基于由 X_classes 定义的分区,其中 \(\varphi\) 是最优的,使得 \(\nabla \varphi \#\mu \approx \nu\),给定样本 \(X = x_1, \cdots, x_n \sim \mu\) 和 \(V = v_1, \cdots, v_n \sim \nu\)。找到这样一个在分区 \((E_k)_{k \in [K]}\)(由类 X_classes 给出)上具有所需规则性的势能,相当于找到 phi 的最优值和其梯度 \(\nabla \varphi(x_i)\)(变量 `G`)。在实践中,这些最优值是通过解决以下问题找到的
\begin{gather*} \text{min} \sum_{i,j}\pi_{i,j}\|g_i - v_j\|_2^2 \\ g_1,\cdots, g_n \in \mathbb{R}^d,\; \varphi_1, \cdots, \varphi_n \in \mathbb{R},\; \pi \in \Pi(a, b) \\ \text{s.t.}\ \forall k \in [K],\; \forall i,j \in I_k: \\ \varphi_i-\varphi_j-\langle g_j, x_i-x_j\rangle \geq c_1\|g_i - g_j\|_2^2 + c_2\|x_i-x_j\|_2^2 - c_3\langle g_j-g_i, x_j -x_i \rangle. \end{gather*}常数 \(c_1, c_2, c_3\) 只依赖于 strongly_convex_constant 和 gradient_lipschitz_constant。约束 \(\pi \in \Pi(a, b)\) 表示矩阵 \(\pi\) 属于边际 a 和 b 的 OT 多面体。\(I_k\) 是 \([n]\) 的一个子集,包含满足 \(x_i\) 在分区(或类别)\(E_k\) 中的 i,即 X_classes[i] == k。
这个问题是通过交替变量 \(\pi\) 和变量 \(\varphi_i, g_i\) 来解决的。对于 \(\pi\),问题是标准的离散OT问题,而对于 \(\varphi_i, g_i\),问题是一个通过使用
cvxpy(ECOS求解器)解决的凸QCQP。接受任何兼容的后端,但将在Numpy数组上执行QCQP优化,并在最后进行转换。
警告
此函数需要CVXPY库
警告
接受任何后端,但会首先转换为Numpy,然后再转换回后端。
- Parameters:
X (数组类型 (n, d)) – 用于计算最优值 phi 和 G 的参考点
V (array-like (n, d)) – 在参考点 X 处的梯度值
X_classes (类数组 (n,), 可选) – 参考点的类别,默认值为单一类别
a (类似数组 (n,), 可选) – 参考点 X 的权重,默认为均匀分布
b (数组类型 (n,), 可选) – 目标点 V 的权重,默认为均匀
strongly_convex_constant (float, 可选) – 输入潜能 phi 的强凸性常数,默认为 0.6
gradient_lipschitz_constant (float, optional) – 输入梯度 G 的 Lipschitz 性质的常数,默认为 1.4
它的 (整型, 可选) – 迭代次数,默认为 100
log (bool, optional) – 如果为真则记录日志
init_method (str, 可选) – ‘target’ 初始化 G=V,‘barycentric’ 通过重心投影在 X 的图像上初始化
- Returns:
phi (数组类型 (n,)) – 在点 X 处的潜在最优值
G (数组类型 (n, d)) – 在点 X 处的梯度的最优值
log (字典,可选) – 如果输入的 log 为真,则包含每次迭代中变量的值及求解器信息的字典
参考文献
[58] François-Pierre Paty, Alexandre d’Aspremont, and Marco Cuturi. 正则性作为正则化: 在最优运输中的光滑和强凸Brenier势。发表于国际人工智能与统计会议,页码 1222–1232。PMLR,2020。
另请参见
ot.mapping.nearest_brenier_potential_predict_bounds在新源数据上预测SSNB图像
ot.da.NearestBrenierPotentialSSNB的BaseTransport包装器
- ot.mapping.nearest_brenier_potential_predict_bounds(X, phi, G, Y, X_classes=None, Y_classes=None, strongly_convex_constant=0.6, gradient_lipschitz_constant=1.4, log=False)[源]
计算输入点Y处的下界和上界潜能值,使用潜在的最优值phi在X处及其梯度G在X处。‘下界’潜能对应于[58]的方法,方程2,而边界特性和‘上界’潜能来自于[59],定理3.14(考虑到该定理的表述中有一个最小值而不是最大值,这是一个笔误)。这两种潜能对于SSNB问题都是最优的。
如果 \(I_k\) 是 \([n]\) 的一个子集,其中 i 使得 \(x_i\) 在分区(或类)\(E_k\) 中,对于每个 \(y \in E_k\),该函数分别解决凸 QCQP 问题,l: '下限' 和 u: '上限':
\begin{gather*} (\varphi_{l}(x), \nabla \varphi_l(x)) = \text{argmin}\ t, \\ t\in \mathbb{R},\; g\in \mathbb{R}^d, \\ \text{s.t.} \forall j \in I_k,\; t-\varphi_j - \langle g_j, y-x_j \rangle \geq c_1\|g - g_j\|_2^2 + c_2\|y-x_j\|_2^2 - c_3\langle g_j-g, x_j -y \rangle. \end{gather*}\begin{gather*} (\varphi_{u}(x), \nabla \varphi_u(x)) = \text{argmax}\ t, \\ t\in \mathbb{R},\; g\in \mathbb{R}^d, \\ \text{s.t.} \forall i \in I_k,\; \varphi_i^* -t - \langle g, x_i-y \rangle \geq c_1\|g_i - g\|_2^2 + c_2\|x_i-y\|_2^2 - c_3\langle g-g_i, y -x_i \rangle. \end{gather*}常量 \(c_1, c_2, c_3\) 仅依赖于 strongly_convex_constant 和 gradient_lipschitz_constant。
警告
此函数需要CVXPY库
警告
接受任何后端,但会首先转换为Numpy,然后再转换回后端。
- Parameters:
X (数组类型 (n, d)) – 用于计算最优值 phi 和 G 的参考点
X_classes (类数组 (n,), 可选) – 参考点的类别
phi (类数组 (n,)) – 在点 X 处的潜在最佳值
G (类似数组 (n, d)) – 在点 X 处梯度的最优值
Y (数组类型 (m, d)) – 输入点
X_classes – 参考点的类别,默认为单一类别
Y_classes (array_like (m,), 可选) – 输入点的类别,默认为单个类别
strongly_convex_constant (float, 可选) – 输入潜能 phi 的强凸性常数,默认为 0.6
gradient_lipschitz_constant (float, optional) – 输入梯度 G 的 Lipschitz 性质的常数,默认为 1.4
log (bool, optional) – 如果为真则记录日志
- Returns:
phi_lu (array-like (2, m)) – Y处下限和上限潜能的值
G_lu (array-like (2, m, d)) – Y处下限和上限潜能的梯度
log (dict, optional) – 如果输入的log为真,包含求解器信息的字典
参考文献
[58] François-Pierre Paty, Alexandre d’Aspremont, and Marco Cuturi. 正则性作为正则化: 在最优运输中的光滑和强凸Brenier势。发表于国际人工智能与统计会议,页码 1222–1232。PMLR,2020。
[59] Adrien B Taylor. 凸插值和一阶方法在凸优化中的性能估计。博士论文,洛万大学,洛万-拉-诺夫,比利时,2017年。
另请参见
ot.mapping.nearest_brenier_potential_fit在源数据和目标数据上拟合SSNB
ot.da.NearestBrenierPotentialSSNB的BaseTransport包装器