ot.gromov
与Gromov-Wasserstein问题相关的求解器。
- ot.gromov.BAPG_fused_gromov_wasserstein(M, C1, C2, p=None, q=None, loss_fun='square_loss', epsilon=0.1, symmetric=None, alpha=0.5, G0=None, max_iter=1000, tol=1e-09, marginal_loss=False, verbose=False, log=False)[源]
返回\((\mathbf{C_1}, \mathbf{Y_1}, \mathbf{p})\)与\((\mathbf{C_2}, \mathbf{Y_2}, \mathbf{q})\)之间的融合 Gromov-Wasserstein 传输,使用节点特征矩阵\(\mathbf{Y_1}\)和\(\mathbf{Y_2}\)之间的成对距离矩阵\(\mathbf{M}\),通过 Bregman 交替投影梯度方法进行估计。
如果 marginal_loss=True,该函数解决以下融合Gromov-Wasserstein优化问题:
\[ \begin{align}\begin{aligned}\mathbf{T}^* \in\mathop{\arg\min}_\mathbf{T} \quad (1 - \alpha) \langle \mathbf{T}, \mathbf{M} \rangle_F + \alpha \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]否则,该函数解决了一个等效问题 [63, 64],其中只依赖于边际的常数项 \(\mathbf{p}\):和 \(\mathbf{q}\):被丢弃,同时假设 L 按照[12]中的命题1进行分解:
\[ \begin{align}\begin{aligned}\mathbf{T}^* \in\mathop{\arg\min}_\mathbf{T} \quad (1 - \alpha) \langle \mathbf{T}, \mathbf{M} \rangle_F - \alpha \langle h_1(\mathbf{C}_1) \mathbf{T} h_2(\mathbf{C_2})^\top , \mathbf{T} \rangle_F s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]其中:
\(\mathbf{M}\): 各领域特征之间的成对关系矩阵
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{p}\): 源空间中的分布
\(\mathbf{q}\): 目标空间中的分布
- L: 损失函数,用于考虑相似性矩阵和特征矩阵之间的不匹配
满足 \(L(a, b) = f_1(a) + f_2(b) - h_1(a) h_2(b)\)
\(\alpha\): 权衡参数
注意
根据算法设计,由此函数返回的最优耦合 \(\mathbf{T}\) 不一定满足边际约束 \(\mathbf{T}\mathbf{1}=\mathbf{p}\) 和 \(\mathbf{T}^T\mathbf{1}=\mathbf{q}\)。因此,返回的融合 Gromov-Wasserstein 损失不一定满足距离性质,并且可能为负。
- Parameters:
M (类数组, 形状 (ns, nt)) – 特征在不同领域之间的成对关系矩阵
C1 (类似数组, 形状 (ns, ns)) – 源空间中的度量成本矩阵
C2 (类似数组, 形状 (nt, nt)) – 目标空间中的度量成本矩阵
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
q (数组类型, 形状 (nt,), 可选) – 目标空间中的分布。如果保持默认值 None,将采用均匀分布。
loss_fun (string, 可选 (默认='square_loss')) – 用于求解器的损失函数,可以是‘square_loss’或‘kl_loss’
epsilon (float, 可选) – 正则化项 >0
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
alpha (浮动, 可选) – 权衡参数 (0 < alpha < 1)
G0 (数组类型, 形状 (ns,nt), 可选) – 如果为 None,求解器的初始传输计划为 pq^T。 否则,G0 将作为求解器的初始传输使用。G0 不需要满足边际约束,但我们强烈建议它 以正确估计 GW 距离。
max_iter (int, 可选) – 最大迭代次数
tol (float, 可选) – 停止阈值在误差上 (>0)
marginal_loss (bool, 可选。默认值为 False。) – 是否在目标函数中包含常数边际项。
verbose (bool, 可选) – 在迭代过程中打印信息
log (bool, 可选) – 如果为真,则记录日志。
- Returns:
T – 两个关节空间之间的最优耦合
- Return type:
数组类似,形状 (ns, nt)
参考文献
- ot.gromov.BAPG_fused_gromov_wasserstein2(M, C1, C2, p=None, q=None, loss_fun='square_loss', epsilon=0.1, symmetric=None, alpha=0.5, G0=None, max_iter=1000, tol=1e-09, marginal_loss=False, verbose=False, log=False)[源]
返回 Fused Gromov-Wasserstein 损失,在 \((\mathbf{C_1}, \mathbf{Y_1}, \mathbf{p})\) 和 \((\mathbf{C_2}, \mathbf{Y_2}, \mathbf{q})\) 之间, 使用节点特征矩阵 \(\mathbf{Y_1}\) 和 \(\mathbf{Y_2}\) 的成对距离矩阵 \(\mathbf{M}\), 通过 Bregman 交替投影梯度法进行估算。
如果 marginal_loss=True,该函数解决以下融合Gromov-Wasserstein优化问题:
\[ \begin{align}\begin{aligned}\mathbf{FGW} = \mathop{\min}_\mathbf{T} \quad (1 - \alpha) \langle \mathbf{T}, \mathbf{M} \rangle_F + \alpha \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]否则,该函数解决了一个等效问题 [63, 64],其中只依赖于边际的常数项 \(\mathbf{p}\):和 \(\mathbf{q}\):被丢弃,同时假设 L 按照[12]中的命题1进行分解:
\[ \begin{align}\begin{aligned}\mathop{\min}_\mathbf{T} \quad (1 - \alpha) \langle \mathbf{T}, \mathbf{M} \rangle_F - \alpha \langle h_1(\mathbf{C}_1) \mathbf{T} h_2(\mathbf{C_2})^\top , \mathbf{T} \rangle_F s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]其中:
\(\mathbf{M}\): 特征跨域的度量成本矩阵
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{p}\): 源空间中的分布
\(\mathbf{q}\): 目标空间中的分布
- L: 损失函数,用于考虑相似性矩阵和特征矩阵之间的不匹配
满足 \(L(a, b) = f_1(a) + f_2(b) - h_1(a) h_2(b)\)
\(\alpha\): 权衡参数
注意
根据算法设计,由此函数返回的最优耦合 \(\mathbf{T}\) 不一定满足边际约束 \(\mathbf{T}\mathbf{1}=\mathbf{p}\) 和 \(\mathbf{T}^T\mathbf{1}=\mathbf{q}\)。因此,返回的融合 Gromov-Wasserstein 损失不一定满足距离性质,并且可能为负。
- Parameters:
M (类似数组, 形状 (ns, nt)) – 各域中特征之间的度量成本矩阵
C1 (类似数组, 形状 (ns, ns)) – 源空间中的度量成本矩阵
C2 (类似数组, 形状 (nt, nt)) – 目标空间中的度量成本矩阵
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
q (数组类型, 形状 (nt,), 可选) – 目标空间中的分布。如果保持默认值 None,将采用均匀分布。
loss_fun (string, 可选 (默认='square_loss')) – 用于求解器的损失函数,可以是‘square_loss’或‘kl_loss’
epsilon (float, 可选) – 正则化项 >0
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
alpha (浮动, 可选) – 权衡参数 (0 < alpha < 1)
G0 (数组类型, 形状 (ns,nt), 可选) – 如果为 None,求解器的初始传输计划为 pq^T。 否则,G0 将作为求解器的初始传输使用。G0 不需要满足边际约束,但我们强烈建议它 以正确估计 GW 距离。
max_iter (int, 可选) – 最大迭代次数
tol (float, 可选) – 停止阈值在误差上 (>0)
marginal_loss (bool, 可选。默认值为 False。) – 是否在目标函数中包含常数边际项。
verbose (bool, 可选) – 在迭代过程中打印信息
log (bool, 可选) – 如果为真,则记录日志。
- Returns:
T – 两个关节空间之间的最优耦合
- Return type:
数组类似,形状 (ns, nt)
参考文献
[63] Li, J., Tang, J., Kong, L., Liu, H., Li, J., So, A. M. C., & Blanchet, J. “一种用于图数据中Gromov-Wasserstein松弛的收敛单循环算法”。国际学习表征会议(ICLR),2023。
[64] 马, X., 褚, X., 王, Y., 林, Y., 赵, J., 马, L., & 朱, W. “用于图级分类的融合Gromov-Wasserstein图混合”。 在第三十七届神经信息处理系统会议上。
- ot.gromov.BAPG_gromov_wasserstein(C1, C2, p=None, q=None, loss_fun='square_loss', epsilon=0.1, symmetric=None, G0=None, max_iter=1000, tol=1e-09, marginal_loss=False, verbose=False, log=False)[源]
返回 \((\mathbf{C_1}, \mathbf{p})\) 和 \((\mathbf{C_2}, \mathbf{q})\) 之间的 Gromov-Wasserstein 传输,使用 Bregman 交替投影梯度方法进行估计。
如果 marginal_loss=True,该函数解决以下 Gromov-Wasserstein 优化问题:
\[ \begin{align}\begin{aligned}\mathbf{T}^* \in \mathop{\arg\min}_\mathbf{T} \quad \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]否则,该函数解决了一个等价问题 [63],其中仅依赖于边际的常数项 \(\mathbf{p}\): 和 \(\mathbf{q}\): 被丢弃,同时假设 L 如 [12] 中的命题 1 分解:
\[ \begin{align}\begin{aligned}\mathbf{T}^* \in\mathop{\arg\min}_\mathbf{T} \quad - \langle h_1(\mathbf{C}_1) \mathbf{T} h_2(\mathbf{C_2})^\top , \mathbf{T} \rangle_F\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]其中:
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{p}\): 源空间中的分布
\(\mathbf{q}\): 目标空间中的分布
- L:损失函数,用于考虑相似性矩阵之间的误差
满足 \(L(a, b) = f_1(a) + f_2(b) - h_1(a) h_2(b)\)
注意
根据算法设计,这个函数返回的最优耦合 \(\mathbf{T}\) 不一定满足边际约束 \(\mathbf{T}\mathbf{1}=\mathbf{p}\) 和 \(\mathbf{T}^T\mathbf{1}=\mathbf{q}\)。因此,返回的 Gromov-Wasserstein 损失不一定满足距离性质,并且可能为负。
- Parameters:
C1 (类似数组, 形状 (ns, ns)) – 源空间中的度量成本矩阵
C2 (类似数组, 形状 (nt, nt)) – 目标空间中的度量成本矩阵
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
q (数组类型, 形状 (nt,), 可选) – 目标空间中的分布。如果保持默认值 None,将采用均匀分布。
loss_fun (string, 可选 (默认='square_loss')) – 用于求解器的损失函数,可以是‘square_loss’或‘kl_loss’
epsilon (float, 可选) – 正则化项 >0
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
G0 (数组类型, 形状 (ns,nt), 可选) – 如果为 None,求解器的初始传输计划为 pq^T。 否则,G0 将作为求解器的初始传输使用。G0 不需要满足边际约束,但我们强烈建议它 以正确估计 GW 距离。
max_iter (int, 可选) – 最大迭代次数
tol (float, 可选) – 停止阈值在误差上 (>0)
marginal_loss (bool, 可选。默认值为 False。) – 是否在目标函数中包含常数边际项。
verbose (bool, 可选) – 在迭代过程中打印信息
log (bool, 可选) – 如果为真,则记录日志。
- Returns:
T – 两个空间之间的最佳耦合
- Return type:
数组类似,形状 (ns, nt)
参考文献
[63] 李, J., 唐, J., 孔, L., 刘, H., 李, J., So, A. M. C., & 布朗舍特, J. “用于图数据的 Gromov-Wasserstein 放松的收敛单循环算法”。国际学习表示会议 (ICLR), 2022.
- ot.gromov.BAPG_gromov_wasserstein2(C1, C2, p=None, q=None, loss_fun='square_loss', epsilon=0.1, symmetric=None, G0=None, max_iter=1000, tol=1e-09, marginal_loss=False, verbose=False, log=False)[源]
返回Gromov-Wasserstein损失 \(\mathbf{GW}\) 在 \((\mathbf{C_1}, \mathbf{p})\) 和 \((\mathbf{C_2}, \mathbf{q})\) 之间,使用Bregman交替投影梯度方法估计。
如果 marginal_loss=True,该函数解决以下 Gromov-Wasserstein 优化问题:
\[ \begin{align}\begin{aligned}\mathbf{GW} = \mathop{\min}_\mathbf{T} \quad \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]否则,该函数解决了一个等效问题 [63, 64],其中只依赖于边际的常数项 \(\mathbf{p}\):和 \(\mathbf{q}\):被丢弃,同时假设 L 按照[12]中的命题1进行分解:
\[ \begin{align}\begin{aligned}\mathop{\min}_\mathbf{T} \quad - \langle h_1(\mathbf{C}_1) \mathbf{T} h_2(\mathbf{C_2})^\top , \mathbf{T} \rangle_F\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]其中:
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{p}\): 源空间中的分布
\(\mathbf{q}\): 目标空间中的分布
- L:损失函数,用于考虑相似性矩阵之间的误差
满足 \(L(a, b) = f_1(a) + f_2(b) - h_1(a) h_2(b)\)
注意
根据算法设计,这个函数返回的最优耦合 \(\mathbf{T}\) 不一定满足边际约束 \(\mathbf{T}\mathbf{1}=\mathbf{p}\) 和 \(\mathbf{T}^T\mathbf{1}=\mathbf{q}\)。因此,返回的 Gromov-Wasserstein 损失不一定满足距离性质,并且可能为负。
- Parameters:
C1 (类似数组, 形状 (ns, ns)) – 源空间中的度量成本矩阵
C2 (类似数组, 形状 (nt, nt)) – 目标空间中的度量成本矩阵
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
q (数组类型, 形状 (nt,), 可选) – 目标空间中的分布。如果保持默认值 None,将采用均匀分布。
loss_fun (string, 可选 (默认='square_loss')) – 用于求解器的损失函数,可以是‘square_loss’或‘kl_loss’
epsilon (float, 可选) – 正则化项 >0
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
G0 (数组类型, 形状 (ns,nt), 可选) – 如果为 None,求解器的初始传输计划为 pq^T。 否则,G0 将作为求解器的初始传输使用。G0 不需要满足边际约束,但我们强烈建议它 以正确估计 GW 距离。
max_iter (int, 可选) – 最大迭代次数
tol (float, 可选) – 停止阈值在误差上 (>0)
marginal_loss (bool, 可选。默认值为 False。) – 是否在目标函数中包含常数边际项。
verbose (bool, 可选) – 在迭代过程中打印信息
log (bool, 可选) – 如果为真,则记录日志。
- Returns:
gw_dist – 格罗莫夫-瓦瑟斯坦距离
- Return type:
参考文献
[63] Li, J., Tang, J., Kong, L., Liu, H., Li, J., So, A. M. C., & Blanchet, J. “一种用于图数据中Gromov-Wasserstein松弛的收敛单循环算法”。国际学习表征会议(ICLR),2023。
- ot.gromov.GW_distance_estimation(C1, C2, p, q, loss_fun, T, nb_samples_p=None, nb_samples_q=None, std=True, random_state=None)[源]
返回<_span>\((\mathbf{C_1}, \mathbf{p})\)和\((\mathbf{C_2}, \mathbf{q})\)之间的Gromov-Wasserstein损失的近似值,使用固定的运输计划\(\mathbf{T}\)。为了恢复在[13]中定义的Gromov-Wasserstein距离的近似值,计算\(d_{GW} = \frac{1}{2} \sqrt{\mathbf{GW}}\)。
该函数给出了以下方程的无偏近似:
\[\mathbf{GW} = \sum_{i,j,k,l} L(\mathbf{C_{1}}_{i,k}, \mathbf{C_{2}}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\]其中:
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
L : 损失函数,用于考虑相似性矩阵之间的不匹配
\(\mathbf{T}\): 具有边际分布 \(\mathbf{p}\) 和 \(\mathbf{q}\) 的矩阵
- Parameters:
C1 (类似数组, 形状 (ns, ns)) – 源空间中的度量成本矩阵
C2 (类似数组, 形状 (nt, nt)) – 目标空间中的度量成本矩阵
p (数组类似, 形状 (ns,)) – 源空间中的分布
q (数组类似, 形状 (nt,)) – 目标空间中的分布
loss_fun (function: \(\mathbb{R} \times \mathbb{R} \mapsto \mathbb{R}\)) – 用于距离的损失函数,传输计划不依赖于损失函数
T (csr 或 类似数组, 形状 (ns, nt)) – 运输计划矩阵,可以是稀疏的 csr 矩阵或密集矩阵
nb_samples_p (int, 可选) – nb_samples_p 是第一维度上样本的数量(不放回抽样),对应 \(\mathbf{T}\)
nb_samples_q (int, 可选) – nb_samples_q 是第二维度上样本的数量,对于第一维度上的每个样本
std (bool, optional) – 与gromov-wasserstein成本预测相关的标准差
random_state (int 或 RandomState 实例, 可选) – 固定种子以保证可重复性
- Returns:
Gromov-wasserstein 成本
- Return type:
参考文献
[14] Kerdoncuff, Tanguy, Emonet, Rémi, Sebban, Marc “采样的Gromov Wasserstein。” 机器学习期刊(MLJ)。2021。
- ot.gromov.div_between_product(mu, nu, alpha, beta, divergence, nx=None)[源]
快速计算两个乘积测度之间的Bregman散度。仅支持Kullback-Leibler散度和半平方L2散度。
对于半平方L2散度:
\[\frac{1}{2} || \mu \otimes \nu, \alpha \otimes \beta ||^2 = \frac{1}{2} \Big[ ||\alpha||^2 ||\beta||^2 + ||\mu||^2 ||\nu||^2 - 2 \langle \alpha, \mu \rangle \langle \beta, \nu \rangle \Big]\]对于Kullback-Leibler散度:
\[KL(\mu \otimes \nu, \alpha \otimes \beta) = m(\mu) * KL(\nu, \beta) + m(\nu) * KL(\mu, \alpha) + (m(\mu) - m(\alpha)) * (m(\nu) - m(\beta))\]其中:
\(\mu\) 和 \(\alpha\) 是两个具有相同形状的度量。
\(\nu\) 和 \(\beta\) 是两个具有相同形状的度量。
\(m\) 表示测量的质量
- Parameters:
mu (类似数组) – 向量或矩阵
nu (array-like) – 向量或矩阵
alpha (类似数组) – 与mu形状相同的向量或矩阵
beta (类似数组) – 具有与 nu 相同形状的向量或矩阵
发散 (字符串, 默认 = "kl") – Bregman 发散,选择“kl”(Kullback-Leibler 发散)或“l2”(半平方 L2 发散)
nx (backend, 可选) – 如果默认值为 None,将进行后端测试。
- Return type:
两个乘积测度之间的Bregman散度。
- ot.gromov.div_to_product(pi, a, b, pi1=None, pi2=None, divergence='kl', mass=True, nx=None)[源]
快速计算任意测度与乘积测度之间的Bregman散度。仅支持Kullback-Leibler和半平方L2散度。
对于半平方L2散度:
\[\frac{1}{2} || \pi - a \otimes b ||^2 = \frac{1}{2} \Big[ \sum_{i, j} \pi_{ij}^2 + (\sum_i a_i^2) ( \sum_j b_j^2) - 2 \sum_{i, j} a_i \pi_{ij} b_j \Big]\]对于Kullback-Leibler散度:
\[KL(\pi | a \otimes b) = \langle \pi, \log \pi \rangle - \langle \pi_1, \log a \rangle - \langle \pi_2, \log b \rangle - m(\pi) + m(a) m(b)\]其中 :
\(\pi\) 是 (dim_a, dim_b) 运输计划
\(\pi_1\) 和 \(\pi_2\) 是边际分布
\(\mathbf{a}\) 和 \(\mathbf{b}\) 是源和目标不平衡分布
\(m\) 表示测量的质量
- Parameters:
pi (类数组 (dim_a, dim_b)) – 运输计划
a (类数组 (dim_a,)) – 未归一化的维度 dim_a 的直方图
b (数组类似 (dim_b,)) – 未归一化的直方图,维度为 dim_b
pi1 (类数组 (dim_a,), 可选 (默认 = None)) – 关于运输计划第一维的边际分布 仅在Kullback-Leibler散度的情况下使用。
pi2 (类数组 (dim_a,), 可选 (默认 = None)) – 关于运输计划第二维度的边际分布 仅在使用Kullback-Leibler散度时使用。
发散 (字符串, 默认 = "kl") – Bregman 发散,选择“kl”(Kullback-Leibler 发散)或“l2”(半平方 L2 发散)
质量 (布尔值, 可选。默认值为 False。) – 仅在计算 Kullback-Leibler 散度时使用。 如果为 False,则计算相对熵。 如果为 True,则计算 Kullback-Leibler 散度。
nx (backend, 可选) – 如果默认值为 None,将进行后端测试。
- Return type:
任意测度与乘积测度之间的Bregman散度。
- ot.gromov.entropic_fused_gromov_barycenters(N, Ys, Cs, ps=None, p=None, lambdas=None, loss_fun='square_loss', epsilon=0.1, symmetric=True, alpha=0.5, max_iter=1000, tol=1e-09, stop_criterion='barycenter', warmstartT=False, verbose=False, log=False, init_C=None, init_Y=None, fixed_structure=False, fixed_features=False, random_state=None, **kwargs)[源]
返回具有节点特征 \((\mathbf{C}_s, \mathbf{Y}_s, \mathbf{p}_s)_{1 \leq s \leq S}\) 的可测网络的融合 Gromov-Wasserstein 重心,这些网络是通过 Sinkhorn 投影的融合 Gromov-Wasserstein 传输估计的。
该函数解决以下优化问题:
\[\mathbf{C}^*, \mathbf{Y}^* = \mathop{\arg \min}_{\mathbf{C}\in \mathbb{R}^{N \times N}, \mathbf{Y}\in \mathbb{Y}^{N \times d}} \quad \sum_s \lambda_s \mathrm{FGW}_{\alpha}(\mathbf{C}, \mathbf{C}_s, \mathbf{Y}, \mathbf{Y}_s, \mathbf{p}, \mathbf{p}_s)\]其中:
\(\mathbf{Y}_s\): 特征矩阵
\(\mathbf{C}_s\): 指标成本矩阵
\(\mathbf{p}_s\): 分布
- Parameters:
N (int) – 目标重心的大小
Ys (列表 的 类似数组的对象, 每个元素的形状为 (ns,d)) – 所有样本的特征
Cs (列表 的 S 类似数组,形状为 (ns,ns)) – 计量成本矩阵
ps (列表 的 S 类数组,形状为 (ns,), 可选) – 在S空间中的样本权重。如果设置为默认值 None,则采用均匀分布。
p (类数组对象, 形状 (N,), 可选) – 目标重心中的权重。 如果将其设置为默认值 None,则采用均匀分布。
lambdas (list of float, 可选) – S 空间的权重列表。 如果留空默认值为 None,则采用均匀权重。
loss_fun (string, 可选 (默认='square_loss')) – 用于求解器的损失函数,可以是‘square_loss’或‘kl_loss’
epsilon (float, 可选) – 正则化项 >0
对称的 (布尔值, 可选的.) – 结构是否被假设为对称。默认值为 True。如果设置为 True(或 False),C1 和 C2 将被假设为对称(或不对称)。
alpha (浮动, 可选) – 权衡参数 (0 < alpha < 1)
max_iter (int, 可选) – 最大迭代次数
tol (float, 可选) – 停止阈值在误差上 (>0)
stop_criterion (str, 可选。默认值为'barycenter'。) – 停止标准取值为 [‘barycenter’, ‘loss’]。如果设置为‘barycenter’,则使用估计的重心的绝对范数变化。否则如果设置为‘loss’,则使用损失的相对变化。
warmstartT (bool, 可选) – 是否在连续的融合Gromov-Wasserstein传输问题中执行传输计划的热启动。
verbose (bool, optional) – 在迭代过程中打印信息。
log (bool, 可选) – 如果为真,则记录日志。
init_C (bool | array-like, shape (N, N)) – 用户提供的< نشر> \(\mathbf{C}\) 矩阵的随机初始值。
init_Y (类数组, 形状 (N,d), 可选) – 杠杆中心特征的初始化。如果没有设置,则使用随机初始化。
fixed_structure (bool, optional) – 在更新过程中是否固定重心的结构。
fixed_features (bool, optional) – 在更新期间是否固定重心的特征
random_state (int 或 RandomState 实例, 可选) – 固定种子以保证可重复性
**kwargs (dict) – 参数可以直接传递给 ot.entropic_fused_gromov_wasserstein 解算器。
- Returns:
Y (类数组,形状 (N, d)) – 在重心空间中的特征矩阵(任意排列)
C (类数组,形状 (N, N)) – 在重心空间中的相似性矩阵(与Y的行按相同顺序排列)
log (dict) – 仅在log=True时返回。它包含以下键:
\(\mathbf{T}\): (N, ns) 运输矩阵的列表
\(\mathbf{p}\): (N,) 重心权重
\((\mathbf{M}_s)_s\): 重心特征与其他特征之间的所有距离矩阵 \((dist(\mathbf{X}, \mathbf{Y}_s))_s\) 形状为 (N, ns)
用于收敛评估的值。
参考文献
[12] 加布里埃尔·佩耶雷,马尔科·库图里和贾斯廷·所罗门, “核和距离矩阵的Gromov-Wasserstein平均。” 国际机器学习会议(ICML)。 2016年。
[24] Vayer Titouan, Chapel Laetitia, Flamary Rémi, Tavenard Romain 和 Courty Nicolas “针对结构化数据的最优传输及其在图上的应用” 国际机器学习会议 (ICML)。2019.
- ot.gromov.entropic_fused_gromov_wasserstein(M, C1, C2, p=None, q=None, loss_fun='square_loss', epsilon=0.1, symmetric=None, alpha=0.5, G0=None, max_iter=1000, tol=1e-09, solver='PGD', warmstart=False, verbose=False, log=False, **kwargs)[源]
返回在 \((\mathbf{C_1}, \mathbf{Y_1}, \mathbf{p})\) 和 \((\mathbf{C_2}, \mathbf{Y_2}, \mathbf{q})\) 之间的融合 Gromov-Wasserstein 运输,具有节点特征矩阵 \(\mathbf{Y_1}\) 和 \(\mathbf{Y_2}\) 之间的成对距离矩阵 \(\mathbf{M}\),该矩阵通过 Sinkhorn 投影进行估计。
如果 solver=”PGD”,该函数使用投影梯度下降 [12] 解决以下熵正则化的融合 Gromov-Wasserstein 优化问题:
\[ \begin{align}\begin{aligned}\mathbf{T}^* \in \mathop{\arg\min}_\mathbf{T} \quad (1 - \alpha) \langle \mathbf{T}, \mathbf{M} \rangle_F + \alpha \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l} - \epsilon H(\mathbf{T})\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]否则,如果 solver=”PPA”,该函数使用近端点算法解决以下融合Gromov-Wasserstein优化问题 [51]:
\[ \begin{align}\begin{aligned}\mathbf{T}^* \in\mathop{\arg\min}_\mathbf{T} \quad (1 - \alpha) \langle \mathbf{T}, \mathbf{M} \rangle_F + \alpha \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]其中:
\(\mathbf{M}\): 特征跨域的度量成本矩阵
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{p}\): 源空间中的分布
\(\mathbf{q}\): 目标空间中的分布
L: 损失函数,用于考虑相似性矩阵和特征矩阵之间的不匹配
H: 熵
\(\alpha\): 权衡参数
注意
如果内部求解器 ot.sinkhorn 没有收敛,由此函数返回的最优耦合 \(\mathbf{T}\) 不一定满足边际约束 \(\mathbf{T}\mathbf{1}=\mathbf{p}\) 和 \(\mathbf{T}^T\mathbf{1}=\mathbf{q}\)。因此,返回的融合Gromov-Wasserstein损失不一定满足距离性质,可能为负。
- Parameters:
M (类似数组, 形状 (ns, nt)) – 各域中特征之间的度量成本矩阵
C1 (类似数组, 形状 (ns, ns)) – 源空间中的度量成本矩阵
C2 (类似数组, 形状 (nt, nt)) – 目标空间中的度量成本矩阵
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
q (数组类型, 形状 (nt,), 可选) – 目标空间中的分布。如果保持默认值 None,将采用均匀分布。
loss_fun (string, 可选 (默认='square_loss')) – 用于求解器的损失函数,可以是‘square_loss’或‘kl_loss’
epsilon (float, 可选) – 正则化项 >0
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
alpha (浮动, 可选) – 权衡参数 (0 < alpha < 1)
G0 (数组类型, 形状 (ns,nt), 可选) – 如果为 None,求解器的初始传输计划为 pq^T。 否则,G0 将作为求解器的初始传输使用。G0 不需要满足边际约束,但我们强烈建议它 以正确估计 GW 距离。
max_iter (int, 可选) – 最大迭代次数
tol (float, 可选) – 停止阈值在误差上 (>0)
solver (string, optional) – 使用的求解器,可以选择‘PGD’进行投影梯度下降,或‘PPA’进行近端点算法。默认值为‘PGD’。
warmstart (bool, 可选) – 是否在连续的Sinkhorn投影中执行对偶潜能的热启动。
verbose (bool, 可选) – 在迭代过程中打印信息
log (bool, 可选) – 如果为真,则记录日志。
**kwargs (dict) – 参数可以直接传递给 ot.sinkhorn 求解器。 例如 numItermax 和 stopThr 来控制其估计精度, 例如 [51] 建议使用 numItermax=1。
- Returns:
T – 两个关节空间之间的最优耦合
- Return type:
数组类似,形状 (ns, nt)
参考文献
[12] 加布里埃尔·佩耶雷,马尔科·库图里和贾斯廷·所罗门, “核和距离矩阵的Gromov-Wasserstein平均。” 国际机器学习会议(ICML)。 2016年。
[47] Chowdhury, S., & Mémoli, F. (2019). 网络之间的Gromov–Wasserstein距离与稳定网络不变量。 信息与推理:IMA期刊, 8(4), 757-787.
[51] 徐, H., 罗, D., 查, H., & 杜克, L. C. (2019). Gromov-wasserstein 学习用于图匹配和节点嵌入. 在国际机器学习大会 (ICML), 2019.
[24] Vayer Titouan, Chapel Laetitia, Flamary Rémi, Tavenard Romain 和 Courty Nicolas “结构化数据的最优传输及其在图上的应用”,国际机器学习大会 (ICML)。 2019.
- ot.gromov.entropic_fused_gromov_wasserstein2(M, C1, C2, p=None, q=None, loss_fun='square_loss', epsilon=0.1, symmetric=None, alpha=0.5, G0=None, max_iter=1000, tol=1e-09, solver='PGD', warmstart=False, verbose=False, log=False, **kwargs)[源]
返回\((\mathbf{C_1}, \mathbf{Y_1}, \mathbf{p})\)和\((\mathbf{C_2}, \mathbf{Y_2}, \mathbf{q})\)之间的融合Gromov-Wasserstein距离, 节点特征矩阵\(\mathbf{Y_1}\)和\(\mathbf{Y_2}\)之间的成对距离矩阵\(\mathbf{M}\), 使用Sinkhorn投影估计。
如果 solver=”PGD”,该函数使用投影梯度下降 [12] 解决以下熵正则化的融合 Gromov-Wasserstein 优化问题:
\[ \begin{align}\begin{aligned}\mathbf{FGW} = \mathop{\min}_\mathbf{T} \quad (1 - \alpha) \langle \mathbf{T}, \mathbf{M} \rangle_F + \alpha \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l} - \epsilon H(\mathbf{T})\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]否则,如果 solver=”PPA”,该函数使用近端点算法解决以下融合Gromov-Wasserstein优化问题 [51]:
\[ \begin{align}\begin{aligned}\mathbf{FGW} = \mathop{\min}_\mathbf{T} \quad (1 - \alpha) \langle \mathbf{T}, \mathbf{M} \rangle_F + \alpha \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]其中:
\(\mathbf{M}\): 特征跨域的度量成本矩阵
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{p}\): 源空间中的分布
\(\mathbf{q}\): 目标空间中的分布
L: 损失函数,用于考虑相似性矩阵和特征矩阵之间的不匹配
H: 熵
\(\alpha\): 权衡参数
注意
如果内部求解器 ot.sinkhorn 没有收敛,由此函数返回的最优耦合 \(\mathbf{T}\) 不一定满足边际约束 \(\mathbf{T}\mathbf{1}=\mathbf{p}\) 和 \(\mathbf{T}^T\mathbf{1}=\mathbf{q}\)。因此,返回的融合Gromov-Wasserstein损失不一定满足距离性质,可能为负。
- Parameters:
M (类似数组, 形状 (ns, nt)) – 各域中特征之间的度量成本矩阵
C1 (类似数组, 形状 (ns, ns)) – 源空间中的度量成本矩阵
C2 (类似数组, 形状 (nt, nt)) – 目标空间中的度量成本矩阵
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
q (数组类型, 形状 (nt,), 可选) – 目标空间中的分布。如果保持默认值 None,将采用均匀分布。
loss_fun (string, 可选 (默认='square_loss')) – 用于求解器的损失函数,可以是‘square_loss’或‘kl_loss’
epsilon (float, 可选) – 正则化项 >0
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
alpha (浮动, 可选) – 权衡参数 (0 < alpha < 1)
G0 (数组类型, 形状 (ns,nt), 可选) – 如果为 None,求解器的初始传输计划为 pq^T。 否则,G0 将作为求解器的初始传输使用。G0 不需要满足边际约束,但我们强烈建议它 以正确估计 GW 距离。
max_iter (int, 可选) – 最大迭代次数
tol (float, 可选) – 停止阈值在误差上 (>0)
verbose (bool, 可选) – 在迭代过程中打印信息
log (bool, 可选) – 如果为真,则记录日志。
- Returns:
fgw_dist – 融合的Gromov-Wasserstein距离
- Return type:
参考文献
[12] 加布里埃尔·佩耶雷,马尔科·库图里和贾斯廷·所罗门, “核和距离矩阵的Gromov-Wasserstein平均。” 国际机器学习会议(ICML)。 2016年。
[51] 徐, H., 罗, D., 查, H., & 杜克, L. C. (2019). Gromov-wasserstein 学习用于图匹配和节点嵌入. 在国际机器学习大会 (ICML), 2019.
[24] Vayer Titouan, Chapel Laetitia, Flamary Rémi, Tavenard Romain 和 Courty Nicolas “结构化数据的最优传输及其在图上的应用”,国际机器学习大会 (ICML)。 2019.
- ot.gromov.entropic_gromov_barycenters(N, Cs, ps=None, p=None, lambdas=None, loss_fun='square_loss', epsilon=0.1, symmetric=True, max_iter=1000, tol=1e-09, stop_criterion='barycenter', warmstartT=False, verbose=False, log=False, init_C=None, random_state=None, **kwargs)[源]
返回通过 Sinkhorn 投影从 Gromov-Wasserstein 传输估计的 S 测量相似性矩阵 \((\mathbf{C}_s)_{1 \leq s \leq S}\) 的 Gromov-Wasserstein 重心。
该函数解决以下优化问题:
\[\mathbf{C}^* = \mathop{\arg \min}_{\mathbf{C}\in \mathbb{R}^{N \times N}} \quad \sum_s \lambda_s \mathrm{GW}(\mathbf{C}, \mathbf{C}_s, \mathbf{p}, \mathbf{p}_s)\]其中:
\(\mathbf{C}_s\): 指标成本矩阵
\(\mathbf{p}_s\): 分布
- Parameters:
N (int) – 目标重心的大小
Cs (列表 的 S 类似数组,形状为 (ns,ns)) – 计量成本矩阵
ps (列表 的 S 类数组,形状为 (ns,), 可选) – 在S空间中的样本权重。如果设置为默认值 None,则采用均匀分布。
p (类数组对象, 形状 (N,), 可选) – 目标重心中的权重。 如果将其设置为默认值 None,则采用均匀分布。
lambdas (list of float, 可选) – S 空间的权重列表。 如果留空默认值为 None,则采用均匀权重。
loss_fun (string, 可选 (默认='square_loss')) – 用于求解器的损失函数,可以是‘square_loss’或‘kl_loss’
epsilon (float, 可选) – 正则化项 >0
对称的 (布尔值, 可选的.) – 结构是否被假设为对称。默认值为 True。如果设置为 True(或 False),C1 和 C2 将被假设为对称(或不对称)。
max_iter (int, 可选) – 最大迭代次数
tol (float, 可选) – 停止阈值在误差上 (>0)
stop_criterion (str, 可选。默认值为 'barycenter'。) – 收敛准则,取值为 [‘barycenter’, ‘loss’]。如果设置为 ‘barycenter’,使用估计重心的绝对范数变化。否则如果设置为 ‘loss’,使用损失的相对变化。
warmstartT (bool, 可选) – 是否在后续的gromov-wasserstein运输问题中执行运输计划的热启动。
verbose (bool, optional) – 在迭代过程中打印信息。
log (bool, 可选) – 如果为真,则记录日志。
init_C (bool | array-like, shape (N, N)) – 用户提供的< نشر> \(\mathbf{C}\) 矩阵的随机初始值。
random_state (int 或 RandomState 实例, 可选) – 固定种子以保证可重复性
**kwargs (dict) – 参数可以直接传递给 ot.entropic_gromov_wasserstein 求解器。
- Returns:
C (类数组,形状 (N, N)) – 在重心空间中的相似性矩阵(任意置换)
log (dict) – 仅在 log=True 时返回。它包含以下键:
\(\mathbf{T}\): (N, ns) 传输矩阵的列表
\(\mathbf{p}\): (N,) 重心权重
用于收敛评估的值。
参考文献
[12] 加布里埃尔·佩耶雷,马尔科·库图里和贾斯廷·所罗门, “核和距离矩阵的Gromov-Wasserstein平均。” 国际机器学习会议(ICML)。 2016年。
- ot.gromov.entropic_gromov_wasserstein(C1, C2, p=None, q=None, loss_fun='square_loss', epsilon=0.1, symmetric=None, G0=None, max_iter=1000, tol=1e-09, solver='PGD', warmstart=False, verbose=False, log=False, **kwargs)[源]
返回在\((\mathbf{C_1}, \mathbf{p})\)和\((\mathbf{C_2}, \mathbf{q})\)之间的Gromov-Wasserstein运输,使用Sinkhorn投影进行估计。
如果 solver=”PGD”,该函数使用投影梯度下降 [12] 解决以下熵正则化的 Gromov-Wasserstein 优化问题:
\[ \begin{align}\begin{aligned}\mathbf{T}^* \in \mathop{\arg\min}_\mathbf{T} \quad \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l} - \epsilon H(\mathbf{T})\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} & \geq 0\end{aligned}\end{align} \]否则如果 solver=”PPA”,该函数使用近端点算法 [51] 解决以下 Gromov-Wasserstein 优化问题:
\[ \begin{align}\begin{aligned}\mathbf{T}^* \in \mathop{\arg\min}_\mathbf{T} \quad \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]其中:
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{p}\): 源空间中的分布
\(\mathbf{q}\): 目标空间中的分布
L: 损失函数,用于考虑相似矩阵之间的不匹配
H: 熵
注意
如果内部求解器 ot.sinkhorn 未收敛,由此函数返回的最优耦合 \(\mathbf{T}\) 不一定满足边际约束 \(\mathbf{T}\mathbf{1}=\mathbf{p}\) 和 \(\mathbf{T}^T\mathbf{1}=\mathbf{q}\)。因此,返回的 Gromov-Wasserstein 损失不一定满足距离属性,并且可能是负值。
- Parameters:
C1 (类似数组, 形状 (ns, ns)) – 源空间中的度量成本矩阵
C2 (类似数组, 形状 (nt, nt)) – 目标空间中的度量成本矩阵
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
q (数组类型, 形状 (nt,), 可选) – 目标空间中的分布。如果保持默认值 None,将采用均匀分布。
loss_fun (string, 可选 (默认='square_loss')) – 用于求解器的损失函数,可以是‘square_loss’或‘kl_loss’
epsilon (float, 可选) – 正则化项 >0
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
G0 (数组类型, 形状 (ns,nt), 可选) – 如果为 None,求解器的初始传输计划为 pq^T。 否则,G0 将作为求解器的初始传输使用。G0 不需要满足边际约束,但我们强烈建议它 以正确估计 GW 距离。
max_iter (int, 可选) – 最大迭代次数
tol (float, 可选) – 停止阈值在误差上 (>0)
solver (string, optional) – 使用的求解器,可以选择‘PGD’进行投影梯度下降,或‘PPA’进行近端点算法。默认值为‘PGD’。
warmstart (bool, 可选) – 是否在连续的Sinkhorn投影中执行对偶潜能的热启动。
verbose (bool, 可选) – 在迭代过程中打印信息
log (bool, 可选) – 如果为真,则记录日志。
**kwargs (dict) – 参数可以直接传递给 ot.sinkhorn 求解器。 例如 numItermax 和 stopThr 来控制其估计精度, 例如 [51] 建议使用 numItermax=1。
- Returns:
T – 两个空间之间的最佳耦合
- Return type:
数组类似,形状 (ns, nt)
参考文献
[12] 加布里埃尔·佩耶雷,马尔科·库图里和贾斯廷·所罗门, “核和距离矩阵的Gromov-Wasserstein平均。” 国际机器学习会议(ICML)。 2016年。
[47] Chowdhury, S., & Mémoli, F. (2019). 网络之间的Gromov–Wasserstein距离与稳定网络不变量。 信息与推理:IMA期刊, 8(4), 757-787.
[51] 徐, H., 罗, D., 查, H., & 杜克, L. C. (2019). Gromov-wasserstein 学习用于图匹配和节点嵌入. 在国际机器学习大会 (ICML), 2019.
- ot.gromov.entropic_gromov_wasserstein2(C1, C2, p=None, q=None, loss_fun='square_loss', epsilon=0.1, symmetric=None, G0=None, max_iter=1000, tol=1e-09, solver='PGD', warmstart=False, verbose=False, log=False, **kwargs)[源]
返回 Gromov-Wasserstein 损失 \(\mathbf{GW}\) 在 \((\mathbf{C_1}, \mathbf{p})\) 和 \((\mathbf{C_2}, \mathbf{q})\) 之间的估计,使用 Sinkhorn 投影。为了恢复在 [13] 中定义的 Gromov-Wasserstein 距离,计算 \(d_{GW} = \frac{1}{2} \sqrt{\mathbf{GW}}\)。
如果 solver=”PGD”,该函数使用投影梯度下降 [12] 解决以下熵正则化的 Gromov-Wasserstein 优化问题:
\[ \begin{align}\begin{aligned}\mathbf{GW} = \mathop{\min}_\mathbf{T} \quad \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l} - \epsilon H(\mathbf{T})\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]否则如果 solver=”PPA”,该函数使用近端点算法 [51] 解决以下 Gromov-Wasserstein 优化问题:
\[ \begin{align}\begin{aligned}\mathbf{GW} = \mathop{\min}_\mathbf{T} \quad \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]其中:
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{p}\): 源空间中的分布
\(\mathbf{q}\): 目标空间中的分布
L: 损失函数,用于考虑相似矩阵之间的不匹配
H: 熵
注意
如果内部求解器 ot.sinkhorn 未收敛,由此函数返回的最优耦合 \(\mathbf{T}\) 不一定满足边际约束 \(\mathbf{T}\mathbf{1}=\mathbf{p}\) 和 \(\mathbf{T}^T\mathbf{1}=\mathbf{q}\)。因此,返回的 Gromov-Wasserstein 损失不一定满足距离属性,并且可能是负值。
- Parameters:
C1 (类似数组, 形状 (ns, ns)) – 源空间中的度量成本矩阵
C2 (类似数组, 形状 (nt, nt)) – 目标空间中的度量成本矩阵
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
q (数组类型, 形状 (nt,), 可选) – 目标空间中的分布。如果保持默认值 None,将采用均匀分布。
loss_fun (string, 可选 (默认='square_loss')) – 用于求解器的损失函数,可以是‘square_loss’或‘kl_loss’
epsilon (float, 可选) – 正则化项 >0
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
G0 (数组类型, 形状 (ns,nt), 可选) – 如果为 None,求解器的初始传输计划为 pq^T。 否则,G0 将作为求解器的初始传输使用。G0 不需要满足边际约束,但我们强烈建议它 以正确估计 GW 距离。
max_iter (int, 可选) – 最大迭代次数
tol (float, 可选) – 停止阈值在误差上 (>0)
solver (string, optional) – 使用的求解器,可以选择‘PGD’进行投影梯度下降,或‘PPA’进行近端点算法。默认值为‘PGD’。
warmstart (bool, 可选) – 是否在连续的Sinkhorn投影中执行对偶潜能的热启动。
verbose (bool, 可选) – 在迭代过程中打印信息
log (bool, 可选) – 如果为真,则记录日志。
**kwargs (dict) – 参数可以直接传递给 ot.sinkhorn 求解器。 例如 numItermax 和 stopThr 来控制其估计精度, 例如 [51] 建议使用 numItermax=1。
- Returns:
gw_dist – 格罗莫夫-瓦瑟斯坦距离
- Return type:
参考文献
[12] 加布里埃尔·佩耶雷,马尔科·库图里和贾斯廷·所罗门, “核和距离矩阵的Gromov-Wasserstein平均。” 国际机器学习会议(ICML)。 2016年。
[51] 徐, H., 罗, D., 查, H., & 杜克, L. C. (2019). Gromov-wasserstein 学习用于图匹配和节点嵌入. 在国际机器学习大会 (ICML), 2019.
- ot.gromov.entropic_partial_gromov_wasserstein(C1, C2, p=None, q=None, reg=1.0, m=None, loss_fun='square_loss', G0=None, numItermax=1000, tol=1e-07, symmetric=None, log=False, verbose=False)[源]
返回部分Gromov-Wasserstein传输在 \((\mathbf{C_1}, \mathbf{p})\) 和 \((\mathbf{C_2}, \mathbf{q})\)之间
该函数解决以下优化问题:
\[\gamma = \mathop{\arg \min}_{\gamma} \quad \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l})\cdot \gamma_{i,j}\cdot\gamma_{k,l} + \mathrm{reg} \cdot\Omega(\gamma)\]\[ \begin{align}\begin{aligned}s.t. \ \gamma &\geq 0\\ \gamma \mathbf{1} &\leq \mathbf{a}\\ \gamma^T \mathbf{1} &\leq \mathbf{b}\\ \mathbf{1}^T \gamma^T \mathbf{1} = m &\leq \min\{\|\mathbf{a}\|_1, \|\mathbf{b}\|_1\}\end{aligned}\end{align} \]其中 :
\(\mathbf{C_1}\) 是源空间中的度量成本矩阵
\(\mathbf{C_2}\) 是目标空间中的度量成本矩阵
\(\mathbf{p}\) 和 \(\mathbf{q}\) 是样本权重
L: 二次损失函数
\(\Omega\) 是熵正则化项, \(\Omega=\sum_{i,j} \gamma_{i,j}\log(\gamma_{i,j})\)
m 是要运输的质量量
GW问题的表述已在 [12]中提出,部分GW则在[29]中提出
- Parameters:
C1 (类似数组, 形状 (ns, ns)) – 源空间中的度量成本矩阵
C2 (类似数组, 形状 (nt, nt)) – 目标空间中的度量成本矩阵
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
q (数组类型, 形状 (nt,), 可选) – 目标空间中的分布。如果保持默认值 None,将采用均匀分布。
reg (float, 可选。默认为1。) – 熵正则化参数
m (float, 可选) – 要运输的质量量 (默认: \(\min\{\|\mathbf{p}\|_1, \|\mathbf{q}\|_1\}\))
loss_fun (str, 可选) – 求解器使用的损失函数,可以是‘square_loss’或‘kl_loss’。
G0 (数组类型, 形状 (ns, nt), 可选) – 运输矩阵的初始化
numItermax (int, 可选) – 最大迭代次数
tol (float, 可选) – 停止阈值在误差上 (>0)
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
log (bool, optional) – 如果为 True,则返回日志
verbose (bool, 可选) – 在迭代过程中打印信息
示例
>>> from ot.gromov import entropic_partial_gromov_wasserstein >>> import scipy as sp >>> a = np.array([0.25] * 4) >>> b = np.array([0.25] * 4) >>> x = np.array([1,2,100,200]).reshape((-1,1)) >>> y = np.array([3,2,98,199]).reshape((-1,1)) >>> C1 = sp.spatial.distance.cdist(x, x) >>> C2 = sp.spatial.distance.cdist(y, y) >>> np.round(entropic_partial_gromov_wasserstein(C1, C2, a, b, 1e2), 2) array([[0.12, 0.13, 0. , 0. ], [0.13, 0.12, 0. , 0. ], [0. , 0. , 0.25, 0. ], [0. , 0. , 0. , 0.25]]) >>> np.round(entropic_partial_gromov_wasserstein(C1, C2, a, b, 1e2,0.25), 2) array([[0.02, 0.03, 0. , 0.03], [0.03, 0.03, 0. , 0.03], [0. , 0. , 0.03, 0. ], [0.02, 0.02, 0. , 0.03]])
- Returns:
数学: gamma : (dim_a, dim_b) ndarray – 针对给定参数的最优运输矩阵
log (dict) – 仅当 log 为 True 时返回日志字典
参考文献
[12] Peyré, Gabriel, Marco Cuturi, 和 Justin Solomon, “Gromov-Wasserstein 平均化核与距离矩阵。” 国际机器学习会议 (ICML). 2016.
[29] Chapel, L., Alaya, M., Gasso, G. (2020). “部分最优传输及其在正负标签学习中的应用”。NeurIPS.
另请参见
ot.partial.partial_gromov_wasserstein精确的部分Gromov-Wasserstein
- ot.gromov.entropic_partial_gromov_wasserstein2(C1, C2, p=None, q=None, reg=1.0, m=None, loss_fun='square_loss', G0=None, numItermax=1000, tol=1e-07, symmetric=None, log=False, verbose=False)[源]
返回\((\mathbf{C_1}, \mathbf{p})\)和\((\mathbf{C_2}, \mathbf{q})\)之间的部分Gromov-Wasserstein差异
该函数解决以下优化问题:
\[PGW = \min_{\gamma} \quad \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l})\cdot \gamma_{i,j}\cdot\gamma_{k,l} + \mathrm{reg} \cdot\Omega(\gamma)\]\[ \begin{align}\begin{aligned}s.t. \ \gamma &\geq 0\\ \gamma \mathbf{1} &\leq \mathbf{a}\\ \gamma^T \mathbf{1} &\leq \mathbf{b}\\ \mathbf{1}^T \gamma^T \mathbf{1} = m &\leq \min\{\|\mathbf{a}\|_1, \|\mathbf{b}\|_1\}\end{aligned}\end{align} \]其中 :
\(\mathbf{C_1}\) 是源空间中的度量成本矩阵
\(\mathbf{C_2}\) 是目标空间中的度量成本矩阵
\(\mathbf{p}\) 和 \(\mathbf{q}\) 是样本权重
L: 用于考虑相似度矩阵之间不匹配的损失函数。
\(\Omega\) 是熵正则化项, \(\Omega=\sum_{i,j} \gamma_{i,j}\log(\gamma_{i,j})\)
m 是要运输的质量量
GW问题的表述已在 [12]中提出,部分GW则在[29]中提出
- Parameters:
C1 (ndarray, shape (ns, ns)) – 源空间中的度量成本矩阵
C2 (ndarray, shape (nt, nt)) – 目标空间中的度量成本矩阵
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
q (数组类型, 形状 (nt,), 可选) – 目标空间中的分布。如果保持默认值 None,将采用均匀分布。
reg (float) – 熵正则化参数
m (float, 可选) – 要运输的质量量 (默认: \(\min\{\|\mathbf{p}\|_1, \|\mathbf{q}\|_1\}\))
loss_fun (str, 可选) – 求解器使用的损失函数,可以是‘square_loss’或‘kl_loss’。
G0 (ndarray, shape (ns, nt), optional) – 运输矩阵的初始化
numItermax (int, 可选) – 最大迭代次数
tol (float, 可选) – 停止阈值在误差上 (>0)
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
log (bool, optional) – 如果为 True,则返回日志
verbose (bool, 可选) – 在迭代过程中打印信息
- Returns:
partial_gw_dist (float) – 部分Gromov-Wasserstein距离
log (dict) – 仅在log为True时返回的日志字典
示例
>>> from ot.gromov import entropic_partial_gromov_wasserstein2 >>> import scipy as sp >>> a = np.array([0.25] * 4) >>> b = np.array([0.25] * 4) >>> x = np.array([1,2,100,200]).reshape((-1,1)) >>> y = np.array([3,2,98,199]).reshape((-1,1)) >>> C1 = sp.spatial.distance.cdist(x, x) >>> C2 = sp.spatial.distance.cdist(y, y) >>> np.round(entropic_partial_gromov_wasserstein2(C1, C2, a, b, 1e2), 2) 3.75
参考文献
[12] Peyré, Gabriel, Marco Cuturi, 和 Justin Solomon, “Gromov-Wasserstein 平均化核与距离矩阵。” 国际机器学习会议 (ICML). 2016.
[29] Chapel, L., Alaya, M., Gasso, G. (2020). “部分最优传输及其在正负标签学习中的应用”。NeurIPS.
- ot.gromov.entropic_semirelaxed_fused_gromov_wasserstein(M, C1, C2, p=None, loss_fun='square_loss', symmetric=None, epsilon=0.1, alpha=0.5, G0=None, max_iter=10000.0, tol=1e-09, log=False, verbose=False, random_state=0)[源]
计算两个图之间的熵正则化半松弛FGW传输(参见 [48]),使用遵循KL几何的镜像下降算法进行估计。
\[ \begin{align}\begin{aligned}\mathbf{T}^* \in \mathop{\arg \min}_{\mathbf{T}} \quad (1 - \alpha) \langle \mathbf{T}, \mathbf{M} \rangle_F + \alpha \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]其中 :
\(\mathbf{M}\) 是特征之间的 (ns, nt) 计量成本矩阵
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{p}\) 源权重(总和为1)
L 是一个损失函数,用于考虑相似性矩阵之间的失配
注意
此函数与后端兼容,可以适用于所有兼容后端的数组。然而,条件梯度中的所有步骤都是不可微的。
用于解决该问题的算法是条件梯度,如[48]中所述
- Parameters:
M (类似数组, 形状 (ns, nt)) – 各域中特征之间的度量成本矩阵
C1 (类似数组, 形状 (ns, ns)) – 表示源空间中结构的度量成本矩阵
C2 (数组类型, 形状 (nt, nt)) – 在目标空间中代表结构的度量成本矩阵
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
loss_fun (str) – 求解器使用的损失函数,可以是'square_loss'或'kl_loss'。
epsilon (float) – 正则化项 >0
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
alpha (浮动, 可选) – 权衡参数 (0 < alpha < 1)
G0 (类数组 的 形状 (ns,nt) 或 字符串, 可选) – 如果 G0=None,求解器的初始传输计划为 \(\mathbf{p} \frac{\mathbf{1}_{nt}}{nt}^\top\)。如果 G0 是一个张量,它必须满足边际约束,并将作为求解器的初始传输使用。如果 G0 是一个字符串,它将被解释为一种方法,用于
ot.gromov.semirelaxed_init_plan(),取值为 “product”, “random_product”, “random”, “fluid”, “fluid_soft”, “spectral”, “spectral_soft”, “kmeans”, “kmeans_soft”。max_iter (int, 可选) – 最大迭代次数
tol (float, 可选) – 在运输计划上计算的错误停止阈值
log (bool, 可选) – 如果为真,则记录日志
verbose (bool, 可选) – 在迭代过程中打印信息
random_state (int, 可选) – 在随机初始化方法中使用的随机种子。
- Returns:
G (类数组,形状 (ns, nt)) – 给定参数的优化运输矩阵。
log (dict) – 只有在参数中 log==True 时才返回日志字典。
参考文献
[48] Cédric Vincent-Cuaz, Rémi Flamary, Marco Corneli, Titouan Vayer, Nicolas Courty. “半放松Gromov-Wasserstein散度及其在图上的应用” 国际学习表示会议(ICLR),2022。
- ot.gromov.entropic_semirelaxed_fused_gromov_wasserstein2(M, C1, C2, p=None, loss_fun='square_loss', symmetric=None, epsilon=0.1, alpha=0.5, G0=None, max_iter=10000.0, tol=1e-09, log=False, verbose=False, random_state=0)[源]
计算两个图之间的熵正则化半放松FGW散度(见 [48]), 使用跟随KL几何的镜像下降算法进行估计。
\[ \begin{align}\begin{aligned}\mathbf{srFGW}_{\alpha} = \min_{\mathbf{T}} \quad (1 - \alpha) \langle \mathbf{T}, \mathbf{M} \rangle_F + \alpha \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]其中 :
\(\mathbf{M}\) 是特征之间的 (ns, nt) 计量成本矩阵
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{p}\) 源权重(总和为1)
L 是一个损失函数,用于考虑相似性矩阵之间的失配
注意
此函数与后端兼容,可以适用于所有兼容后端的数组。然而,条件梯度中的所有步骤都是不可微的。
用于解决该问题的算法是条件梯度,如[48]中所述
- Parameters:
M (类似数组, 形状 (ns, nt)) – 各域中特征之间的度量成本矩阵
C1 (类数组, 形状 (ns, ns)) – 表示源空间结构的度量成本矩阵。
C2 (类数组, 形状 (nt, nt)) – 代表目标空间中结构的指标成本矩阵。
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
loss_fun (str, 可选) – 用于求解器的损失函数,可以是‘square_loss’或‘kl_loss’。
epsilon (float) – 正则化项 >0
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
alpha (浮动, 可选) – 权衡参数 (0 < alpha < 1)
G0 (类数组 的 形状 (ns,nt) 或 字符串, 可选) – 如果 G0=None,求解器的初始传输计划为 \(\mathbf{p} \frac{\mathbf{1}_{nt}}{nt}^\top\)。如果 G0 是一个张量,它必须满足边际约束,并将作为求解器的初始传输使用。如果 G0 是一个字符串,它将被解释为一种方法,用于
ot.gromov.semirelaxed_init_plan(),取值为 “product”, “random_product”, “random”, “fluid”, “fluid_soft”, “spectral”, “spectral_soft”, “kmeans”, “kmeans_soft”。max_iter (int, 可选) – 最大迭代次数
tol (float, 可选) – 在运输计划上计算的错误停止阈值
log (bool, 可选) – 如果为真,则记录日志
verbose (bool, 可选) – 在迭代过程中打印信息
random_state (int, 可选) – 在随机初始化方法中使用的随机种子。
- Returns:
srfgw-divergence (float) – 对于给定参数的半放松融合Gromov-Wasserstein发散。
log (dict) – 只有在参数中log==True时,才返回日志字典。
参考文献
[48] Cédric Vincent-Cuaz, Rémi Flamary, Marco Corneli, Titouan Vayer, Nicolas Courty. “半放松Gromov-Wasserstein散度及其在图上的应用” 国际学习表示会议(ICLR),2022。
- ot.gromov.entropic_semirelaxed_gromov_wasserstein(C1, C2, p=None, loss_fun='square_loss', epsilon=0.1, symmetric=None, G0=None, max_iter=10000.0, tol=1e-09, log=False, verbose=False, random_state=0)[源]
返回从 \((\mathbf{C_1}, \mathbf{p})\) 到 \(\mathbf{C_2}\) 的熵正则化半松弛 Gromov-Wasserstein 散度传输计划,该计划是使用遵循 KL 几何的镜像下降算法估计的。
该函数解决以下优化问题:
\[ \begin{align}\begin{aligned}\mathbf{T}^* \in \mathop{\arg \min}_\mathbf{T} \quad \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]其中:
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{p}\): 源空间中的分布
L: 损失函数,用于考虑相似矩阵之间的不匹配
注意
此函数与后端兼容,可以适用于所有兼容后端的数组。然而,条件梯度中的所有步骤都是不可微的。
- Parameters:
C1 (类似数组, 形状 (ns, ns)) – 源空间中的度量成本矩阵
C2 (类似数组, 形状 (nt, nt)) – 目标空间中的度量成本矩阵
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
loss_fun (str) – 求解器使用的损失函数,可以是'square_loss'或'kl_loss'。
epsilon (float) – 正则化项 >0
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
verbose (bool, 可选) – 在迭代过程中打印信息
G0 (类数组 的 形状 (ns,nt) 或 字符串, 可选) – 如果 G0=None,求解器的初始传输计划为 \(\mathbf{p} \frac{\mathbf{1}_{nt}}{nt}^\top\)。如果 G0 是一个张量,它必须满足边际约束,并将作为求解器的初始传输使用。如果 G0 是一个字符串,它将被解释为一种方法,用于
ot.gromov.semirelaxed_init_plan(),取值为 “product”, “random_product”, “random”, “fluid”, “fluid_soft”, “spectral”, “spectral_soft”, “kmeans”, “kmeans_soft”。max_iter (int, 可选) – 最大迭代次数
tol (float, 可选) – 在运输计划上计算的错误停止阈值
log (bool, 可选) – 如果为真,则记录日志
verbose – 在迭代过程中打印信息
random_state (int, 可选) – 在随机初始化方法中使用的随机种子。
- Returns:
G(类似数组,形状(ns,nt))–
在两个空间之间的耦合,目标是最小化:
\(\sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\)
log(dict)– 收敛信息和损失。
参考文献
[48] Cédric Vincent-Cuaz, Rémi Flamary, Marco Corneli, Titouan Vayer, Nicolas Courty. “半放松Gromov-Wasserstein散度及其在图上的应用” 国际学习表示会议(ICLR),2022。
- ot.gromov.entropic_semirelaxed_gromov_wasserstein2(C1, C2, p=None, loss_fun='square_loss', epsilon=0.1, symmetric=None, G0=None, max_iter=10000.0, tol=1e-09, log=False, verbose=False, random_state=0, **kwargs)[源]
返回从 \((\mathbf{C_1}, \mathbf{p})\) 到 \(\mathbf{C_2}\) 的熵正则化半放松的 Gromov-Wasserstein 散度,通过遵循 KL 几何的镜面下降算法进行估计。
该函数解决以下优化问题:
\[ \begin{align}\begin{aligned}\mathbf{srGW} = \min_{\mathbf{T}} \quad \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]其中:
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{p}\): 源空间中的分布
L: 用于考虑相似性矩阵之间不匹配的损失函数
请注意,当使用后端时,这个损失函数对矩阵 (C1, C2) 是可微的,但对权重 p 仍然不可微。.. note:: 这个函数是后端兼容的,并且将在数组上工作
来自所有兼容的后端。然而,条件梯度中的所有步骤都是不可微的。
- Parameters:
C1 (类似数组, 形状 (ns, ns)) – 源空间中的度量成本矩阵
C2 (类似数组, 形状 (nt, nt)) – 目标空间中的度量成本矩阵
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
loss_fun (str) – 求解器使用的损失函数,可以是'square_loss'或'kl_loss'。
epsilon (float) – 正则化项 >0
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
verbose (bool, 可选) – 在迭代过程中打印信息
G0 (类数组 的 形状 (ns,nt) 或 字符串, 可选) – 如果 G0=None,求解器的初始传输计划为 \(\mathbf{p} \frac{\mathbf{1}_{nt}}{nt}^\top\)。如果 G0 是一个张量,它必须满足边际约束,并将作为求解器的初始传输使用。如果 G0 是一个字符串,它将被解释为一种方法,用于
ot.gromov.semirelaxed_init_plan(),取值为 “product”, “random_product”, “random”, “fluid”, “fluid_soft”, “spectral”, “spectral_soft”, “kmeans”, “kmeans_soft”。max_iter (int, 可选) – 最大迭代次数
tol (float, 可选) – 在运输计划上计算的错误停止阈值
log (bool, 可选) – 如果为真,则记录日志
verbose – 在迭代过程中打印信息
random_state (int, 可选) – 在随机初始化方法中使用的随机种子。
- Returns:
srgw (float) – 半放松 Gromov-Wasserstein 散度
log (dict) – 收敛信息和耦合矩阵
参考文献
[48] Cédric Vincent-Cuaz, Rémi Flamary, Marco Corneli, Titouan Vayer, Nicolas Courty. “半放松Gromov-Wasserstein散度及其在图上的应用” 国际学习表示会议(ICLR),2022。
- ot.gromov.fgw_barycenters(N, Ys, Cs, ps=None, lambdas=None, alpha=0.5, fixed_structure=False, fixed_features=False, p=None, loss_fun='square_loss', armijo=False, symmetric=True, max_iter=100, tol=1e-09, stop_criterion='barycenter', warmstartT=False, verbose=False, log=False, init_C=None, init_X=None, random_state=None, **kwargs)[源]
返回具有节点特征的 S 可测网络的融合 Gromov-Wasserstein 重心 \((\mathbf{C}_s, \mathbf{Y}_s, \mathbf{p}_s)_{1 \leq s \leq S}\)(见 [24] 中的公式 (5)),估计使用来自条件梯度求解器的融合 Gromov-Wasserstein 传输。
该函数解决以下优化问题:
\[\mathbf{C}^*, \mathbf{Y}^* = \mathop{\arg \min}_{\mathbf{C}\in \mathbb{R}^{N \times N}, \mathbf{Y}\in \mathbb{Y}^{N \times d}} \quad \sum_s \lambda_s \mathrm{FGW}_{\alpha}(\mathbf{C}, \mathbf{C}_s, \mathbf{Y}, \mathbf{Y}_s, \mathbf{p}, \mathbf{p}_s)\]其中:
\(\mathbf{Y}_s\): 特征矩阵
\(\mathbf{C}_s\): 指标成本矩阵
\(\mathbf{p}_s\): 分布
- Parameters:
N (int) – 目标重心的期望样本数量
Ys (列表 的 类似数组的对象, 每个元素的形状为 (ns,d)) – 所有样本的特征
Cs (列表 的 类数组, 每个元素的形状为 (ns,ns)) – 所有样本的结构矩阵
ps (list 的 类数组, 每个元素的形状为 (ns,), 可选) – 所有样本的质量。 如果保持默认值为 None,将采用均匀分布。
lambdas (list of float, 可选) – S 空间的权重列表。 如果留空默认值为 None,则采用均匀权重。
alpha (float, 可选) – fgw 距离的 Alpha 参数。
fixed_structure (bool, optional) – 在更新过程中是否固定重心的结构。
fixed_features (bool, optional) – 在更新期间是否固定重心的特征
p (类数组对象, 形状 (N,), 可选) – 目标重心中的权重。 如果将其设置为默认值 None,则采用均匀分布。
loss_fun (str, 可选) – 用于求解器的损失函数,可以是‘square_loss’或‘kl_loss’
armijo (bool, 可选) – 如果为True,则通过armijo研究找到线搜索的步长。否则使用封闭形式。如果存在收敛问题,请使用False。
对称 (布尔值, 可选) – 结构是否假定为对称。默认值为 True。 如果设置为 True(分别为 False),C1 和 C2 将被假定为对称(分别为非对称)。
max_iter (int, 可选) – 最大迭代次数
tol (float, 可选) – 停止相对误差的阈值 (>0)
stop_criterion (str, 可选。默认值为'barycenter'。) – 停止标准取值为 [‘barycenter’, ‘loss’]。如果设置为‘barycenter’,则使用估计的重心的绝对范数变化。否则如果设置为‘loss’,则使用损失的相对变化。
warmstartT (bool, 可选) – 是否在连续的融合Gromov-Wasserstein传输问题中执行传输计划的热启动。
verbose (bool, optional) – 在迭代过程中打印信息。
log (bool, 可选) – 如果为真,则记录日志。
init_C (类数组, 形状 (N,N), 可选) – 重心结构矩阵的初始化。如果未设置,将使用随机初始化。
init_X (array-like, shape (N,d), optional) – 重心特征的初始化。如果未设置,则使用随机初始化。
random_state (int 或 RandomState 实例, 可选) – 固定种子以保证可重复性
- Returns:
X (类似数组,形状 (N, d)) – 重心的特征
C (类似数组,形状 (N, N)) – 重心的结构矩阵
log (dict) – 仅在 log=True 时返回。它包含以下键:
\(\mathbf{T}\): (N, ns) 运输矩阵的列表
\(\mathbf{p}\): (N,) 重心权重
\((\mathbf{M}_s)_s\): 重心特征与其他特征之间的所有距离矩阵 \((dist(\mathbf{X}, \mathbf{Y}_s))_s\) 形状 (N, ns)
用于收敛评估的值。
.. _references-fgw-barycenters
参考文献
[24] Vayer Titouan, Chapel Laetitia, Flamary Rémi, Tavenard Romain 和 Courty Nicolas “针对结构化数据的最优传输及其在图上的应用” 国际机器学习会议 (ICML)。2019.
- ot.gromov.format_partitioned_graph(C, p, part, rep_indices, F=None, M=None, alpha=1.0, nx=None)[源]
格式化一个带属性的图 \((\mathbf{C}, \mathbf{F}, \mathbf{p})\),结构矩阵 \((\mathbf{C} \in R^{n \times n}\),特征矩阵 \((\mathbf{F} \in R^{n \times d}\) 和节点相对重要性 \((\mathbf{p} \in \Sigma_n\),形成一个考虑分区和代表的划分带属性图 \(\mathcal{P} = \left{(\mathbf{P_{i}}, \mathbf{r_{i}})\right}_i\)。
- Parameters:
C (数组类似, 形状 (n, n)) – 结构矩阵。
p (类似数组, 形状 (n,),) – 节点分布。
part (类数组, 形状 (n,)) – 每个节点的分区分配数组。
rep_indices (列表 的 类数组 的 整数, 形状 (npart,)) – 每个分区的代表节点的索引,按分区标识符排序。
F (类似数组的, 形状 (n, d), 可选. (默认值为 None)) – 与图结构对齐的可选特征矩阵。
M (类数组, 形状 (n, n), 可选. (默认值为 None)) – 特征之间的可选成对相似度矩阵。
alpha (float, 可选。默认为1。) – 结构和特征之间在 \(]0, 1]\) 的权衡参数。 如果 alpha = 1,特征将被忽略。这个权衡会被考虑在输出的节点和代表之间的关系中。
nx (后端, 可选的) – POT 后端
- Returns:
CR (数组类型,形状 (npart, npart)) – 代表分区的结构矩阵。
list_R (npart数组的列表,) – 每个分区中代表与节点之间关系的列表。
list_p (npart数组的列表,) – 每个分区内节点分布的列表。
FR (数组类型,形状 (npart, d),如果 F != None.) – 代表的特征矩阵。
参考文献
[68] Chowdhury, S., Miller, D., & Needham, T. (2021). 量化的Gromov-Wasserstein。ECML PKDD 2021。Springer国际出版。
- ot.gromov.format_partitioned_samples(X, p, part, rep_indices, F=None, alpha=1.0, nx=None)[源]
格式化带属性的图 \((\mathbf{D}(\mathbf{X}), \mathbf{F}, \mathbf{p})\) 具有欧几里得结构矩阵 \((\mathbf{D}(\mathbf{X}) \in R^{n \times n}\), 特征矩阵 \((\mathbf{F} \in R^{n \times d}\) 和节点相对重要性 \((\mathbf{p} \in \Sigma_n\),形成一个分区带属性的图 考虑分区和代表 \(\mathcal{P} = \left{(\mathbf{P_{i}}, \mathbf{r_{i}})\right}_i\)。
- Parameters:
X (数组类似, 形状 (n, d)) – 结构矩阵。
p (类似数组, 形状 (n,),) – 节点分布。
part (类数组, 形状 (n,)) – 每个节点的分区分配数组。
rep_indices (列表 的 类数组 的 整数, 形状 (npart,)) – 每个分区的代表节点的索引,按分区标识符排序。
F (数组类型, 形状 (n, p), 可选。 (默认值为 None)) – 与样本对齐的可选特征矩阵。
alpha (float, 可选。默认为1。) – 结构和特征之间在 \(]0, 1]\) 的权衡参数。 如果 alpha = 1,特征将被忽略。这个权衡会被考虑在输出的节点和代表之间的关系中。
nx (后端, 可选的) – POT 后端
- Returns:
CR (数组类型,形状 (npart, npart)) – 代表分区的结构矩阵。
list_R (npart数组的列表,) – 每个分区中代表与节点之间关系的列表。
list_p (npart数组的列表,) – 每个分区内节点分布的列表。
FR (数组类型,形状 (npart, d),如果 F != None.) – 代表的特征矩阵。
参考文献
[68] Chowdhury, S., Miller, D., & Needham, T. (2021). 量化的Gromov-Wasserstein。ECML PKDD 2021。Springer国际出版。
- ot.gromov.fused_gromov_wasserstein(M, C1, C2, p=None, q=None, loss_fun='square_loss', symmetric=None, alpha=0.5, armijo=False, G0=None, log=False, max_iter=10000.0, tol_rel=1e-09, tol_abs=1e-09, **kwargs)[源]
返回融合的 Gromov-Wasserstein 传输,介于 \((\mathbf{C_1}, \mathbf{Y_1}, \mathbf{p})\) 和 \((\mathbf{C_2}, \mathbf{Y_2}, \mathbf{q})\) 之间,具有节点特征矩阵 \(\mathbf{Y_1}\) 和 \(\mathbf{Y_2}\) 之间的成对距离矩阵 \(\mathbf{M}\) (见 [24])。
该函数使用条件梯度法解决以下优化问题:
\[ \begin{align}\begin{aligned}\mathbf{T}^* \in\mathop{\arg\min}_\mathbf{T} \quad (1 - \alpha) \langle \mathbf{T}, \mathbf{M} \rangle_F + \alpha \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]其中:
\(\mathbf{M}\): 特征跨域的度量成本矩阵
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{p}\): 源空间中的分布
\(\mathbf{q}\): 目标空间中的分布
L: 损失函数,用于考虑相似性矩阵和特征矩阵之间的不匹配
\(\alpha\): 权衡参数
注意
此函数与后端兼容,可用于所有兼容后端的数组。但该算法使用C++ CPU后端,这可能导致在GPU数组上产生复制开销。
注意
共轭梯度求解器中的所有计算均使用numpy进行,以限制内存开销。
注意
此函数将把计算出的运输计划转换为提供的输入\(\mathbf{M}\)的数据类型。转换为整数张量可能会导致精度损失。如果不想要这种行为,请确保提供浮点输入。
- Parameters:
M (类似数组, 形状 (ns, nt)) – 各域中特征之间的度量成本矩阵
C1 (类似数组, 形状 (ns, ns)) – 表示源空间中结构的度量成本矩阵
C2 (数组类型, 形状 (nt, nt)) – 在目标空间中代表结构的度量成本矩阵
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
q (数组类型, 形状 (nt,), 可选) – 目标空间中的分布。如果保持默认值 None,将采用均匀分布。
loss_fun (str, 可选) – 用于求解器的损失函数
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
alpha (浮动, 可选) – 权衡参数 (0 < alpha < 1)
armijo (bool, 可选) – 如果为真,则通过armijo研究找到线搜索的步长。否则使用封闭形式。如果存在收敛问题,请使用假。
G0 (类似数组, 形状 (ns,nt), 可选) – 如果为 None,求解器的初始运输计划为 pq^T。否则 G0 必须满足边际约束,并将作为求解器的初始运输。
log (bool, 可选) – 如果为真,则记录日志
max_iter (int, 可选) – 最大迭代次数
tol_rel (float, 可选) – 相对误差的停止阈值 (>0)
tol_abs (float, 可选) – 绝对误差停止阈值 (>0)
**kwargs (dict) – 参数可以直接传递给 ot.optim.cg 求解器
- Returns:
T(类似数组,形状(ns,nt))– 给定参数的最佳运输矩阵。
log(dict)– 仅在参数中log==True时返回日志字典。
参考文献
[24] Vayer Titouan, Chapel Laetitia, Flamary Rémi, Tavenard Romain 和 Courty Nicolas “结构化数据的最优传输及其在图上的应用”,国际机器学习大会 (ICML)。 2019.
[47] Chowdhury, S., & Mémoli, F. (2019). 网络之间的Gromov–Wasserstein距离与稳定网络不变量。 信息与推理:IMA期刊, 8(4), 757-787.
- ot.gromov.fused_gromov_wasserstein2(M, C1, C2, p=None, q=None, loss_fun='square_loss', symmetric=None, alpha=0.5, armijo=False, G0=None, log=False, max_iter=10000.0, tol_rel=1e-09, tol_abs=1e-09, **kwargs)[源]
返回 \((\mathbf{C_1}, \mathbf{Y_1}, \mathbf{p})\) 和 \((\mathbf{C_2}, \mathbf{Y_2}, \mathbf{q})\) 之间的融合 Gromov-Wasserstein 距离,节点特征矩阵 \(\mathbf{Y_1}\) 和 \(\mathbf{Y_2}\) 之间的成对距离矩阵 \(\mathbf{M}\) (见 [24])。
该函数使用条件梯度法解决以下优化问题:
\[ \begin{align}\begin{aligned}\mathbf{FGW} = \mathop{\min}_\mathbf{T} \quad (1 - \alpha) \langle \mathbf{T}, \mathbf{M} \rangle_F + \alpha \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]其中:
\(\mathbf{M}\): 特征跨域的度量成本矩阵
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{p}\): 源空间中的分布
\(\mathbf{q}\): 目标空间中的分布
L: 损失函数,用于考虑相似性矩阵和特征矩阵之间的不匹配
\(\alpha\): 权衡参数
注意,当使用后端时,这个损失函数对于矩阵 (C1, C2, M) 和权重 (p, q) 是可微的,针对二次损失使用来自 [38]_ 的梯度。
注意
此函数与后端兼容,可用于所有兼容后端的数组。但该算法使用C++ CPU后端,这可能导致在GPU数组上产生复制开销。
注意
共轭梯度求解器中的所有计算均使用numpy进行,以限制内存开销。
注意
此函数将把计算出的运输计划转换为提供的输入\(\mathbf{M}\)的数据类型。转换为整数张量可能会导致精度损失。如果不想要这种行为,请确保提供浮点输入。
- Parameters:
M (类似数组, 形状 (ns, nt)) – 各域中特征之间的度量成本矩阵
C1 (类数组, 形状 (ns, ns)) – 表示源空间结构的度量成本矩阵。
C2 (类数组, 形状 (nt, nt)) – 代表目标空间中结构的指标成本矩阵。
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
q (数组类型, 形状 (nt,), 可选) – 目标空间中的分布。如果保持默认值 None,将采用均匀分布。
loss_fun (str, 可选) – 求解器使用的损失函数。
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
alpha (浮动, 可选) – 权衡参数 (0 < alpha < 1)
armijo (bool, 可选) – 如果为True,则通过armijo研究找到线搜索的步长。否则使用封闭形式。如果存在收敛问题,请使用False。
G0 (类似数组, 形状 (ns,nt), 可选) – 如果为 None,求解器的初始运输计划为 pq^T。否则 G0 必须满足边际约束,并将作为求解器的初始运输。
log (bool, 可选) – 如果为真,则记录日志。
max_iter (int, 可选) – 最大迭代次数
tol_rel (float, 可选) – 相对误差的停止阈值 (>0)
tol_abs (float, 可选) – 绝对误差停止阈值 (>0)
**kwargs (dict) – 参数可以直接传递给 ot.optim.cg 求解器。
- Returns:
fgw-distance (float) – 给定参数的融合Gromov-Wasserstein距离。
log (dict) – 仅当参数中log==True时返回日志字典。
参考文献
[24] Vayer Titouan, Chapel Laetitia, Flamary Rémi, Tavenard Romain 和 Courty Nicolas “针对结构化数据的最优传输及其在图上的应用” 国际机器学习会议 (ICML)。2019.
[38] C. Vincent-Cuaz, T. Vayer, R. Flamary, M. Corneli, N. Courty, 在线图字典学习, 国际机器学习会议 (ICML), 2021.
[47] Chowdhury, S., & Mémoli, F. (2019). 网络之间的Gromov–Wasserstein距离与稳定网络不变量。 信息与推理:IMA期刊, 8(4), 757-787.
- ot.gromov.fused_gromov_wasserstein_dictionary_learning(Cs, Ys, D, nt, alpha, reg=0.0, ps=None, q=None, epochs=20, batch_size=32, learning_rate_C=1.0, learning_rate_Y=1.0, Cdict_init=None, Ydict_init=None, projection='nonnegative_symmetric', use_log=False, tol_outer=1e-05, tol_inner=1e-05, max_iter_outer=20, max_iter_inner=200, use_adam_optimizer=True, verbose=False, random_state=None, **kwargs)[源]
从S个属性结构的列表中推导融合的Gromov-Wasserstein线性字典 \(\{ (\mathbf{C_{dict}[d]}, \mathbf{Y_{dict}[d]}, \mathbf{q}) \}_{d \in [D]}\) \(\{ (\mathbf{C_s}, \mathbf{Y_s},\mathbf{p_s}) \}_s\)
\[\begin{split}\min_{\mathbf{C_{dict}},\mathbf{Y_{dict}}, \{\mathbf{w_s}\}_{s}} \sum_{s=1}^S FGW_{2,\alpha}(\mathbf{C_s}, \mathbf{Y_s}, \sum_{d=1}^D w_{s,d}\mathbf{C_{dict}[d]},\sum_{d=1}^D w_{s,d}\mathbf{Y_{dict}[d]}, \mathbf{p_s}, \mathbf{q}) \\ - 规\| \mathbf{w_s} \|_2^2\end{split}\]使得 \(\forall s \leq S\) :
\(\mathbf{w_s}^\top \mathbf{1}_D = 1\)
\(\mathbf{w_s} \geq \mathbf{0}_D\)
其中:
\(\forall s \leq S, \mathbf{C_s}\) 是一个 (ns,ns) 的对称相似度矩阵,大小为 ns。
\(\forall s \leq S, \mathbf{Y_s}\) 是一个可变大小为 ns 和固定维度 d 的 (ns,d) 特征矩阵。
\(\mathbf{C_{dict}}\) 是一个大小为 (D, nt, nt) 的 D 个配对相似度矩阵的张量。
\(\mathbf{Y_{dict}}\) 是一个 (D, nt, d) 张量,表示固定大小 nt 和固定维度 d 的 D 特征矩阵。
\(\forall s \leq S, \mathbf{p_s}\) 是与 \(\mathbf{C_s}\) 对应的源分布
\(\mathbf{q}\) 是分配给嵌入空间中每个结构的目标分布。
\(\alpha\) 是融合Gromov-Wasserstein的权衡参数
reg是正则化系数。
用于估计属性图字典原子的随机算法,如[38]_中所提议的
- Parameters:
Cs (列表 的 S 对称数组, 形状 (ns, ns)) – 可变大小 (ns,ns) 的度量/图成本矩阵的列表。
Ys (列表 由 S 类数组, 形状 (ns, d)) – 具有固定 d 的可变大小特征矩阵列表 (ns,d)。
D (int) – 要学习的字典原子的数量
nt (int) – 每个字典原子内的样本数量
alpha (float) – Fused Gromov-Wasserstein的权衡参数
reg (float, optional) – 用于促进w稀疏性的负二次正则化系数。默认值为0。
ps (列表 of S 类数组, 形状 (ns,), 可选) – 每个源空间 C 的 Cs 中的分布。默认值为 None,表示均匀分布。
q (类似数组, 形状 (nt,), 可选) – 嵌入空间中的分布,其结构将被学习。默认值为 None,表示均匀分布。
epochs (int, 可选) – 用于学习字典的轮次数量。默认值为32。
batch_size (int, 可选) – 字典每次随机梯度更新的批量大小。如果提供的 batch_size 大于数据集大小,则设置为数据集大小。默认值为 32。
learning_rate_C (float, 可选) – 用于Cdict的随机梯度下降的学习率。默认值为1。
learning_rate_Y (浮点数, 可选) – 用于Ydict上随机梯度下降的学习率。默认值为1。
Cdict_init (list 的 D 数组状,形状为 (nt, nt), 可选) – 用于初始化字典结构 Cdict。 如果设置为 None(默认),字典将随机初始化。 否则 Cdict 必须具有形状 (D, nt, nt),即与提供的形状特征匹配。
Ydict_init (list of D 类似数组,形状为 (nt, d), 可选) – 用于初始化字典特征 Ydict。 如果设置为 None,字典特征将随机初始化。 否则 Ydict 必须具有形状 (D, nt, d),其中 d 是输入 Ys 的特征维度,并且还必须与提供的特征形状匹配。
投影 (字符串, 可选) – 如果“非负”和/或“对称”在投影中,则将在字典的每个随机更新时执行相应的投影 否则原子集合为\(R^{nt * nt}\)。默认值为“非负_对称”
log (bool, optional) – 如果设置为 True,将跟踪按批次和轮次的损失演变。默认值为 False。
use_adam_optimizer (bool, 可选) – 如果设置为 True,将使用默认设置的 Adam 优化器作为自适应学习率策略。 否则执行带有固定学习率的 SGD。默认值为 True.
tol_outer (浮点数, 可选) – BCD算法的求解精度,通过连续损失的绝对相对误差来衡量。默认值为\(10^{-5}\)。
tol_inner (float, 可选) – 用于获取在固定运输下的最优 w 的共轭梯度算法的求解器精度,按连续损失的绝对相对误差进行测量。默认值为 \(10^{-5}\).
max_iter_outer (int, 可选) – BCD的最大迭代次数。默认值为20。
max_iter_inner (int, optional) – 共轭梯度法的最大迭代次数。默认值为 200。
详细输出 (布尔值, 可选) – 每个纪元打印重构损失。默认值为 False。
random_state (int, RandomState 实例 或 None, 默认=None) – 决定随机数生成。在多次函数调用中传递一个整数以获得可重复的输出。
- Returns:
Cdict_best_state (D array-like, shape (D,nt,nt)) – 组成字典的度量/图成本矩阵。导致最佳损失的字典将在一个时期内被保存并返回。
Ydict_best_state (D array-like, shape (D,nt,d)) – 组成字典的特征矩阵。导致最佳损失的字典将在一个时期内被保存并返回。
log (dict) – 如果use_log为True,包含按批次和时期变化的损失。
参考文献
[38] C. Vincent-Cuaz, T. Vayer, R. Flamary, M. Corneli, N. Courty, 在线图字典学习, 国际机器学习会议 (ICML), 2021.
- ot.gromov.fused_gromov_wasserstein_linear_unmixing(C, Y, Cdict, Ydict, alpha, reg=0.0, p=None, q=None, tol_outer=1e-05, tol_inner=1e-05, max_iter_outer=20, max_iter_inner=200, symmetric=True, **kwargs)[源]
返回对属性字典原子的融合Gromov-Wasserstein线性解混合 \((\mathbf{C},\mathbf{Y},\mathbf{p})\)
\[\min_{\mathbf{w}} FGW_{2,\alpha}(\mathbf{C},\mathbf{Y}, \sum_{d=1}^D w_d\mathbf{C_{dict}[d]},\sum_{d=1}^D w_d\mathbf{Y_{dict}[d]}, \mathbf{p}, \mathbf{q}) - reg \| \mathbf{w} \|_2^2\]这样的, \(\forall s \leq S\) :
\(\mathbf{w_s}^\top \mathbf{1}_D = 1\)
\(\mathbf{w_s} \geq \mathbf{0}_D\)
其中:
\(\mathbf{C}\) 是一个(ns,ns)大小不固定的成对相似度矩阵。
\(\mathbf{Y}\) 是一个可变大小 ns 和固定维度 d 的 (ns,d) 特征矩阵。
\(\mathbf{C_{dict}}\) 是一个大小为 (D, nt, nt) 的 D 个配对相似度矩阵的张量。
\(\mathbf{Y_{dict}}\) 是一个 (D, nt, d) 张量,表示固定大小 nt 和固定维度 d 的 D 特征矩阵。
\(\mathbf{p}\) 是对应于 \(\mathbf{C_s}\) 的源分布
\(\mathbf{q}\) 是分配给嵌入空间中每个结构的目标分布。
\(\alpha\) 是融合Gromov-Wasserstein的权衡参数
reg是正则化系数。
用于解决问题的算法是块坐标下降法,如[38]_中讨论的,第6个算法。
- Parameters:
C (类数组, 形状 (ns, ns)) – 评价/图形成本矩阵。
Y (类数组, 形状 (ns, d)) – 特征矩阵。
Cdict (D 数组类似, 形状 (D,nt,nt)) – 组成字典的度量/图成本矩阵,用于嵌入 (C,Y)。
Ydict (D 类数组, 形状 (D,nt,d)) – 组成用于嵌入 (C,Y) 的字典的特征矩阵。
alpha (float,) – Fused Gromov-Wasserstein 的权衡参数。
reg (float, optional) – 用于促进w稀疏性的负二次正则化系数。默认值为0。
p (类似数组, 形状 (ns,), 可选) – 源空间 C 中的分布。默认值为 None,表示均匀分布。
q (类似数组, 形状 (nt,), 可选) – 字典所示空间中的分布。默认为 None,对应均匀分布。
tol_outer (float, 可选) – BCD算法的求解精度。
tol_inner (浮点数, 可选) – 用于在固定传输下获得最佳 w 的共轭梯度算法的求解器精度。默认值为 \(10^{-5}\)。
max_iter_outer (int, 可选) – BCD的最大迭代次数。默认值为20。
max_iter_inner (int, optional) – 共轭梯度法的最大迭代次数。默认值为 200。
- Returns:
w (类数组,形状 (D,)) – 将 (C,Y,p) 的融合 Gromov-Wasserstein 线性解混合到字典的跨度上。
Cembedded (类数组,形状 (nt,nt)) – \((\mathbf{C},\mathbf{Y}, \mathbf{p})\) 在字典上的嵌入结构,\(\sum_d w_d\mathbf{C_{dict}[d]}\)。
Yembedded (类数组,形状 (nt,d)) – \((\mathbf{C},\mathbf{Y}, \mathbf{p})\) 在字典上的嵌入特征,\(\sum_d w_d\mathbf{Y_{dict}[d]}\)。
T (类数组 (ns,nt)) – 在 \((\mathbf{C},\mathbf{p})\) 和 \((\sum_d w_d\mathbf{C_{dict}[d]}, \sum_d w_d\mathbf{Y_{dict}[d]},\mathbf{q})\) 之间的融合 Gromov-Wasserstein 运输计划。
current_loss (浮点数) – 重建误差
参考文献
[38] C. Vincent-Cuaz, T. Vayer, R. Flamary, M. Corneli, N. Courty, 在线图字典学习, 国际机器学习会议 (ICML), 2021.
- ot.gromov.fused_unbalanced_across_spaces_cost(M_linear, data, tuple_pxy_samp, tuple_pxy_feat, pi_samp, pi_feat, hyperparams, divergence, reg_type, nx)[源]
返回两个空间之间的融合不平衡跨空间散度
- Parameters:
M_linear (tuple 的 数组) – 一对对应于 Wasserstein 项的成本矩阵,涉及样本和特征的耦合
data (tuple 数组的 元组) – 输入空间的元组,表示为矩阵
tuple_pxy_samp (tuple of arrays) – 关于样本耦合的边际放松和正则化项的参考测量的元组
tuple_pxy_feat (tuple of arrays) – 参考度量的元组,在特征耦合的边际松弛和正则化项中
pi_samp (类似数组) – 采样耦合
pi_feat (类数组) – 特征耦合
超参数 (元组 of 浮点数) – 边际松弛和正则化项的超参数 在融合的不平衡跨域发散中
发散 (字符串, 默认 = "kl") – Bregman 发散,选择“kl”(Kullback-Leibler 发散)或“l2”(半平方 L2 发散)
reg_type (string,) –
融合不平衡跨领域散度中的正则化项类型
reg_type = “joint” 对应于 FUGW
reg_type = “independent” 对应于 UCOOT
nx (backend, 可选) – 如果默认值为 None,将进行后端测试。
- Return type:
两个空间之间融合的不平衡跨空间散度
- ot.gromov.fused_unbalanced_across_spaces_divergence(X, Y, wx_samp=None, wx_feat=None, wy_samp=None, wy_feat=None, reg_marginals=10, epsilon=0, reg_type='joint', divergence='kl', unbalanced_solver='sinkhorn', alpha=0, M_samp=None, M_feat=None, rescale_plan=True, init_pi=None, init_duals=None, max_iter=100, tol=1e-07, max_iter_ot=500, tol_ot=1e-07, log=False, verbose=False, **kwargs_solver)[源]
计算配备有行和列分布的两个矩阵之间的融合不平衡交叉空间散度。我们考虑两种矩阵的情况:
在Gromov-Wasserstein设置中的(平方)相似度矩阵,
其行和列代表样本。
在共同最优运输设置中的任意大小矩阵,
行表示样本,列表示对应的特征/维度。
更准确地说,这个函数返回样本和特征的运输计划,介于 \((\mathbf{X}, \mathbf{w}_{xs}, \mathbf{w}_{xf})\) 和 \((\mathbf{Y}, \mathbf{w}_{ys}, \mathbf{w}_{yf})\)之间, 通过使用块坐标下降算法解决以下问题:
\[\begin{split}\mathop{\arg \min}_{\mathbf{P}, \mathbf{Q}} &\quad \sum_{i,j,k,l} (\mathbf{X}_{i,k} - \mathbf{Y}_{j,l})^2 \mathbf{P}_{i,j} \mathbf{Q}_{k,l} \\ &+ \rho_s \mathbf{Div}(\mathbf{P}_{\# 1} \mathbf{Q}_{\# 1}^T | \mathbf{w}_{xs} \mathbf{w}_{ys}^T) + \rho_f \mathbf{Div}(\mathbf{P}_{\# 2} \mathbf{Q}_{\# 2}^T | \mathbf{w}_{xf} \mathbf{w}_{yf}^T) \\ &+ \alpha_s \sum_{i,j} \mathbf{P}_{i,j} \mathbf{M^{(s)}}_{i, j} + \alpha_f \sum_{k, l} \mathbf{Q}_{k,l} \mathbf{M^{(f)}}_{k, l} + \mathbf{Reg}(\mathbf{P}, \mathbf{Q})\end{split}\]在哪里:
\(\mathbf{X}\): 源输入(任意大小)矩阵
\(\mathbf{Y}\): 目标输入(任意大小)矩阵
\(\mathbf{M^{(s)}}\): 额外的样本矩阵
\(\mathbf{M^{(f)}}\): 额外的特征矩阵
\(\mathbf{w}_{xs}\): 源空间中样本的分布
\(\mathbf{w}_{xf}\): 源空间中特征的分布
\(\mathbf{w}_{ys}\): 目标空间中样本的分布
\(\mathbf{w}_{yf}\): 目标空间中特征的分布
\(\mathbf{Div}\): Kullback-Leibler 散度或半平方 L2 范数。
\(\mathbf{Reg}\): 样本和特征耦合的正则化器。
- We consider two types of regularizer:
在不平衡共优化运输中使用的独立正则化
\[\mathbf{Reg}(\mathbf{P}, \mathbf{Q}) = \varepsilon_s \mathbf{Div}(\mathbf{P} | \mathbf{w}_{xs} \mathbf{w}_{ys}^T) + \varepsilon_f \mathbf{Div}(\mathbf{Q} | \mathbf{w}_{xf} \mathbf{w}_{yf}^T)\]在融合不平衡Gromov-Wasserstein中使用的联合正则化
\[\mathbf{Reg}(\mathbf{P}, \mathbf{Q}) = \varepsilon \mathbf{Div}(\mathbf{P} \otimes \mathbf{Q} | (\mathbf{w}_{xs} \mathbf{w}_{ys}^T) \otimes (\mathbf{w}_{xf} \mathbf{w}_{yf}^T) )\]
注意
此函数允许epsilon为零。在这种情况下,unbalanced_method必须是“mm”或“lbfgsb”。
- Parameters:
X ((n_sample_x, n_feature_x) 数组-like, 浮点数) – 源输入矩阵。
Y ((n_sample_y, n_feature_y) 类似数组, 浮点数) – 目标输入矩阵。
wx_samp ((n_sample_x, ) array-like, float, 可选 (默认 = None)) – 在矩阵 X 的行(样本)上分配的直方图。默认情况下是均匀分布。
wx_feat ((n_feature_x, ) array-like, float, optional (default = None)) – 分配给矩阵 X 的列(特征)的直方图。默认情况下为均匀分布。
wy_samp ((n_sample_y, ) 类数组, 浮点数, 可选 (默认 = None)) – 分配给矩阵 Y 的行(样本)的直方图。默认情况下为均匀分布。
wy_feat ((n_feature_y, ) array-like, float, optional (default = None)) – 指定在矩阵 Y 的列(特征)上的直方图。默认情况下为均匀分布。
reg_marginals (float 或 可索引对象 长度为 1 或 2) – 样本和特征耦合的边际松弛项。如果 reg_marginals 是标量或长度为 1 的可索引对象,则相同的值应用于两个边际松弛。
epsilon (标量 或 可索引对象,长度为 2, 浮点数 或 整数, 可选(默认值 = 0)) – 用于样本和特征耦合的熵逼近的正则化参数。 允许epsilon包含0。在这种情况下,默认使用MM求解器而不是Sinkhorn求解器。如果epsilon是标量,则相同的值应用于样本和特征耦合的正则化。
reg_type (string, optional) –
如果 reg_type = “joint”: 则对耦合使用联合正则化。
如果 reg_type = “independent”: 则对耦合使用独立正则化。
发散 (字符串, 可选 (默认 = "kl")) –
如果 divergence = “kl”,则 Div 是 Kullback-Leibler 发散。
如果 divergence = “l2”,则 Div 是一半的平方欧几里得范数。
unbalanced_solver (字符串, 可选 (默认 = "sinkhorn")) –
用于不平衡OT子例程的求解器。
如果 divergence = “kl”,那么 unbalanced_solver 可以是:“sinkhorn”、“sinkhorn_log”、“mm”、“lbfgsb”
如果 divergence = “l2”,那么 unbalanced_solver 可以是“mm”、“lbfgsb”
alpha (标量 或 可索引对象,长度为2, 浮点数 或 整数, 可选 (默认 = 0)) – 线性项相对于样本和特征耦合的系数参数。 如果alpha是标量,那么相同的alpha将应用于两个线性项。
M_samp ((n_sample_x, n_sample_y), float, 可选 (默认 = None)) – 与样本耦合中Wasserstein线性项相关的样本矩阵。
M_feat ((n_feature_x, n_feature_y), float, 可选 (默认 = None)) – 与特征耦合上的Wasserstein线性项相关的特征矩阵。
rescale_plan (boolean, 可选 (默认为 True)) – 如果为 True,则在每个 BCD 迭代中重新缩放样本和特征传输计划,使它们始终具有相等的质量。
init_pi (元组 包含 两个矩阵,大小为 (n_sample_x, n_sample_y) 和) – (n_feature_x, n_feature_y), 可选(默认值 = None)。 样本和特征耦合的初始化。 默认情况下为均匀分布。
init_duals (元组 包含 两个元组 ((n_sample_x, ), (n_sample_y, )) 和 ((n_feature_x, ), (n_feature_y, )), 可选的 (默认 = None).) – 在使用Sinkhorn算法时样本和特征对偶向量的初始化。默认情况下为零向量。
max_iter (int, 可选 (默认 = 100)) – 块坐标下降 (BCD) 迭代的次数。
tol (float, 可选 (默认 = 1e-7)) – BCD 方案的容忍度。如果当前和之前样本耦合之间的 L1-范数低于这个阈值,则停止 BCD 方案。
max_iter_ot (int, 可选 (默认 = 100)) – 在每次BCD迭代中,解决两个不平衡最优运输问题的迭代次数。
tol_ot (float, 可选的 (默认 = 1e-7)) – 每个BCD迭代中两个不平衡最优传输问题的不平衡求解器的容差。
log (bool, optional (default = False)) – 如果为真,则记录成本和四个对偶向量,包括来自样本的两个和来自特征耦合的两个。
verbose (bool, 可选 (默认 = False)) – 如果为真,则在每个 eval_bcd 的倍数迭代时打印 COOT 成本。
- Returns:
pi_samp ((n_sample_x, n_sample_y) array-like, float) – 样本耦合矩阵。
pi_feat ((n_feature_x, n_feature_y) array-like, float) – 特征耦合矩阵。
log (dictionary, optional) –
如果 log 为 True,则返回该内容。键包括:
- errorarray-like, float
当前样本耦合和前一个样本耦合之间的 L1 范数列表。
- duals_sample(n_sample_x, n_sample_y) tuple, float
解决 OT 问题时相对于样本耦合的对偶向量对。
- duals_feature(n_feature_x, n_feature_y) tuple, float
解决 OT 问题时相对于特征耦合的对偶向量对。
- linearfloat
成本的线性部分。
- ucootfloat
总成本。
- backend
所有输入数组的适当后端
- ot.gromov.fused_unbalanced_gromov_wasserstein(Cx, Cy, wx=None, wy=None, reg_marginals=10, epsilon=0, divergence='kl', unbalanced_solver='mm', alpha=0, M=None, init_duals=None, init_pi=None, max_iter=100, tol=1e-07, max_iter_ot=500, tol_ot=1e-07, log=False, verbose=False, **kwargs_solve)[源]
计算两个相似度矩阵之间融合非平衡 Gromov-Wasserstein (FUGW) 的下界。实际上,这个下界与真实的 FUGW 交替使用。
更准确地说,该函数返回 \((\mathbf{C^X}, \mathbf{w_X})\) 和 \((\mathbf{C^Y}, \mathbf{w_Y})\) 之间的运输计划, 通过使用块坐标下降算法解决以下问题:
\[\begin{split}\mathop{\arg \min}_{\substack{\mathbf{P}, \mathbf{Q}: \\ mass(P) = mass(Q)}} &\quad \sum_{i,j,k,l} (\mathbf{C^X}_{i,k} - \mathbf{C^Y}_{j,l})^2 \mathbf{P}_{i,j} \mathbf{Q}_{k,l} + \frac{\alpha}{2} \sum_{i,j} (\mathbf{P}_{i,j} + \mathbf{Q}_{i,j}) \mathbf{M}_{i, j} \\ &+ \rho_1 \mathbf{Div}(\mathbf{P}_{\# 1} \mathbf{Q}_{\# 1}^T | \mathbf{w_X} \mathbf{w_X}^T) + \rho_2 \mathbf{Div}(\mathbf{P}_{\# 2} \mathbf{Q}_{\# 2}^T | \mathbf{w_Y} \mathbf{w_Y}^T) \\ &+ \varepsilon \mathbf{Div}(\mathbf{P} \otimes \mathbf{Q} | (\mathbf{w_X} \mathbf{w_Y}^T) \otimes (\mathbf{w_X} \mathbf{w_Y}^T))\end{split}\]在哪里:
\(\mathbf{C^X}\): 源相似度矩阵
\(\mathbf{C^Y}\): 目标相似度矩阵
\(\mathbf{M}\): 与Wasserstein项对应的样本矩阵
\(\mathbf{w_X}\): 源空间中样本的分布
\(\mathbf{w_Y}\): 目标空间中样本的分布
\(\mathbf{Div}\): Kullback-Leibler 散度或半平方 L2 范数。
注意
此函数允许epsilon为零。在这种情况下,unbalanced_method必须是“mm”或“lbfgsb”。
- Parameters:
Cx ((n_sample_x, n_feature_x) array-like, float) – 源相似度矩阵。
Cy ((n_sample_y, n_feature_y) 类似数组, 浮点数) – 目标相似度矩阵。
wx ((n_sample_x, ) 数组类似, 浮点数, 可选 (默认 = None)) – 分配给矩阵 Cx 的行(样本)的直方图。默认情况下为均匀分布。
wy ((n_sample_y, ) 数组-like, 浮点数, 可选 (默认 = None)) – 分配在矩阵 Cy 的行(样本)上的直方图。默认是均匀分布。
reg_marginals (float 或 可索引对象 长度为 1 或 2) – 样本和特征耦合的边际松弛项。如果 reg_marginals 是标量或长度为 1 的可索引对象,则相同的值应用于两个边际松弛。
epsilon (标量, 浮点数 或 整数, 可选 (默认 = 0)) – 样本和特征耦合的熵近似的正则化参数。 允许epsilon包含0。在这种情况下,默认使用MM求解器 而不是Sinkhorn求解器。如果epsilon是标量,那么相同的值将应用于 样本和特征耦合的正则化。
发散 (字符串, 可选 (默认 = "kl")) –
如果 divergence = “kl”,则 Div 是 Kullback-Leibler 发散。
如果 divergence = “l2”,则 Div 是一半的平方欧几里得范数。
unbalanced_solver (字符串, 可选 (默认 = "sinkhorn")) –
用于不平衡OT子例程的求解器。
如果 divergence = “kl”,那么 unbalanced_solver 可以是:“sinkhorn”、“sinkhorn_log”、“mm”、“lbfgsb”
如果 divergence = “l2”,那么 unbalanced_solver 可以是“mm”、“lbfgsb”
alpha (标量, 浮点数 或 整数, 可选 (默认 = 0)) – 与样本和特征耦合相关的线性项的系数参数。如果 alpha 是标量,则相同的 alpha 应用于两个线性项。
M ((n_sample_x, n_sample_y), float, 可选 (默认 = None)) – 与样本耦合上的Wasserstein线性项相关的样本矩阵。
init_pi ((n_sample_x, n_sample_y) 类数组, 可选 (默认 = None)) – 样本耦合的初始化。默认 = \(w_X w_Y^T\)。
init_duals (tuple 的 向量 ((n_sample_x, ), (n_sample_y, )), 可选 (默认为 None)。) – 在使用 Sinkhorn 算法时初始化样本和特征的对偶向量。默认情况下为零向量。
max_iter (int, 可选 (默认 = 100)) – 块坐标下降 (BCD) 迭代的次数。
tol (float, 可选 (默认 = 1e-7)) – BCD 方案的容忍度。如果当前和之前样本耦合之间的 L1-范数低于这个阈值,则停止 BCD 方案。
max_iter_ot (int, 可选 (默认 = 100)) – 在每次BCD迭代中,解决两个不平衡最优运输问题的迭代次数。
tol_ot (float, 可选的 (默认 = 1e-7)) – 每个BCD迭代中两个不平衡最优传输问题的不平衡求解器的容差。
log (bool, optional (default = False)) – 如果为真,则记录成本和四个对偶向量,包括来自样本的两个和来自特征耦合的两个。
verbose (bool, 可选 (默认 = False)) – 如果为真,则在每个 eval_bcd 的倍数迭代时打印 COOT 成本。
- Returns:
pi_samp ((n_sample_x, n_sample_y) array-like, float) – 样本耦合矩阵。 实际上,我们将这个矩阵用作 FUGW 的解。
pi_samp2 ((n_sample_x, n_sample_y) array-like, float) – 第二个样本耦合矩阵。 实际上,我们通常忽略这个输出。
log (dictionary, optional) –
如果 log 为 True,则返回。键包括:
- errorarray-like, float
当前样本耦合与上一个样本耦合之间的 L1 范数列表。
- duals(n_sample_x, n_sample_y)-tuple, float
解决 OT 问题时相对于样本耦合的对偶向量对。
- linearfloat
FUGW 成本的线性部分。
- fugw_costfloat
总的 FUGW 成本。
- backend
所有输入数组的适当后端
参考文献
[70] Thual, A., Tran, H., Zemskova, T., Courty, N., Flamary, R., Dehaene, S., & Thirion, B. 将个体大脑与融合的不平衡Gromov-Wasserstein对齐。 神经信息系统进展, 35 (2022).
[72] Thibault Séjourné, François-Xavier Vialard, & Gabriel Peyré. 不平衡的 Gromov-Wasserstein 距离:锥形公式和放松。 神经信息处理系统, 34 (2021).
- ot.gromov.fused_unbalanced_gromov_wasserstein2(Cx, Cy, wx=None, wy=None, reg_marginals=10, epsilon=0, divergence='kl', unbalanced_solver='mm', alpha=0, M=None, init_duals=None, init_pi=None, max_iter=100, tol=1e-07, max_iter_ot=500, tol_ot=1e-07, log=False, verbose=False, **kwargs_solve)[源]
计算两个相似度矩阵之间融合非平衡 Gromov-Wasserstein (FUGW) 的下界。实际上,这个下界与真实的 FUGW 交替使用。
更准确地说,该函数返回融合不平衡Gromov-Wasserstein成本的下界,位于 \((\mathbf{C^X}, \mathbf{w_X})\) 和 \((\mathbf{C^Y}, \mathbf{w_Y})\) 之间, 通过使用块坐标下降算法解决以下问题:
\[\begin{split}\mathop{\min}_{\substack{\mathbf{P}, \mathbf{Q}: \\ mass(P) = mass(Q)}} &\quad \sum_{i,j,k,l} (\mathbf{C^X}_{i,k} - \mathbf{C^Y}_{j,l})^2 \mathbf{P}_{i,j} \mathbf{Q}_{k,l} + \frac{\alpha}{2} \sum_{i,j} (\mathbf{P}_{i,j} + \mathbf{Q}_{i,j}) \mathbf{M}_{i, j} \\ &+ \rho_1 \mathbf{Div}(\mathbf{P}_{\# 1} \mathbf{Q}_{\# 1}^T | \mathbf{w_X} \mathbf{w_X}^T) + \rho_2 \mathbf{Div}(\mathbf{P}_{\# 2} \mathbf{Q}_{\# 2}^T | \mathbf{w_Y} \mathbf{w_Y}^T) \\ &+ \varepsilon \mathbf{Div}(\mathbf{P} \otimes \mathbf{Q} | (\mathbf{w_X} \mathbf{w_Y}^T) \otimes (\mathbf{w_X} \mathbf{w_Y}^T))\end{split}\]在哪里:
\(\mathbf{C^X}\): 源相似度矩阵
\(\mathbf{C^Y}\): 目标相似度矩阵
\(\mathbf{M}\): 与Wasserstein项对应的样本矩阵
\(\mathbf{w_X}\): 源空间中样本的分布
\(\mathbf{w_Y}\): 目标空间中样本的分布
\(\mathbf{Div}\): Kullback-Leibler 散度或半平方 L2 范数。
注意
该函数允许epsilon为零。在这种情况下,unbalanced_method必须为“mm”或“lbfgsb”。
此外,梯度的计算仅支持KL散度,而不支持半平方-L2范数。在半平方-L2范数的情况下,将使用KL散度的计算。- Parameters:
Cx ((n_sample_x, n_feature_x) array-like, float) – 源相似度矩阵。
Cy ((n_sample_y, n_feature_y) 类似数组, 浮点数) – 目标相似度矩阵。
wx ((n_sample_x, ) 数组类似, 浮点数, 可选 (默认 = None)) – 分配给矩阵 Cx 的行(样本)的直方图。默认情况下为均匀分布。
wy ((n_sample_y, ) 数组-like, 浮点数, 可选 (默认 = None)) – 分配在矩阵 Cy 的行(样本)上的直方图。默认是均匀分布。
reg_marginals (float 或 可索引对象 长度为 1 或 2) – 样本和特征耦合的边际松弛项。如果 reg_marginals 是标量或长度为 1 的可索引对象,则相同的值应用于两个边际松弛。
epsilon (标量, 浮点数 或 整数, 可选 (默认 = 0)) – 样本和特征耦合的熵近似的正则化参数。 允许epsilon包含0。在这种情况下,默认使用MM求解器 而不是Sinkhorn求解器。如果epsilon是标量,那么相同的值将应用于 样本和特征耦合的正则化。
发散 (字符串, 可选 (默认 = "kl")) –
如果 divergence = “kl”,则 Div 是 Kullback-Leibler 发散。
如果 divergence = “l2”,则 Div 是一半的平方欧几里得范数。
unbalanced_solver (字符串, 可选 (默认 = "sinkhorn")) –
用于不平衡OT子例程的求解器。
如果 divergence = “kl”,那么 unbalanced_solver 可以是:“sinkhorn”、“sinkhorn_log”、“mm”、“lbfgsb”
如果 divergence = “l2”,那么 unbalanced_solver 可以是“mm”、“lbfgsb”
alpha (标量, 浮点数 或 整数, 可选 (默认 = 0)) – 与样本和特征耦合相关的线性项的系数参数。如果 alpha 是标量,则相同的 alpha 应用于两个线性项。
M ((n_sample_x, n_sample_y), float, 可选 (默认 = None)) – 与样本耦合上的Wasserstein线性项相关的样本矩阵。
init_pi ((n_sample_x, n_sample_y) 类数组, 可选 (默认 = None)) – 样本耦合的初始化。默认 = \(w_X w_Y^T\)。
init_duals (tuple 的 向量 ((n_sample_x, ), (n_sample_y, )), 可选 (默认为 None)。) – 在使用 Sinkhorn 算法时初始化样本和特征的对偶向量。默认情况下为零向量。
max_iter (int, 可选 (默认 = 100)) – 块坐标下降 (BCD) 迭代的次数。
tol (float, 可选 (默认 = 1e-7)) – BCD 方案的容忍度。如果当前和之前样本耦合之间的 L1-范数低于这个阈值,则停止 BCD 方案。
max_iter_ot (int, 可选 (默认 = 100)) – 在每次BCD迭代中,解决两个不平衡最优运输问题的迭代次数。
tol_ot (float, 可选的 (默认 = 1e-7)) – 每个BCD迭代中两个不平衡最优传输问题的不平衡求解器的容差。
log (bool, optional (default = False)) – 如果为真,则记录成本和四个对偶向量,包括来自样本的两个和来自特征耦合的两个。
verbose (bool, 可选 (默认 = False)) – 如果为真,则在每个 eval_bcd 的倍数迭代时打印 COOT 成本。
- Returns:
fugw (float) – 总 FUGW 成本
log (dictionary, optional) –
如果 log 为真则返回。键包括:
- errorarray-like, float
当前样本耦合与前一个样本耦合之间 L1 范数的列表。
- duals(n_sample_x, n_sample_y)-tuple, float
在解决与样本耦合相关的 OT 问题时的对偶向量对。
- linearfloat
FUGW 成本的线性部分。
- fugw_costfloat
总 FUGW 成本。
- backend
所有输入数组的适当后端
参考文献
[70] Thual, A., Tran, H., Zemskova, T., Courty, N., Flamary, R., Dehaene, S., & Thirion, B. 将个体大脑与融合的不平衡Gromov-Wasserstein对齐。 神经信息系统进展, 35 (2022).
[72] Thibault Séjourné, François-Xavier Vialard, & Gabriel Peyré. 不平衡的 Gromov-Wasserstein 距离:锥形公式和放松。 神经信息处理系统, 34 (2021).
- ot.gromov.get_graph_partition(C, npart, part_method='random', F=None, alpha=1.0, random_state=0, nx=None)[源]
将给定图的结构矩阵 \(\mathbf{C} \in R^{n \times n}\) 划分为 npart 个分区,可以选择‘随机’或使用网络库 networkx 中的 {‘louvain’, ‘fluid’} 算法,或使用 scikit-learn 的‘谱’聚类,或使用 POT 的 (Fused) Gromov-Wasserstein 投影。
- Parameters:
C (数组类似, 形状 (n, n)) – 结构矩阵。
npart (int,) – 小于节点数量的分区/聚类数量 \(\mathbf{C}\).
part_method (str, 可选。默认为'random'。) – 要使用的分区算法,选项包括{‘random’, ‘louvain’, ‘fluid’, ‘spectral’, ‘GW’, ‘FGW’}。‘random’表示随机抽样;‘louvain’和‘fluid’是适用于邻接矩阵的图分区算法,如果使用louvain算法,则npart被忽略;‘spectral’用于谱聚类;‘(F)GW’用于使用sr(F)GW求解器进行(F)GW投影。
F (类似数组, 形状 (n, d), 可选. (默认值为 None)) – 与图结构对齐的可选特征矩阵。仅在 part_method=”FGW” 时使用。
alpha (float, 可选。 (默认值为 1。)) – 特征和结构矩阵之间的权衡参数,取值在 [0, 1] 之间,仅在 F != None 和 part_method=”FGW” 时使用。
random_state (int, 可选) – 分区算法的随机种子。
nx (后端, 可选) – POT 后端.
- Returns:
部分 – 每个节点的分区分配数组。
- Return type:
类似数组,形状 (npart,)
参考文献
[68] Chowdhury, S., Miller, D., & Needham, T. (2021). 量化的Gromov-Wasserstein。ECML PKDD 2021。Springer国际出版。
- ot.gromov.get_graph_representants(C, part, rep_method='pagerank', random_state=0, nx=None)[源]
获取每个由 \(\mathbf{part} \in R^{n}\) 给出的分区的代表节点,该图的结构矩阵为 \(\mathbf{C} \in R^{n \times n}\)。选择可以随机进行,也可以使用来自networkx的‘pagerank’算法。
- Parameters:
- Returns:
rep_indices – 每个分区的代表节点的索引,按分区标识符排序。
- Return type:
list, 形状 (npart,)
参考文献
[68] Chowdhury, S., Miller, D., & Needham, T. (2021). 量化的Gromov-Wasserstein。ECML PKDD 2021。Springer国际出版。
- ot.gromov.get_partition_and_representants_samples(X, npart, method='kmeans', random_state=0, nx=None)[源]
计算 npart 分区和代表点,基于样本 \(\mathbf{X} \in R^{n \times d}\),使用随机算法或 kmeans 算法。
- Parameters:
- Returns:
part (array-like, shape (npart,)) – 每个节点的分区分配数组。
rep_indices (list, shape (npart,)) – 按照分区标识符排序的每个分区代表节点的索引。
参考文献
[68] Chowdhury, S., Miller, D., & Needham, T. (2021). 量化的Gromov-Wasserstein。ECML PKDD 2021。Springer国际出版。
- ot.gromov.gromov_barycenters(N, Cs, ps=None, p=None, lambdas=None, loss_fun='square_loss', symmetric=True, armijo=False, max_iter=1000, tol=1e-09, stop_criterion='barycenter', warmstartT=False, verbose=False, log=False, init_C=None, random_state=None, **kwargs)[源]
返回 S 测量相似性矩阵的 Gromov-Wasserstein 重心 \((\mathbf{C}_s)_{1 \leq s \leq S}\)
该函数解决以下带块坐标下降法的优化问题:
\[\mathbf{C}^* = \mathop{\arg \min}_{\mathbf{C}\in \mathbb{R}^{N \times N}} \quad \sum_s \lambda_s \mathrm{GW}(\mathbf{C}, \mathbf{C}_s, \mathbf{p}, \mathbf{p}_s)\]其中:
\(\mathbf{C}_s\): 指标成本矩阵
\(\mathbf{p}_s\): 分布
- Parameters:
N (int) – 目标重心的大小
Cs (列表 的 S 类似数组,形状为 (ns, ns)) – 评估成本矩阵
ps (列表 的 S 类数组,形状为 (ns,), 可选) – 在S空间中的样本权重。如果设置为默认值 None,则采用均匀分布。
p (类数组对象, 形状 (N,), 可选) – 目标重心中的权重。 如果将其设置为默认值 None,则采用均匀分布。
lambdas (list of float, 可选) – S 空间的权重列表。 如果留空默认值为 None,则采用均匀权重。
loss_fun (可调用, 可选) – 基于特定损失函数的张量-矩阵乘法函数
对称的 (布尔值, 可选的.) – 结构是否被假设为对称。默认值为 True。如果设置为 True(或 False),C1 和 C2 将被假设为对称(或不对称)。
armijo (bool, 可选) – 如果为True,则通过armijo研究找到线搜索的步长。否则使用封闭形式。如果存在收敛问题,请使用False。
max_iter (int, 可选) – 最大迭代次数
tol (float, 可选) – 停止相对误差的阈值 (>0)
stop_criterion (str, 可选。默认值为'barycenter'。) – 停止标准取值为 [‘barycenter’, ‘loss’]。如果设置为‘barycenter’,则使用估计的重心的绝对范数变化。否则如果设置为‘loss’,则使用损失的相对变化。
warmstartT (bool, 可选) – 是否在后续的融合Gromov-Wasserstein传输问题中执行传输计划的热启动。
verbose (bool, optional) – 在迭代过程中打印信息。
log (bool, 可选) – 如果为真,则记录日志。
init_C (bool | array-like, shape(N,N)) – 用户提供的\(\mathbf{C}\)矩阵的随机初始值。
random_state (int 或 RandomState 实例, 可选) – 固定种子以保证可重复性
- Returns:
C (类数组,形状 (N, N)) – 在重心空间中的相似性矩阵(任意置换)
log (dict) – 仅在 log=True 时返回。它包含以下键:
\(\mathbf{T}\): (N, ns) 传输矩阵的列表
\(\mathbf{p}\): (N,) 重心权重
用于收敛评估的值。
参考文献
[12] 加布里埃尔·佩耶雷,马尔科·库图里和贾斯廷·所罗门, “核和距离矩阵的Gromov-Wasserstein平均。” 国际机器学习会议(ICML)。 2016年。
- ot.gromov.gromov_wasserstein(C1, C2, p=None, q=None, loss_fun='square_loss', symmetric=None, log=False, armijo=False, G0=None, max_iter=10000.0, tol_rel=1e-09, tol_abs=1e-09, **kwargs)[源]
返回 \((\mathbf{C_1}, \mathbf{p})\) 和 \((\mathbf{C_2}, \mathbf{q})\) 之间的 Gromov-Wasserstein 传输。
该函数使用条件梯度法解决以下优化问题:
\[ \begin{align}\begin{aligned}\mathbf{T}^* \in \mathop{\arg \min}_\mathbf{T} \quad \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\\s.t. \ \mathbf{\gamma} \mathbf{1} &= \mathbf{p}\\ \mathbf{\gamma}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{\gamma} &\geq 0\end{aligned}\end{align} \]其中:
\(\mathbf{C_1}\): 源空间中的度量成本矩阵。
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵。
\(\mathbf{p}\): 源空间中的分布。
\(\mathbf{q}\): 目标空间中的分布。
L: 用于考虑相似度矩阵之间不匹配的损失函数。
注意
此函数与后端兼容,可用于所有兼容后端的数组。但该算法使用C++ CPU后端,这可能导致在GPU数组上产生复制开销。
注意
共轭梯度求解器中的所有计算均使用numpy进行,以限制内存开销。
注意
此函数将把计算出的运输计划转换为提供的输入数据类型 \(\mathbf{C}_1\)。转换为整数张量可能会导致精度损失。如果不希望出现这种行为,请确保提供浮点输入。
- Parameters:
C1 (类数组, 形状 (ns, ns)) – 源空间中的度量成本矩阵。
C2 (类似数组, 形状 (nt, nt)) – 目标空间中的度量成本矩阵。
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
q (数组类型, 形状 (nt,), 可选) – 目标空间中的分布。如果保持默认值 None,将采用均匀分布。
loss_fun (str, 可选) – 求解器使用的损失函数,可以是‘square_loss’或‘kl_loss’。
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
verbose (bool, optional) – 在迭代过程中打印信息。
log (bool, 可选) – 如果为真,则记录日志。
armijo (bool, 可选) – 如果为 True,线性搜索的步长通过 armijo 搜索找到。否则使用封闭形式。如果存在收敛问题,请使用 False。
G0 (数组类型, 形状 (ns,nt), 可选) – 如果为 None,则求解器的初始运输计划为 pq^T。否则 G0 必须满足边际约束,将作为求解器的初始运输使用。
max_iter (int, 可选) – 最大迭代次数。
tol_rel (float, 可选) – 相对误差的停止阈值 (>0)。
tol_abs (float, 可选) – 绝对误差的停止阈值 (>0)。
**kwargs (dict) – 参数可以直接传递给 ot.optim.cg 求解器。
- Returns:
T (类似数组,形状 (ns, nt)) –
最小化两个空间之间的耦合:
\(\sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\)
log (dict) – 收敛信息和损失。
参考文献
[12] 加布里埃尔·佩耶雷,马尔科·库图里和贾斯廷·所罗门, “核和距离矩阵的Gromov-Wasserstein平均。” 国际机器学习会议(ICML)。 2016年。
[13] Mémoli, Facundo. Gromov–Wasserstein 距离与对象匹配的度量方法。《计算数学基础》 11.4 (2011): 417-487.
[47] Chowdhury, S., & Mémoli, F. (2019). 网络之间的Gromov–Wasserstein距离与稳定网络不变量。 信息与推理:IMA期刊, 8(4), 757-787.
- ot.gromov.gromov_wasserstein2(C1, C2, p=None, q=None, loss_fun='square_loss', symmetric=None, log=False, armijo=False, G0=None, max_iter=10000.0, tol_rel=1e-09, tol_abs=1e-09, **kwargs)[源]
返回 Gromov-Wasserstein 损失 \(\mathbf{GW}\) 之间 \((\mathbf{C_1}, \mathbf{p})\) 和 \((\mathbf{C_2}, \mathbf{q})\)。 要恢复在 [13] 中定义的 Gromov-Wasserstein 距离,计算 \(d_{GW} = \frac{1}{2} \sqrt{\mathbf{GW}}\)。
该函数使用条件梯度法解决以下优化问题:
\[ \begin{align}\begin{aligned}\mathbf{GW} = \min_\mathbf{T} \quad \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\\s.t. \ \mathbf{\gamma} \mathbf{1} &= \mathbf{p}\\ \mathbf{\gamma}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{\gamma} &\geq 0\end{aligned}\end{align} \]其中:
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{p}\): 源空间中的分布
\(\mathbf{q}\): 目标空间中的分布
L: 用于考虑相似性矩阵之间不匹配的损失函数
请注意,当使用后端时,该损失函数对矩阵 (C1, C2) 和权重 (p, q) 是可微的,用于二次损失,使用来自 [38]_ 的梯度。
注意
此函数与后端兼容,可用于所有兼容后端的数组。但该算法使用C++ CPU后端,这可能导致在GPU数组上产生复制开销。
注意
共轭梯度求解器中的所有计算均使用numpy进行,以限制内存开销。
注意
此函数将把计算出的运输计划转换为提供的输入数据类型 \(\mathbf{C}_1\)。转换为整数张量可能会导致精度损失。如果不希望出现这种行为,请确保提供浮点输入。
- Parameters:
C1 (类似数组, 形状 (ns, ns)) – 源空间中的度量成本矩阵
C2 (类似数组, 形状 (nt, nt)) – 目标空间中的度量成本矩阵
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
q (数组类型, 形状 (nt,), 可选) – 目标空间中的分布。如果保持默认值 None,将采用均匀分布。
loss_fun (str) – 解算器使用的损失函数,可以是‘square_loss’或‘kl_loss’
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
verbose (bool, 可选) – 在迭代过程中打印信息
log (bool, 可选) – 如果为真,则记录日志
armijo (bool, 可选) – 如果为真,则通过armijo研究找到线搜索的步长。否则使用封闭形式。如果存在收敛问题,请使用假。
G0 (类似数组, 形状 (ns,nt), 可选) – 如果为 None,求解器的初始运输计划为 pq^T。否则 G0 必须满足边际约束,并将作为求解器的初始运输。
max_iter (int, 可选) – 最大迭代次数
tol_rel (float, 可选) – 相对误差的停止阈值 (>0)
tol_abs (float, 可选) – 绝对误差停止阈值 (>0)
**kwargs (dict) – 参数可以直接传递给 ot.optim.cg 求解器
- Returns:
gw_dist (float) – Gromov-Wasserstein 距离
log (dict) – 收敛信息和耦合矩阵
参考文献
[12] 加布里埃尔·佩耶雷,马尔科·库图里和贾斯廷·所罗门, “核和距离矩阵的Gromov-Wasserstein平均。” 国际机器学习会议(ICML)。 2016年。
[13] Mémoli, Facundo. Gromov–Wasserstein 距离与对象匹配的度量方法。《计算数学基础》 11.4 (2011): 417-487.
[38] C. Vincent-Cuaz, T. Vayer, R. Flamary, M. Corneli, N. Courty, 在线图字典学习, 国际机器学习会议 (ICML), 2021.
[47] Chowdhury, S., & Mémoli, F. (2019). 网络之间的Gromov–Wasserstein距离与稳定网络不变量。 信息与推理:IMA期刊, 8(4), 757-787.
- ot.gromov.gromov_wasserstein_dictionary_learning(Cs, D, nt, reg=0.0, ps=None, q=None, epochs=20, batch_size=32, learning_rate=1.0, Cdict_init=None, projection='nonnegative_symmetric', use_log=True, tol_outer=1e-05, tol_inner=1e-05, max_iter_outer=20, max_iter_inner=200, use_adam_optimizer=True, verbose=False, random_state=None, **kwargs)[源]
从结构列表中推断 Gromov-Wasserstein 线性字典 \(\{ (\mathbf{C_{dict}[d]}, q) \}_{d \in [D]}\) \(\{ (\mathbf{C_s},\mathbf{p_s}) \}_s\)
\[\min_{\mathbf{C_{dict}}, \{\mathbf{w_s} \}_{s \leq S}} \sum_{s=1}^S GW_2(\mathbf{C_s}, \sum_{d=1}^D w_{s,d}\mathbf{C_{dict}[d]}, \mathbf{p_s}, \mathbf{q}) - reg\| \mathbf{w_s} \|_2^2\]这样的, \(\forall s \leq S\) :
\(\mathbf{w_s}^\top \mathbf{1}_D = 1\)
\(\mathbf{w_s} \geq \mathbf{0}_D\)
其中:
\(\forall s \leq S, \mathbf{C_s}\) 是一个 (ns,ns) 的对称相似度矩阵,大小为 ns。
\(\mathbf{C_{dict}}\) 是一个大小为 (D, nt, nt) 的 D 个配对相似度矩阵的张量。
\(\forall s \leq S, \mathbf{p_s}\) 是与 \(\mathbf{C_s}\) 对应的源分布
\(\mathbf{q}\) 是分配给嵌入空间中每个结构的目标分布。
reg是正则化系数。
用于估计图字典原子的随机算法,如[38]_中所提议的
- Parameters:
Cs (列表 of S 对称的类数组, 形状 (ns, ns)) – 可变大小 (ns, ns) 的度量/图形成本矩阵的列表。
D (int) – 要学习的字典原子的数量
nt (int) – 每个字典原子内的样本数量
reg (float, optional) – 用于促进w稀疏性的负二次正则化系数。默认值为0。
ps (列表 of S 类数组, 形状 (ns,), 可选) – 每个源空间 C 的 Cs 中的分布。默认值为 None,表示均匀分布。
q (类似数组, 形状 (nt,), 可选) – 嵌入空间中的分布,其结构将被学习。默认值为 None,表示均匀分布。
epochs (int, 可选) – 用于学习字典的轮次数量。默认值为32。
batch_size (int, 可选) – 字典每次随机梯度更新的批量大小。如果提供的 batch_size 大于数据集大小,则设置为数据集大小。默认值为 32。
learning_rate (float, 可选) – 用于随机梯度下降的学习率。默认为1。
Cdict_init (list 的 D数组,形状为 (nt, nt), 可选) – 用于初始化字典。 如果设置为 None(默认),字典将随机初始化。 否则 Cdict 必须具有形状 (D, nt, nt),即匹配提供的形状特征。
投影 (字符串 , 可选) – 如果‘非负’和/或‘对称’在投影中,则将在字典的每次随机更新时执行相应的投影。否则,原子集为\(R^{nt * nt}\)。默认值为‘非负对称’
log (bool, optional) – 如果设置为 True,将跟踪按批次和轮次的损失演变。默认值为 False。
use_adam_optimizer (bool, 可选) – 如果设置为 True,将使用默认设置的 Adam 优化器作为自适应学习率策略。 否则执行带有固定学习率的 SGD。默认值为 True.
tol_outer (浮点数, 可选) – BCD算法的求解精度,通过连续损失的绝对相对误差来衡量。默认值为\(10^{-5}\)。
tol_inner (float, 可选) – 用于获取在固定运输下的最优 w 的共轭梯度算法的求解器精度,按连续损失的绝对相对误差进行测量。默认值为 \(10^{-5}\).
max_iter_outer (int, 可选) – BCD的最大迭代次数。默认值为20。
max_iter_inner (int, optional) – 共轭梯度法的最大迭代次数。默认值为 200。
详细输出 (布尔值, 可选) – 每个纪元打印重构损失。默认值为 False。
random_state (int, RandomState 实例 或 None, 默认=None) – 决定随机数生成。在多次函数调用中传递一个整数以获得可重复的输出。
- Returns:
Cdict_best_state (D 类数组,形状 (D,nt,nt)) – 构成字典的度量/图形成本矩阵。导致每个周期最佳损失的字典被保存并返回。
log (dict) – 如果 use_log 为 True,包含按批次和周期变化的损失。
参考文献
[38] C. Vincent-Cuaz, T. Vayer, R. Flamary, M. Corneli, N. Courty, 在线图字典学习, 国际机器学习会议 (ICML), 2021.
- ot.gromov.gromov_wasserstein_linear_unmixing(C, Cdict, reg=0.0, p=None, q=None, tol_outer=1e-05, tol_inner=1e-05, max_iter_outer=20, max_iter_inner=200, symmetric=None, **kwargs)[源]
返回 \((\mathbf{C},\mathbf{p})\) 在字典 \(\{ (\mathbf{C_{dict}[d]}, \mathbf{q}) \}_{d \in [D]}\) 上的 Gromov-Wasserstein 线性解混。
\[\min_{ \mathbf{w}} GW_2(\mathbf{C}, \sum_{d=1}^D w_d\mathbf{C_{dict}[d]}, \mathbf{p}, \mathbf{q}) - reg \| \mathbf{w} \|_2^2\]使得:
\(\mathbf{w}^\top \mathbf{1}_D = 1\)
\(\mathbf{w} \geq \mathbf{0}_D\)
其中:
\(\mathbf{C}\) 是 (ns,ns) 成对相似度矩阵。
\(\mathbf{C_{dict}}\) 是一个 (D, nt, nt) 张量,包含 D 个大小为 nt 的成对相似度矩阵。
\(\mathbf{p}\) 和 \(\mathbf{q}\) 是源权重和目标权重。
reg是正则化系数。
用于解决该问题的算法是块坐标下降,如[38]_中讨论的,算法 1。
- Parameters:
C (类数组, 形状 (ns, ns)) – 评价/图形成本矩阵。
Cdict (D 类似数组, 形状 (D,nt,nt)) – 组成用于嵌入 C 的字典的度量/图成本矩阵。
reg (float, 可选。) – 用于促进 w 稀疏性的负二次正则化的系数。默认值为 0。
p (类似数组, 形状 (ns,), 可选) – 源空间 C 中的分布。默认值为 None,表示均匀分布。
q (类似数组, 形状 (nt,), 可选) – 字典所示空间中的分布。默认为 None,对应均匀分布。
tol_outer (float, 可选) – BCD算法的求解精度。
tol_inner (浮点数, 可选) – 用于在固定传输下获得最佳 w 的共轭梯度算法的求解器精度。默认值为 \(10^{-5}\)。
max_iter_outer (int, 可选) – BCD的最大迭代次数。默认值为20。
max_iter_inner (int, optional) – 共轭梯度法的最大迭代次数。默认值为 200。
- Returns:
w (数组类型,形状 (D,)) – Gromov-Wasserstein 线性解混合 \((\mathbf{C},\mathbf{p})\) 到字典的跨度。
Cembedded (数组类型,形状 (nt,nt)) – \((\mathbf{C},\mathbf{p})\) 在字典上的嵌入结构,\(\sum_d w_d\mathbf{C_{dict}[d]}\)。
T (数组类型 (ns, nt)) – \((\mathbf{C},\mathbf{p})\) 和 \((\sum_d w_d\mathbf{C_{dict}[d]}, \mathbf{q})\) 之间的 Gromov-Wasserstein 运输计划
current_loss (浮点数) – 重建误差
参考文献
[38] C. Vincent-Cuaz, T. Vayer, R. Flamary, M. Corneli, N. Courty, 在线图字典学习, 国际机器学习会议 (ICML), 2021.
- ot.gromov.gwggrad(constC, hC1, hC2, T, nx=None)[源]
返回Gromov-Wasserstein的梯度
梯度的计算方法如[12]中的命题2所述
- Parameters:
constC (类数组, 形状 (ns, nt))– 常量 \(\mathbf{C}\) 矩阵在公式 (6) 中
hC1 (数组类, 形状 (ns, ns)) – \(\mathbf{h1}(\mathbf{C1})\) 矩阵在方程 (6) 中
hC2 (类似数组, 形状 (nt, nt)) – \(\mathbf{h2}(\mathbf{C2})\) 矩阵在公式 (6) 中
T (数组类型, 形状 (ns, nt)) – 运输矩阵当前值 \(\mathbf{T}\)
nx (backend, 可选) – 如果默认值为 None,将进行后端测试。
- Returns:
grad – Gromov-Wasserstein 梯度
- Return type:
数组类似,形状 (ns, nt)
参考文献
[12] 加布里埃尔·佩耶雷,马尔科·库图里和贾斯廷·所罗门, “核和距离矩阵的Gromov-Wasserstein平均。” 国际机器学习会议(ICML)。 2016年。
- ot.gromov.gwloss(constC, hC1, hC2, T, nx=None)[源]
返回Gromov-Wasserstein的损失
损失的计算如命题 1 中的公式 (6) 所述,见 [12]
- Parameters:
constC (类数组, 形状 (ns, nt))– 常量 \(\mathbf{C}\) 矩阵在公式 (6) 中
hC1 (数组类, 形状 (ns, ns)) – \(\mathbf{h1}(\mathbf{C1})\) 矩阵在方程 (6) 中
hC2 (类似数组, 形状 (nt, nt)) – \(\mathbf{h2}(\mathbf{C2})\) 矩阵在公式 (6) 中
T (数组类型, 形状 (ns, nt)) – 运输矩阵当前值 \(\mathbf{T}\)
nx (backend, 可选) – 如果默认值为 None,将进行后端测试。
- Returns:
loss – Gromov-Wasserstein 损失
- Return type:
参考文献
[12] 加布里埃尔·佩耶雷,马尔科·库图里和贾斯廷·所罗门, “核和距离矩阵的Gromov-Wasserstein平均。” 国际机器学习会议(ICML)。 2016年。
- ot.gromov.init_matrix(C1, C2, p, q, loss_fun='square_loss', nx=None)[源]
返回Gromov-Wasserstein快速计算的损失矩阵和张量
返回具有所选损失函数作为Gromov-Wasserstein差异的损失函数的\(\mathcal{L}(\mathbf{C_1}, \mathbf{C_2}) \otimes \mathbf{T}\)的值。
矩阵的计算方法如在[12]中的命题1所述
其中:
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{T}\): 这两个空间之间的耦合
平方损失函数 \(L(a, b) = |a - b|^2\) 读作:
\[ \begin{align}\begin{aligned}L(a, b) = f_1(a) + f_2(b) - h_1(a) h_2(b)\\\mathrm{with} \ f_1(a) &= a^2\\ f_2(b) &= b^2\\ h_1(a) &= a\\ h_2(b) &= 2b\end{aligned}\end{align} \]kl-loss函数 \(L(a, b) = a \log\left(\frac{a}{b}\right) - a + b\) 读作:
\[ \begin{align}\begin{aligned}L(a, b) = f_1(a) + f_2(b) - h_1(a) h_2(b)\\\mathrm{with} \ f_1(a) &= a \log(a) - a\\ f_2(b) &= b\\ h_1(a) &= a\\ h_2(b) &= \log(b)\end{aligned}\end{align} \]- Parameters:
C1 (类似数组, 形状 (ns, ns)) – 源空间中的度量成本矩阵
C2 (类似数组, 形状 (nt, nt)) – 目标空间中的度量成本矩阵
p (类数组, 形状 (ns,)) – 源空间中的概率分布
q (类似数组, 形状 (nt,)) – 目标空间中的概率分布
loss_fun (str, 可选) – 要使用的损失函数名称:可以是‘square_loss’或‘kl_loss’(默认=‘square_loss’)
nx (backend, 可选) – 如果默认值为 None,将进行后端测试。
- Returns:
constC (数组类型,形状 (ns, nt)) – 等式 (6) 中的常数 \(\mathbf{C}\) 矩阵
hC1 (数组类型,形状 (ns, ns)) – 等式 (6) 中的 \(\mathbf{h1}(\mathbf{C1})\) 矩阵
hC2 (数组类型,形状 (nt, nt)) – 等式 (6) 中的 \(\mathbf{h2}(\mathbf{C2})\) 矩阵
参考文献
[12] 加布里埃尔·佩耶雷,马尔科·库图里和贾斯廷·所罗门, “核和距离矩阵的Gromov-Wasserstein平均。” 国际机器学习会议(ICML)。 2016年。
- ot.gromov.init_matrix_semirelaxed(C1, C2, p, loss_fun='square_loss', nx=None)[源]
返回半松弛Gromov-Wasserstein快速计算的损失矩阵和张量
返回\(\mathcal{L}(\mathbf{C_1}, \mathbf{C_2}) \otimes \mathbf{T}\)的值,使用所选的损失函数作为半放松Gromov-Wasserstein差异的损失函数。
矩阵的计算如在[12]中的命题1所述,并适应于第二边际不再是常数的半放松问题。
其中:
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{T}\): 这两个空间之间的耦合
平方损失函数 \(L(a, b) = |a - b|^2\) 读作:
\[ \begin{align}\begin{aligned}L(a, b) = f_1(a) + f_2(b) - h_1(a) h_2(b)\\\mathrm{with} \ f_1(a) &= a^2\\ f_2(b) &= b^2\\ h_1(a) &= a\\ h_2(b) &= 2b\end{aligned}\end{align} \]kl-loss函数 \(L(a, b) = a \log\left(\frac{a}{b}\right) - a + b\) 读作:
\[ \begin{align}\begin{aligned}L(a, b) = f_1(a) + f_2(b) - h_1(a) h_2(b)\\\mathrm{with} \ f_1(a) &= a \log(a) - a\\ f_2(b) &= b\\ h_1(a) &= a\\ h_2(b) &= \log(b)\end{aligned}\end{align} \]- Parameters:
C1 (类似数组, 形状 (ns, ns)) – 源空间中的度量成本矩阵
C2 (类似数组, 形状 (nt, nt)) – 目标空间中的度量成本矩阵
p (类数组, 形状 (ns,)) – 源空间中的概率分布
loss_fun (str, 可选) – 要使用的损失函数名称:可以是‘square_loss’或‘kl_loss’(默认=‘square_loss’)
nx (backend, 可选) – 如果默认值为 None,将进行后端测试。
- Returns:
constC (类似数组, 形状 (ns, nt)) – 方程 (6) 中适应 srGW 的常数 \(\mathbf{C}\) 矩阵
hC1 (类似数组, 形状 (ns, ns)) – 方程 (6) 中的 \(\mathbf{h1}(\mathbf{C1})\) 矩阵
hC2 (类似数组, 形状 (nt, nt)) – 方程 (6) 中的 \(\mathbf{h2}(\mathbf{C2})\) 矩阵
fC2t (类似数组, 形状 (nt, nt)) – 方程 (6) 中的 \(\mathbf{f2}(\mathbf{C2})^\top\) 矩阵
参考文献
[12] 加布里埃尔·佩耶雷,马尔科·库图里和贾斯廷·所罗门, “核和距离矩阵的Gromov-Wasserstein平均。” 国际机器学习会议(ICML)。 2016年。
[48] Cédric Vincent-Cuaz, Rémi Flamary, Marco Corneli, Titouan Vayer, Nicolas Courty. “半放松Gromov-Wasserstein散度及其在图上的应用” 国际学习表示会议(ICLR),2022。
- ot.gromov.lowrank_gromov_wasserstein_samples(X_s, X_t, a=None, b=None, reg=0, rank=None, alpha=1e-10, gamma_init='rescale', rescale_cost=True, cost_factorized_Xs=None, cost_factorized_Xt=None, stopThr=0.0001, numItermax=1000, stopThr_dykstra=0.001, numItermax_dykstra=10000, seed_init=49, warn=True, warn_dykstra=False, log=False)[源]
在耦合和成本矩阵上解决低非负秩约束下的熵正则化Gromov-Wasserstein运输问题。
平方欧几里得距离矩阵被认为是目标和源分布。
该函数解决以下优化问题:
\[\mathop{\min_{(Q,R,g) \in \mathcal{C(a,b,r)}}} \mathcal{Q}_{A,B}(Q\mathrm{diag}(1/g)R^T) - \epsilon \cdot H((Q,R,g))\]其中 :
- 数学:
A 是源领域的 (dim_a, dim_a) 矩阵的平方成对成本矩阵。
- 数学:
B 是目标域的 (dim_a, dim_a) 方阵成对成本矩阵。
- 数学:
mathcal{Q}_{A,B} 是 Gromov Wasserstein 计划的二次目标函数。
- 数学:
Q 和 R 是 Gromov-Wasserstein 规划的低秩矩阵分解。
- 数学:
g 是 Gromov-Wasserstein 计划的低秩分解的权重向量。
\(\mathbf{a}\) 和 \(\mathbf{b}\) 是源权重和目标权重(直方图,均为 1 的和)。
- math:
r 是 Gromov-Wasserstein 计划的等级。
- 数学:
mathcal{C(a,b,r)} 是OT问题的低秩耦合。
\(H((Q,R,g))\) 是对每个项计算的三个各自熵的值。
- Parameters:
X_s (数组类型, 形状 (n_samples_a, dim_Xs)) – 源域中的样本
X_t (类数组型, 形状 (n_samples_b, dim_Xt)) – 目标域中的样本
a (数组类似, 形状 (n_samples_a,), 可选) – 源域中的样本权重 如果让它使用默认值 None,将采用均匀分布。
b (数组类型, 形状 (n_samples_b,), 可选) – 目标域中的样本权重 如果保持默认值 None,则采用均匀分布。
reg (float, 可选) – 正则化项 >=0
rank (int, 可选。默认值为 None。 (>0)) – OT 计划的非负等级。如果为 None,则考虑 min(ns, nt)。
alpha (int, 可选,默认值为 1e-10。 (>0 且 <1/r)) – 权重向量 g 的下限。
rescale_cost (bool, 可选。默认为 False) – 重新缩放平方欧几里得成本矩阵的低秩分解
seed_init (int, 可选。默认值为 49。 (>0)) – 用于低秩耦合的“随机”初始化的随机状态
gamma_init (str, 可选。默认值为 "rescale"。) – gamma 的初始化策略。‘rescale’,或 ‘theory’ Gamma 是一个常数,用于缩放镜像下降优化方案的收敛标准,该方案用于计算低秩耦合 (Q, R 和 g)
numItermax (int, 可选。默认为 1000。) – 低秩 GW 的最大迭代次数
stopThr (float, 可选。默认值是 1e-4。) – 低秩GW的误差停止阈值 (>0) 误差是针对每个低秩耦合 (Q, R 和 g) 计算的Kullback散度的总和,并使用gamma进行缩放。
numItermax_dykstra (int, 可选。默认为2000。) – Dykstra算法的最大迭代次数
stopThr_dykstra (float, 可选。默认值为 1e-7。) – Dykstra 中的错误停止阈值 (>0)
cost_factorized_Xs (tuple, 可选。默认是 None) – 包含源成本矩阵的两个预计算低秩分解 (A1, A2) 的元组。两个矩阵的形状应为 (n_samples_a, dim_Xs + 2)。如果为 None,低秩成本矩阵将作为平方欧几里得成本矩阵计算。
cost_factorized_Xt (tuple, 可选。默认值为 None) – 包含目标成本矩阵的两个预计算低秩分解 (B1, B2) 的元组。两个矩阵的形状应为 (n_samples_b, dim_Xt + 2)。如果为 None,将计算低秩成本矩阵作为 sqeuclidean 成本矩阵。
warn (bool, optional) – 如果为 True,当低秩 GW 算法未收敛时,会引发警告。
warn_dykstra (bool, 可选) – 如果为 True,在 Dykstra 算法未收敛时会引发警告。
log (bool, 可选) – 如果为真,则记录日志
- Returns:
Q (类数组,形状 (n_samples_a, r)) – OT计划的第一低秩矩阵分解
R (类数组,形状 (n_samples_b, r)) – OT计划的第二低秩矩阵分解
g (类数组,形状 (r, )) – OT的低秩分解的权重向量
log (字典 (lazy_plan, value 和 value_linear)) – 仅当参数中的log==True时返回log字典
参考文献
[67] Scetbon, M., Peyré, G. & Cuturi, M. (2022). “线性时间的Gromov-Wasserstein距离,使用低秩耦合和成本”。 在国际机器学习大会(ICML),2022。
- ot.gromov.partial_gromov_wasserstein(C1, C2, p=None, q=None, m=None, loss_fun='square_loss', nb_dummies=1, G0=None, thres=1, numItermax=10000.0, tol=1e-08, symmetric=None, warn=True, log=False, verbose=False, **kwargs)[源]
返回部分Gromov-Wasserstein传输,介于\((\mathbf{C_1}, \mathbf{p})\)和\((\mathbf{C_2}, \mathbf{q})\)之间。
该函数使用条件梯度法解决以下优化问题:
\[ \begin{align}\begin{aligned}\mathbf{T}^* \in \mathop{\arg \min}_\mathbf{T} \quad \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\\ \mathbf{1}^T \mathbf{T}^T \mathbf{1} = m &\leq \min\{\|\mathbf{p}\|_1, \|\mathbf{q}\|_1\}\end{aligned}\end{align} \]其中 :
\(\mathbf{C_1}\): 源空间中的度量成本矩阵。
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵。
\(\mathbf{p}\): 源空间中的分布。
\(\mathbf{q}\): 目标空间中的分布。
m 是要运输的质量量
L: 用于考虑相似度矩阵之间不匹配的损失函数。
该问题的公式已在 [29]中提出
注意
此函数与后端兼容,可用于所有兼容后端的数组。但该算法使用C++ CPU后端,这可能导致在GPU数组上产生复制开销。
注意
共轭梯度求解器中的所有计算均使用numpy进行,以限制内存开销。
注意
此函数将把计算出的运输计划转换为提供的输入数据类型 \(\mathbf{C}_1\)。转换为整数张量可能会导致精度损失。如果不希望出现这种行为,请确保提供浮点输入。
- Parameters:
C1 (类似数组, 形状 (ns, ns)) – 源空间中的度量成本矩阵
C2 (数组类似, 形状 (nt, nt)) – 目标空间中的度量成本矩阵
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
q (数组类型, 形状 (nt,), 可选) – 目标空间中的分布。如果保持默认值 None,将采用均匀分布。
m (float, 可选) – 要运输的质量量(默认值: \(\min\{\|\mathbf{p}\|_1, \|\mathbf{q}\|_1\}\))
loss_fun (str, 可选) – 求解器使用的损失函数,可以是‘square_loss’或‘kl_loss’。
nb_dummies (int, 可选) – 要添加的虚拟点数(避免EMD求解器的不稳定性)
G0 (数组类型, 形状 (ns, nt), 可选) – 运输矩阵的初始化
thres (float, 可选) – 当为0时,用于填充成本矩阵的梯度矩阵的分位数(默认值:1)
numItermax (int, 可选) – 最大迭代次数
tol (float, 可选) – 停止迭代的容忍度
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
warn (bool, 可选。) – 当EMD没有收敛时是否引发警告。
log (bool, optional) – 如果为 True,则返回日志
verbose (bool, 可选) – 在迭代过程中打印信息
**kwargs (dict) – 参数可以直接传递给 emd 求解器
- Returns:
T (类似数组,形状 (ns, nt)) – 两个空间之间的最优传输矩阵。
log (dict) – 收敛信息和损失。
示例
>>> from ot.gromov import partial_gromov_wasserstein >>> import scipy as sp >>> a = np.array([0.25] * 4) >>> b = np.array([0.25] * 4) >>> x = np.array([1,2,100,200]).reshape((-1,1)) >>> y = np.array([3,2,98,199]).reshape((-1,1)) >>> C1 = sp.spatial.distance.cdist(x, x) >>> C2 = sp.spatial.distance.cdist(y, y) >>> np.round(partial_gromov_wasserstein(C1, C2, a, b),2) array([[0. , 0.25, 0. , 0. ], [0.25, 0. , 0. , 0. ], [0. , 0. , 0.25, 0. ], [0. , 0. , 0. , 0.25]]) >>> np.round(partial_gromov_wasserstein(C1, C2, a, b, m=0.25),2) array([[0. , 0. , 0. , 0. ], [0. , 0. , 0. , 0. ], [0. , 0. , 0.25, 0. ], [0. , 0. , 0. , 0. ]])
参考文献
[29] Chapel, L., Alaya, M., Gasso, G. (2020). “部分最优传输及其在正负标签学习中的应用”。NeurIPS.
- ot.gromov.partial_gromov_wasserstein2(C1, C2, p=None, q=None, m=None, loss_fun='square_loss', nb_dummies=1, G0=None, thres=1, numItermax=10000.0, tol=1e-07, symmetric=None, warn=False, log=False, verbose=False, **kwargs)[源]
返回部分 Gromov-Wasserstein 差异,介于 \((\mathbf{C_1}, \mathbf{p})\) 和 \((\mathbf{C_2}, \mathbf{q})\) 之间。
该函数使用条件梯度法解决以下优化问题:
\[ \begin{align}\begin{aligned}\mathbf{PGW} = \mathop{\min}_\mathbf{T} \quad \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\\ \mathbf{1}^T \mathbf{T}^T \mathbf{1} = m &\leq \min\{\|\mathbf{p}\|_1, \|\mathbf{q}\|_1\}\end{aligned}\end{align} \]其中 :
\(\mathbf{C_1}\): 源空间中的度量成本矩阵。
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵。
\(\mathbf{p}\): 源空间中的分布。
\(\mathbf{q}\): 目标空间中的分布。
m 是要运输的质量量
L: 用于考虑相似度矩阵之间不匹配的损失函数。
该问题的公式已在 [29]中提出
请注意,当使用后端时,此损失函数对矩阵(C1, C2)是可微的。
注意
此函数与后端兼容,可用于所有兼容后端的数组。但该算法使用C++ CPU后端,这可能导致在GPU数组上产生复制开销。
注意
共轭梯度求解器中的所有计算均使用numpy进行,以限制内存开销。
注意
此函数将把计算出的运输计划转换为提供的输入数据类型 \(\mathbf{C}_1\)。转换为整数张量可能会导致精度损失。如果不希望出现这种行为,请确保提供浮点输入。
- Parameters:
C1 (ndarray, shape (ns, ns)) – 源空间中的度量成本矩阵
C2 (ndarray, shape (nt, nt)) – 目标空间中的度量成本矩阵
p (ndarray, shape (ns,)) – 源空间中的分布
q (ndarray, shape (nt,)) – 目标空间中的分布
m (float, 可选) – 要运输的质量量(默认值: \(\min\{\|\mathbf{p}\|_1, \|\mathbf{q}\|_1\}\))
loss_fun (str, 可选) – 求解器使用的损失函数,可以是‘square_loss’或‘kl_loss’。
nb_dummies (int, 可选) – 要添加的虚拟点数(避免EMD求解器的不稳定性)
G0 (ndarray, shape (ns, nt), optional) – 运输矩阵的初始化
thres (float, 可选) – 当为0时,用于填充成本矩阵的梯度矩阵的分位数(默认值:1)
numItermax (int, 可选) – 最大迭代次数
tol (float, 可选) – 停止迭代的容忍度
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
warn (bool, 可选。) – 当EMD没有收敛时是否引发警告。
log (bool, optional) – 如果为 True,则返回日志
verbose (bool, 可选) – 在迭代过程中打印信息
**kwargs (dict) – 参数可以直接传递给 emd 求解器
警告
当处理大量点时,EMD求解器可能会遇到一些不稳定性,特别是当与虚拟点相关的质量较大时。为了避免这些问题,请增加虚拟点的数量(允许在点之间更平滑地分配质量)。
- Returns:
partial_gw_dist (float) – 部分GW差异
log (dict) – 仅当 log 为 True 时返回的日志字典
示例
>>> from ot.gromov import partial_gromov_wasserstein2 >>> import scipy as sp >>> a = np.array([0.25] * 4) >>> b = np.array([0.25] * 4) >>> x = np.array([1,2,100,200]).reshape((-1,1)) >>> y = np.array([3,2,98,199]).reshape((-1,1)) >>> C1 = sp.spatial.distance.cdist(x, x) >>> C2 = sp.spatial.distance.cdist(y, y) >>> np.round(partial_gromov_wasserstein2(C1, C2, a, b),2) 3.38 >>> np.round(partial_gromov_wasserstein2(C1, C2, a, b, m=0.25),2) 0.0
参考文献
[29] Chapel, L., Alaya, M., Gasso, G. (2020). “部分最优传输及其在正负标签学习中的应用”。NeurIPS.
- ot.gromov.pointwise_gromov_wasserstein(C1, C2, p, q, loss_fun, alpha=1, max_iter=100, threshold_plan=0, log=False, verbose=False, random_state=None)[源]
返回使用随机Frank-Wolfe算法的gromov-wasserstein传输,介于\((\mathbf{C_1}, \mathbf{p})\)和\((\mathbf{C_2}, \mathbf{q})\)之间。此方法的时间复杂度为\(\mathcal{O}(\mathrm{max\_iter} \times PN^2)\),其中P为Sinkhorn迭代次数。
该函数解决以下优化问题:
\[ \begin{align}\begin{aligned}\mathbf{GW} = \mathop{\arg \min}_\mathbf{T} \quad \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]其中:
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{p}\): 源空间中的分布
\(\mathbf{q}\): 目标空间中的分布
L: 损失函数,用于考虑相似矩阵之间的不匹配
- Parameters:
C1 (类似数组, 形状 (ns, ns)) – 源空间中的度量成本矩阵
C2 (类似数组, 形状 (nt, nt)) – 目标空间中的度量成本矩阵
p (数组类似, 形状 (ns,)) – 源空间中的分布
q (数组类似, 形状 (nt,)) – 目标空间中的分布
loss_fun (function: \(\mathbb{R} \times \mathbb{R} \mapsto \mathbb{R}\)) – 用于距离的损失函数,传输计划不依赖于损失函数
alpha (float) – Frank-Wolfe算法的步长,应该在0到1之间
max_iter (int, 可选) – 最大迭代次数
threshold_plan (float, 可选) – 删除运输计划中的非常小的值。如果大于零,则违反边际约束。
verbose (bool, 可选) – 在迭代过程中打印信息
log (bool, optional) – 给出估计的距离和标准差
random_state (int 或 RandomState 实例, 可选) – 固定种子以保证可重复性
- Returns:
T – 两个空间之间的最佳耦合
- Return type:
数组类似,形状 (ns, nt)
参考文献
[14] Kerdoncuff, Tanguy, Emonet, Rémi, Sebban, Marc “采样的Gromov Wasserstein。” 机器学习期刊(MLJ)。2021。
- ot.gromov.quantized_fused_gromov_wasserstein(C1, C2, npart1, npart2, p=None, q=None, C1_aux=None, C2_aux=None, F1=None, F2=None, alpha=1.0, part_method='fluid', rep_method='random', log=False, armijo=False, max_iter=10000.0, tol_rel=1e-09, tol_abs=1e-09, random_state=0, **kwargs)[源]
返回量化的融合Gromov-Wasserstein运输,介于 \((\mathbf{C_1}, \mathbf{F_1}, \mathbf{p})\) 和 \((\mathbf{C_2}, \mathbf{F_2}, \mathbf{q})\) 之间,其样本被分配到分区和 代表 \(\mathcal{P_1} = \{(\mathbf{P_{1, i}}, \mathbf{r_{1, i}})\}_{i \leq npart1}\) 和 \(\mathcal{P_2} = \{(\mathbf{P_{2, j}}, \mathbf{r_{2, j}})\}_{j \leq npart2}\)。
该函数估计以下优化问题:
\[ \begin{align}\begin{aligned}\mathbf{T}^* \in \mathop{\arg \min}_\mathbf{T} \quad \alpha \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l} + (1-\alpha) \langle \mathbf{T}, \mathbf{D}(\mathbf{F_1}, \mathbf{F}_2) \rangle_F s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\\ \mathbf{T}_{|\mathbf{P_{1, i}}, \mathbf{P_{2, j}}} &= T^{g}_{ij} \mathbf{T}^{(i,j)}\end{aligned}\end{align} \]使用两步策略计算:i) 在联合结构和特征空间之间进行全局对齐 \(\mathbf{T}^{g}\); ii) 在被视为1D度量的分区 \(\mathbf{P_{1, i}}\) 和 \(\mathbf{P_{2, j}}\) 之间进行局部对齐 \(\mathbf{T}^{(i, j)}\)。
其中:
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{F_1}\): 源空间中的特征矩阵
\(\mathbf{F_2}\): 目标空间中的特征矩阵
\(\mathbf{D}(\mathbf{F_1}, \mathbf{F_2})\): 特征之间的成对欧几里得距离矩阵
\(\mathbf{p}\): 源空间中的分布
\(\mathbf{q}\): 目标空间中的分布
\(L\): 二次损失函数,用于考虑相似性矩阵之间的失配
注意
此函数与后端兼容,可用于所有兼容后端的数组。但该算法使用C++ CPU后端,这可能导致在GPU数组上产生复制开销。
注意
共轭梯度求解器中的所有计算均使用numpy进行,以限制内存开销。
- Parameters:
C1 (类数组, 形状 (ns, ns)) – 源空间中的结构矩阵。
C2 (类数组, 形状 (nt, nt)) – 目标空间中的结构矩阵。
npart1 (int,) – 源空间中的分区数量。
npart2 (int,) – 目标空间中的分区数量。
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
q (数组类型, 形状 (nt,), 可选) – 目标空间中的分布。如果保持默认值 None,将采用均匀分布。
C1_aux (类似数组, 形状 (ns, ns), 可选。默认为 None。) – 用于在源空间进行分区和代表选择的辅助结构矩阵。
C2_aux (类数组, 形状 (nt, nt), 可选。默认值为 None。) – 目标空间中的辅助结构矩阵,用于执行划分和代表性选择。
F1 (类数组, 形状 (ns, d), 可选。默认为 None。) – 源空间中的特征矩阵。
F2 (类似数组, 形状 (nt, d), 可选。默认值为 None。) – 目标空间中的特征矩阵
alpha (float, 可选。默认值为1。) – 结构和特征之间的FGW权衡参数在 \(]0, 1]\) 内。 如果 alpha = 1 则忽略特征,因此计算qGW,如果 alpha=0 则忽略结构,我们计算量化的Wasserstein传输。
part_method (str, 可选。默认为'spectral'。) – 要使用的划分算法,可选值为{‘random’, ‘louvain’, ‘fluid’, ‘spectral’, ‘louvain_fused’, ‘fluid_fused’, ‘spectral_fused’, ‘GW’, ‘FGW’}。 如果 part_method 在 {‘louvain_fused’, ‘fluid_fused’, ‘spectral_fused’} 中,将在修改后的结构矩阵上使用相应的图划分算法 {‘louvain’, ‘fluid’, ‘spectral’} \(\alpha \mathbf{C} + (1 - \alpha) \mathbf{D}(\mathbf{F})\),其中 \(\mathbf{D}(\mathbf{F})\) 是特征之间的成对欧几里得矩阵。 如果 part_method 在 {‘GW’, ‘FGW’} 中,将使用 (F)GW 投影。 如果使用的是 louvain 算法,请求的划分数量将被忽略。
rep_method (str, 可选。默认值为 'pagerank'。) – 每个分区中节点代表的选择方法。 可以是‘random’,即在每个分区内进行随机抽样, {‘pagerank’, ‘pagerank_fused’}用于选择与最大pagerank相关的节点 \(\mathbf{C}\)或\(\alpha \mathbf{C} + (1 - \alpha) \mathbf{D}(\mathbf{F})\)。
verbose (bool, 可选) – 在迭代过程中打印信息
log (bool, 可选) – 如果为真,则记录日志
armijo (bool, 可选) – 如果为真,则通过armijo研究找到线搜索的步长。否则使用封闭形式。如果存在收敛问题,请使用假。
max_iter (int, 可选) – 最大迭代次数
tol_rel (float, 可选) – 相对误差的停止阈值 (>0)
tol_abs (float, 可选) – 绝对误差停止阈值 (>0)
random_state (int, 可选) – 分区算法的随机种子
**kwargs (dict) – 参数可以直接传递给 ot.optim.cg 求解器
- Returns:
T_global (array-like, shape (npart1, npart2)) – 表示代表点之间的融合 Gromov-Wasserstein 对齐 \(\mathbf{T}^{g}\).
Ts_local (局部 OT 矩阵的字典。) – 一个字典,其键 \((i, j)\) 对应于当 \(T^{g}_{ij} \neq 0\) 时 \(\mathbf{P_{1, i}}\) 和 \(\mathbf{P_{2, j}}\) 之间的 1D OT.
T (array-like, shape (ns, nt)) – 两个空间之间的耦合.
log (字典) – 内部问题和 qGW 损失的收敛信息.
参考文献
[68] Chowdhury, S., Miller, D., & Needham, T. (2021). 量化的Gromov-Wasserstein。ECML PKDD 2021。Springer国际出版。
- ot.gromov.quantized_fused_gromov_wasserstein_partitioned(CR1, CR2, list_R1, list_R2, list_p1, list_p2, MR=None, alpha=1.0, build_OT=False, log=False, armijo=False, max_iter=10000.0, tol_rel=1e-09, tol_abs=1e-09, nx=None, **kwargs)[源]
返回量化的融合Gromov-Wasserstein传输,介于 \((\mathbf{C_1}, \mathbf{F_1}, \mathbf{p})\) 和 \((\mathbf{C_2}, \mathbf{F_2}, \mathbf{q})\) 之间,其样本被分配到分区和代表 \(\mathcal{P_1} = \{(\mathbf{P_{1, i}}, \mathbf{r_{1, i}})\}_{i \leq npart1}\) 和 \(\mathcal{P_2} = \{(\mathbf{P_{2, j}}, \mathbf{r_{2, j}})\}_{j \leq npart2}\)。 后者必须预先计算并编码,例如源的: \(\mathbf{CR_1}\) 结构矩阵在代表之间; list_R1 是代表和其相关样本之间的关系列表; list_p1 是每个分区内节点 分布的列表; \(\mathbf{FR_1}\) 是代表的特征矩阵。
该函数估计以下优化问题:
\[ \begin{align}\begin{aligned}\mathbf{T}^* \in \mathop{\arg \min}_\mathbf{T} \quad \alpha \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l} + (1-\alpha) \langle \mathbf{T}, M\rangle_F s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\\ \mathbf{T}_{|\mathbf{P_{1, i}}, \mathbf{P_{2, j}}} &= T^{g}_{ij} \mathbf{T}^{(i,j)}\end{aligned}\end{align} \]使用两步策略计算:i) 在表示的联合结构和特征空间之间进行全局对齐 \(\mathbf{T}^{g}\);ii) 在被视为一维测量的部分 \(\mathbf{P_{1, i}}\) 和 \(\mathbf{P_{2, j}}\) 之间进行局部对齐 \(\mathbf{T}^{(i, j)}\)。
其中:
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{F_1}\): 源空间中的特征矩阵
\(\mathbf{F_2}\): 目标空间中的特征矩阵
\(\mathbf{M}\): 特征之间的成对相似度矩阵
\(\mathbf{p}\): 源空间中的分布
\(\mathbf{q}\): 目标空间中的分布
\(L\): 二次损失函数,用于考虑相似性矩阵之间的失配
注意
此函数与后端兼容,可用于所有兼容后端的数组。但该算法使用C++ CPU后端,这可能导致在GPU数组上产生复制开销。
注意
在Gromov-Wasserstein共轭梯度求解器中,所有的计算都使用numpy来限制内存开销。
- Parameters:
CR1 (类似数组, 形状 (npart1, npart1)) – 源空间中分区代表之间的结构矩阵。
CR2 (类数组, 形状 (npart2, npart2)) – 目标空间中分区代表体之间的结构矩阵。
list_R1 (list 的 npart1 数组,) – 代表和它们在源空间中关联的样本之间的关系列表。
list_R2 (list 的 npart2 数组,) – 表示样本与其在目标空间中相关联的代表之间关系的列表。
list_p1 (list 的 npart1 数组,) – 源空间每个划分内的节点分布列表。
list_p (list 的 npart2 数组,) – 目标空间中每个分区的节点分布列表。
MR (阵列类型, 形状 (npart1, npart2), 可选. (默认为 None)) – 代表体跨空间特征之间的度量成本矩阵。
alpha (浮点数, 可选。默认值为 None。) – 在结构和特征之间的 FGW 权衡参数 \(]0, 1]\)。 如果 alpha = 1,则忽略特征,因此计算 qGW。
build_OT (bool, 可选。默认为 False) – 是否构建非分区结构之间的 OT。
log (bool, 可选。默认值为 False) – 如果为 True 则记录日志
armijo (bool, 可选) – 如果为真,则通过armijo研究找到线搜索的步长。否则使用封闭形式。如果存在收敛问题,请使用假。
max_iter (int, 可选) – 最大迭代次数
tol_rel (float, 可选) – 相对误差的停止阈值 (>0)
tol_abs (float, 可选) – 绝对误差停止阈值 (>0)
nx (后端, 可选的) – POT 后端
**kwargs (dict) – 参数可以直接传递给 ot.optim.cg 求解器
- Returns:
T_global (类数组,形状 (npart1, npart2)) – Gromov-Wasserstein 对齐 \(\mathbf{T}^{g}\) 在代表点之间。
Ts_local (局部OT矩阵的字典。) – 具有键 \((i, j)\) 的字典,对应于 \(\mathbf{P_{1, i}}\) 和 \(\mathbf{P_{2, j}}\) 之间的 1D OT 如果 \(T^{g}_{ij} \neq 0\)。
T (类数组,形状 (ns, nt)) – 如果 build_OT=True 则为空间之间的耦合,否则为 None。
log (字典,如果 log=True.) – 内部 OT 问题的收敛信息和损失。
参考文献
[68] Chowdhury, S., Miller, D., & Needham, T. (2021). 量化的Gromov-Wasserstein。ECML PKDD 2021。Springer国际出版。
- ot.gromov.quantized_fused_gromov_wasserstein_samples(X1, X2, npart1, npart2, p=None, q=None, F1=None, F2=None, alpha=1.0, method='kmeans', log=False, armijo=False, max_iter=10000.0, tol_rel=1e-09, tol_abs=1e-09, random_state=0, **kwargs)[源]
返回样本之间量化的融合 Gromov-Wasserstein 运输,这些样本具有各自的欧几里得几何 \((\mathbf{D}(\mathbf{X_1}), \mathbf{F_1}, \mathbf{p})\) 和 \((\mathbf{D}(\mathbf{X_1}), \mathbf{F_2}, \mathbf{q})\),样本分配到分区和代表 \(\mathcal{P_1} = \{(\mathbf{P_{1, i}}, \mathbf{r_{1, i}})\}_{i \leq npart1}\) 和 \(\mathcal{P_2} = \{(\mathbf{P_{2, j}}, \mathbf{r_{2, j}})\}_{j \leq npart2}\)。
该函数估计以下优化问题:
\[ \begin{align}\begin{aligned}\mathbf{T}^* \in \mathop{\arg \min}_\mathbf{T} \quad \alpha \sum_{i,j,k,l} L(\mathbf{D}(\mathbf{X_1})_{i,k}, \mathbf{D}(\mathbf{X_2})_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l} + (1-\alpha) \langle \mathbf{T}, \mathbf{D}(\mathbf{F_1}, \mathbf{F}_2) \rangle_F s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\\ \mathbf{T}_{|\mathbf{P_{1, i}}, \mathbf{P_{2, j}}} &= T^{g}_{ij} \mathbf{T}^{(i,j)}\end{aligned}\end{align} \]使用两步策略计算:i) 在联合结构和特征空间之间进行全局对齐 \(\mathbf{T}^{g}\); ii) 在被视为1D度量的分区 \(\mathbf{P_{1, i}}\) 和 \(\mathbf{P_{2, j}}\) 之间进行局部对齐 \(\mathbf{T}^{(i, j)}\)。
其中:
\(\mathbf{X_1}\): 源空间中的样本
\(\mathbf{X_2}\): 目标空间中的样本
\(\mathbf{F_1}\): 源空间中的特征矩阵
\(\mathbf{F_2}\): 目标空间中的特征矩阵
\(\mathbf{D}(\mathbf{F_1}, \mathbf{F_2})\): 特征之间的成对欧几里得距离矩阵
\(\mathbf{p}\): 源空间中的分布
\(\mathbf{q}\): 目标空间中的分布
\(L\): 二次损失函数,用于考虑相似性矩阵之间的失配
注意
此函数与后端兼容,可用于所有兼容后端的数组。但该算法使用C++ CPU后端,这可能导致在GPU数组上产生复制开销。
注意
共轭梯度求解器中的所有计算均使用numpy进行,以限制内存开销。
- Parameters:
X1 (类似数组, 形状 (ns, ds)) – 源空间中的样本。
X2 (类数组, 形状 (nt, dt)) – 目标空间中的样本。
npart1 (int,) – 源空间中的分区数量。
npart2 (int,) – 目标空间中的分区数量。
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
q (数组类型, 形状 (nt,), 可选) – 目标空间中的分布。如果保持默认值 None,将采用均匀分布。
F1 (类数组, 形状 (ns, d), 可选。默认为 None。) – 源空间中的特征矩阵。
F2 (类似数组, 形状 (nt, d), 可选。默认值为 None。) – 目标空间中的特征矩阵
alpha (float, 可选。默认值为1。) – 结构和特征之间的FGW权衡参数在 \(]0, 1]\) 内。 如果 alpha = 1 则忽略特征,因此计算qGW,如果 alpha=0 则忽略结构,我们计算量化的Wasserstein传输。
方法 (字符串, 可选。默认为 'kmeans'。) – 用于选择分区和代表性选择算法 {‘random’, ‘kmeans’, ‘kmeans_fused’}。 如果 part_method == ‘kmeans_fused’,则在增强样本上执行 kmeans \([\alpha \mathbf{X}; (1 - \alpha) \mathbf{F}]\)。
verbose (bool, 可选) – 在迭代过程中打印信息
log (bool, 可选) – 如果为真,则记录日志
armijo (bool, 可选) – 如果为真,则通过armijo研究找到线搜索的步长。否则使用封闭形式。如果存在收敛问题,请使用假。
max_iter (int, 可选) – 最大迭代次数
tol_rel (float, 可选) – 相对误差的停止阈值 (>0)
tol_abs (float, 可选) – 绝对误差停止阈值 (>0)
random_state (int, 可选) – 分区算法的随机种子
**kwargs (dict) – 参数可以直接传递给 ot.optim.cg 求解器
- Returns:
T_global (array-like, shape (npart1, npart2)) – 表示代表点之间的融合 Gromov-Wasserstein 对齐 \(\mathbf{T}^{g}\).
Ts_local (局部 OT 矩阵的字典。) – 一个字典,其键 \((i, j)\) 对应于当 \(T^{g}_{ij} \neq 0\) 时 \(\mathbf{P_{1, i}}\) 和 \(\mathbf{P_{2, j}}\) 之间的 1D OT.
T (array-like, shape (ns, nt)) – 两个空间之间的耦合.
log (字典) – 内部问题和 qGW 损失的收敛信息.
参考文献
[68] Chowdhury, S., Miller, D., & Needham, T. (2021). 量化的Gromov-Wasserstein。ECML PKDD 2021。Springer国际出版。
- ot.gromov.sampled_gromov_wasserstein(C1, C2, p, q, loss_fun, nb_samples_grad=100, epsilon=1, max_iter=500, log=False, verbose=False, random_state=None)[源]
返回使用1-随机Frank-Wolfe的gromov-wasserstein传输,介于\((\mathbf{C_1}, \mathbf{p})\)和\((\mathbf{C_2}, \mathbf{q})\)之间。此方法的时间复杂度为\(\mathcal{O}(\mathrm{max\_iter} \times N \log(N))\),依赖于1D最优传输求解器。
该函数解决以下优化问题:
\[ \begin{align}\begin{aligned}\mathbf{GW} = \mathop{\arg \min}_\mathbf{T} \quad \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T}^T \mathbf{1} &= \mathbf{q}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]其中:
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{p}\): 源空间中的分布
\(\mathbf{q}\): 目标空间中的分布
L: 损失函数,用于考虑相似矩阵之间的不匹配
- Parameters:
C1 (类似数组, 形状 (ns, ns)) – 源空间中的度量成本矩阵
C2 (类似数组, 形状 (nt, nt)) – 目标空间中的度量成本矩阵
p (数组类似, 形状 (ns,)) – 源空间中的分布
q (数组类似, 形状 (nt,)) – 目标空间中的分布
loss_fun (function: \(\mathbb{R} \times \mathbb{R} \mapsto \mathbb{R}\)) – 用于距离的损失函数,传输计划不依赖于损失函数
nb_samples_grad (int) – 用于近似梯度的样本数量
epsilon (float) – Kullback-Leibler正则化的权重
max_iter (int, 可选) – 最大迭代次数
verbose (bool, 可选) – 在迭代过程中打印信息
log (bool, optional) – 给出估计的距离和标准差
random_state (int 或 RandomState 实例, 可选) – 固定种子以保证可重复性
- Returns:
T – 两个空间之间的最佳耦合
- Return type:
数组类似,形状 (ns, nt)
参考文献
[14] Kerdoncuff, Tanguy, Emonet, Rémi, Sebban, Marc “采样的Gromov Wasserstein。” 机器学习期刊(MLJ)。2021。
- ot.gromov.semirelaxed_fgw_barycenters(N, Ys, Cs, ps=None, lambdas=None, alpha=0.5, fixed_structure=False, fixed_features=False, p=None, loss_fun='square_loss', symmetric=True, max_iter=100, tol=1e-09, stop_criterion='barycenter', warmstartT=False, verbose=False, log=False, init_C=None, init_X=None, G0='product', random_state=None, **kwargs)[源]
返回 S 可测网络的半放松融合 Gromov-Wasserstein 重心,节点特征为 \((\mathbf{C}_s, \mathbf{Y}_s, \mathbf{p}_s)_{1 \leq s \leq S}\) (见 [48] 中的公式 (44),使用条件梯度求解器的半放松 FGW 传输进行估计。
该函数解决以下优化问题:
\[\mathbf{C}^*, \mathbf{Y}^* = \mathop{\arg \min}_{\mathbf{C}\in \mathbb{R}^{N \times N}, \mathbf{Y}\in \mathbb{Y}^{N \times d}} \quad \sum_s \lambda_s \mathrm{srFGW}_{\alpha}(\mathbf{C}_s, \mathbf{Y}_s, \mathbf{p}_s, \mathbf{C}, \mathbf{Y})\]其中:
\(\mathbf{Y}_s\): 输入特征矩阵
\(\mathbf{C}_s\): 输入度量成本矩阵
\(\mathbf{p}_s\): 输入分布
- Parameters:
N (int) – 目标重心的期望样本数量
Ys (列表 的 类似数组的对象, 每个元素的形状为 (ns,d)) – 所有样本的特征
Cs (列表 的 类数组, 每个元素的形状为 (ns,ns)) – 所有样本的结构矩阵
ps (list 的 类数组, 每个元素的形状为 (ns,), 可选) – 所有样本的质量。 如果保持默认值为 None,将采用均匀分布。
lambdas (类似数组 的 形状 (S,) , 可选) – S 空间权重的列表。
如果保持默认值为 None,将采用均匀权重。alpha (float, optional) – srFGW散度的alpha参数,在\(]0, 1[\)范围内。
fixed_structure (bool, optional) – 在更新过程中是否固定重心的结构。
fixed_features (bool, optional) – 在更新期间是否固定重心的特征
loss_fun (str, 可选) – 用于求解器的损失函数,可以是‘square_loss’或‘kl_loss’
对称 (布尔值, 可选) – 结构是否假定为对称。默认值为 True。 如果设置为 True(分别为 False),C1 和 C2 将被假定为对称(分别为非对称)。
max_iter (int, 可选) – 最大迭代次数
tol (float, 可选) – 停止相对误差的阈值 (>0)
stop_criterion (str, 可选。默认值为'barycenter'。) – 停止标准取值为 [‘barycenter’, ‘loss’]。如果设置为‘barycenter’,则使用估计的重心的绝对范数变化。否则如果设置为‘loss’,则使用损失的相对变化。
warmstartT (bool, 可选) – 是否在连续的融合Gromov-Wasserstein传输问题中执行传输计划的热启动。
verbose (bool, optional) – 在迭代过程中打印信息。
log (bool, 可选) – 如果为真,则记录日志。
init_C (类数组, 形状 (N,N), 可选) – 重心结构矩阵的初始化。如果未设置,将使用随机初始化。
init_X (array-like, shape (N,d), optional) – 重心特征的初始化。如果未设置,则使用随机初始化。
G0 (str, 可选。默认值为“product”。) – 初始化运输计划的方法,调用
ot.gromov.semirelaxed_init_plan(),并接受“product”、“random_product”、“random”、“fluid”、“fluid_soft”、“spectral”、“spectral_soft”、“kmeans”、“kmeans_soft”中的值。如果 init_C=None,运输计划用于推导初始重心结构。random_state (int 或 RandomState 实例, 可选) – 固定种子以保证可重复性
- Returns:
X (类数组,形状 (N, d)) – 重心的特征
C (类数组,形状 (N, N)) – 重心的结构矩阵
log (dict) – 仅在 log=True 时返回。它包含以下键:
\(\mathbf{T}_s\): 从中可以推导目标质量的 (N, ns) 运输矩阵的列表。
\((\mathbf{M}_s)_s\): 重心特征与其他特征之间的所有距离矩阵 \((dist(\mathbf{X}, \mathbf{Y}_s))_s\) 形状为 (N, ns)
用于收敛评估的值。
参考文献
[48] Cédric Vincent-Cuaz, Rémi Flamary, Marco Corneli, Titouan Vayer, Nicolas Courty. “半放松Gromov-Wasserstein散度及其在图上的应用” 国际学习表示会议(ICLR),2022。
- ot.gromov.semirelaxed_fused_gromov_wasserstein(M, C1, C2, p=None, loss_fun='square_loss', symmetric=None, alpha=0.5, G0=None, log=False, max_iter=10000.0, tol_rel=1e-09, tol_abs=1e-09, random_state=0, **kwargs)[源]
计算两个图之间的半松弛融合Gromov-Wasserstein传输(见[48])。
\[ \begin{align}\begin{aligned}\mathbf{T}^* \in \mathop{\arg \min}_{\mathbf{T}} \quad (1 - \alpha) \langle \mathbf{T}, \mathbf{M} \rangle_F + \alpha \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) T_{i,j} T_{k,l}\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]其中 :
\(\mathbf{M}\) 是 (ns, nt) 计量成本矩阵
\(\mathbf{p}\) 源权重(总和为1)
L 是一个损失函数,用于考虑相似性矩阵之间的失配
注意
此函数与后端兼容,可以适用于所有兼容后端的数组。然而,条件梯度中的所有步骤都是不可微的。
用于解决该问题的算法是条件梯度,如[48]中所述
- Parameters:
M (类似数组, 形状 (ns, nt)) – 各域中特征之间的度量成本矩阵
C1 (类似数组, 形状 (ns, ns)) – 表示源空间中结构的度量成本矩阵
C2 (数组类型, 形状 (nt, nt)) – 在目标空间中代表结构的度量成本矩阵
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
loss_fun (str) – 求解器使用的损失函数,可以是'square_loss'或'kl_loss'。
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
alpha (浮动, 可选) – 权衡参数 (0 < alpha < 1)
G0 (类数组 的 形状 (ns,nt) 或 字符串, 可选) – 如果 G0=None,求解器的初始传输计划为 \(\mathbf{p} \frac{\mathbf{1}_{nt}}{nt}^\top\)。如果 G0 是一个张量,它必须满足边际约束,并将作为求解器的初始传输使用。如果 G0 是一个字符串,它将被解释为一种方法,用于
ot.gromov.semirelaxed_init_plan(),取值为 “product”, “random_product”, “random”, “fluid”, “fluid_soft”, “spectral”, “spectral_soft”, “kmeans”, “kmeans_soft”。log (bool, 可选) – 如果为真,则记录日志
max_iter (int, 可选) – 最大迭代次数
tol_rel (float, 可选) – 相对误差的停止阈值 (>0)
tol_abs (float, 可选) – 绝对误差停止阈值 (>0)
random_state (int, 可选) – 在随机初始化方法中使用的随机种子。
**kwargs (dict) – 参数可以直接传递给 ot.optim.cg 求解器
- Returns:
gamma (数组类型, 形状 (ns, nt)) – 给定参数的最优运输矩阵。
log (字典) – 仅当参数中的 log==True 时返回日志字典。
参考文献
[24] Vayer Titouan, Chapel Laetitia, Flamary Rémi, Tavenard Romain 和 Courty Nicolas “结构化数据的最优传输及其在图上的应用”,国际机器学习大会 (ICML)。 2019.
[48] Cédric Vincent-Cuaz, Rémi Flamary, Marco Corneli, Titouan Vayer, Nicolas Courty. “半放松Gromov-Wasserstein散度及其在图上的应用” 国际学习表示会议(ICLR),2022。
[62] H. Van Assel, C. Vincent-Cuaz, T. Vayer, R. Flamary, N. Courty. “在聚类与降维之间进行插值与 Gromov-Wasserstein”。NeurIPS 2023 研讨会 OTML。
- ot.gromov.semirelaxed_fused_gromov_wasserstein2(M, C1, C2, p=None, loss_fun='square_loss', symmetric=None, alpha=0.5, G0=None, log=False, max_iter=10000.0, tol_rel=1e-09, tol_abs=1e-09, random_state=0, **kwargs)[源]
计算两个图之间的半松弛FGW散度(见[48])。
\[ \begin{align}\begin{aligned}\mathbf{srFGW}_{\alpha} = \min_{\mathbf{T}} \quad (1 - \alpha) \langle \mathbf{T}, \mathbf{M} \rangle_F + \alpha \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) T_{i,j} T_{k,l}\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]其中 :
\(\mathbf{M}\) 是 (ns, nt) 计量成本矩阵
\(\mathbf{p}\) 源权重(总和为1)
L 是一个损失函数,用于考虑相似性矩阵之间的失配
用于解决问题的算法是条件梯度,如在 [48] 中讨论的那样
注意,当使用后端时,这个损失函数对矩阵 (C1, C2) 是可微的,但尚未对权重 p 可微。
注意
此函数与后端兼容,可以适用于所有兼容后端的数组。然而,条件梯度中的所有步骤都是不可微的。
- Parameters:
M (类似数组, 形状 (ns, nt)) – 各域中特征之间的度量成本矩阵
C1 (类数组, 形状 (ns, ns)) – 表示源空间结构的度量成本矩阵。
C2 (类数组, 形状 (nt, nt)) – 代表目标空间中结构的指标成本矩阵。
p (类数组, 形状 (ns,)) – 源空间中的分布。 如果让其保持默认值 None,则采用均匀分布。
loss_fun (str, 可选) – 用于求解器的损失函数,可以是‘square_loss’或‘kl_loss’。
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
alpha (浮动, 可选) – 权衡参数 (0 < alpha < 1)
G0 (类数组 的 形状 (ns,nt) 或 字符串, 可选) – 如果 G0=None,求解器的初始传输计划为 \(\mathbf{p} \frac{\mathbf{1}_{nt}}{nt}^\top\)。如果 G0 是一个张量,它必须满足边际约束,并将作为求解器的初始传输使用。如果 G0 是一个字符串,它将被解释为一种方法,用于
ot.gromov.semirelaxed_init_plan(),取值为 “product”, “random_product”, “random”, “fluid”, “fluid_soft”, “spectral”, “spectral_soft”, “kmeans”, “kmeans_soft”。log (bool, 可选) – 如果为真,则记录日志。
max_iter (int, 可选) – 最大迭代次数
tol_rel (float, 可选) – 相对误差的停止阈值 (>0)
tol_abs (float, 可选) – 绝对误差停止阈值 (>0)
random_state (int, 可选) – 在随机初始化方法中使用的随机种子。
**kwargs (dict) – 参数可以直接传递给 ot.optim.cg 求解器。
- Returns:
srfgw-divergence (float) – 对于给定参数的半放松融合Gromov-Wasserstein散度。
log (dict) – 仅当参数中log==True时返回日志字典。
参考文献
[24] Vayer Titouan, Chapel Laetitia, Flamary Rémi, Tavenard Romain 和 Courty Nicolas “结构化数据的最优传输及其在图上的应用”,国际机器学习大会 (ICML)。 2019.
[48] Cédric Vincent-Cuaz, Rémi Flamary, Marco Corneli, Titouan Vayer, Nicolas Courty. “半放松Gromov-Wasserstein散度及其在图上的应用” 国际学习表示会议(ICLR),2022。
[62] H. Van Assel, C. Vincent-Cuaz, T. Vayer, R. Flamary, N. Courty. “在聚类与降维之间进行插值与 Gromov-Wasserstein”。NeurIPS 2023 研讨会 OTML。
- ot.gromov.semirelaxed_gromov_barycenters(N, Cs, ps=None, lambdas=None, loss_fun='square_loss', symmetric=True, max_iter=1000, tol=1e-09, stop_criterion='barycenter', warmstartT=False, verbose=False, log=False, init_C=None, G0='product', random_state=None, **kwargs)[源]
返回半放松的Gromov-Wasserstein重心的S测量的相似性矩阵 \((\mathbf{C}_s)_{1 \leq s \leq S}\)
该函数解决以下带块坐标下降法的优化问题:
\[\mathbf{C}^* = \mathop{\arg \min}_{\mathbf{C}\in \mathbb{R}^{N \times N}} \quad \sum_s \lambda_s \mathrm{srGW}(\mathbf{C}_s, \mathbf{p}_s, \mathbf{C})\]其中:
\(\mathbf{C}_s\): 输入度量成本矩阵
\(\mathbf{p}_s\): 分布
- Parameters:
N (int) – 目标重心的大小
Cs (列表 的 S 类似数组,形状为 (ns, ns)) – 评估成本矩阵
ps (列表 的 S 类数组,形状为 (ns,), 可选) – 在S空间中的样本权重。如果设置为默认值 None,则采用均匀分布。
lambdas (类似数组 的 形状 (S,) , 可选) – S 空间权重的列表。
如果保持默认值为 None,将采用均匀权重。loss_fun (可调用, 可选) – 基于特定损失函数的张量-矩阵乘法函数
对称的 (布尔值, 可选的.) – 结构是否被假设为对称。默认值为 True。如果设置为 True(或 False),C1 和 C2 将被假设为对称(或不对称)。
max_iter (int, 可选) – 最大迭代次数
tol (float, 可选) – 停止相对误差的阈值 (>0)
stop_criterion (str, 可选。默认值为'barycenter'。) – 停止标准取值为 [‘barycenter’, ‘loss’]。如果设置为‘barycenter’,则使用估计的重心的绝对范数变化。否则如果设置为‘loss’,则使用损失的相对变化。
warmstartT (bool, 可选) – 是否在后续的融合Gromov-Wasserstein传输问题中执行传输计划的热启动。
verbose (bool, optional) – 在迭代过程中打印信息。
log (bool, 可选) – 如果为真,则记录日志。
init_C (类数组 , 形状 (N,N), 可选.) – 用户提供的\(\mathbf{C}\)矩阵的随机初始值。默认值为None,并依赖G0来生成初始结构。
G0 (str, 可选。默认为'product'.) – 用于调用
ot.gromov.semirelaxed_init_plan()的运输计划的初始化方法,取值为“product”、“random_product”、“random”、“fluid”、“fluid_soft”、“spectral”、“spectral_soft”、“kmeans”、“kmeans_soft”。运输计划用于推导初始重心结构,如果 init_C=None.random_state (int 或 RandomState 实例, 可选) – 固定种子以保证可重复性
- Returns:
C (类数组,形状 (N, N)) – 重心结构矩阵
log (dict) – 仅在 log=True 时返回。它包含以下键:
\(\mathbf{T}\): (N, ns) 运输矩阵的列表
\(\mathbf{p}\): (N,) 重心权重
用于收敛评估的值。
参考文献
[48] Cédric Vincent-Cuaz, Rémi Flamary, Marco Corneli, Titouan Vayer, Nicolas Courty. “半放松Gromov-Wasserstein散度及其在图上的应用” 国际学习表示会议(ICLR),2022。
- ot.gromov.semirelaxed_gromov_wasserstein(C1, C2, p=None, loss_fun='square_loss', symmetric=None, log=False, G0=None, max_iter=10000.0, tol_rel=1e-09, tol_abs=1e-09, random_state=0, **kwargs)[源]
返回从 \((\mathbf{C_1}, \mathbf{p})\) 到 \(\mathbf{C_2}\) 的半放松 Gromov-Wasserstein 发散传输 (见 [48])。
该函数使用条件梯度法解决以下优化问题:
\[ \begin{align}\begin{aligned}\mathbf{T}^* \in \mathop{\arg \min}_{\mathbf{T}} \quad \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]其中:
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{p}\): 源空间中的分布
L: 损失函数,用于考虑相似矩阵之间的不匹配
注意
此函数与后端兼容,可以适用于所有兼容后端的数组。然而,条件梯度中的所有步骤都是不可微的。
- Parameters:
C1 (类似数组, 形状 (ns, ns)) – 源空间中的度量成本矩阵
C2 (类似数组, 形状 (nt, nt)) – 目标空间中的度量成本矩阵
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
loss_fun (str) – 求解器使用的损失函数,可以是'square_loss'或'kl_loss'。
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
verbose (bool, 可选) – 在迭代过程中打印信息
log (bool, 可选) – 如果为真,则记录日志
G0 (类数组 的 形状 (ns,nt) 或 字符串, 可选) – 如果 G0=None,求解器的初始传输计划为 \(\mathbf{p} \frac{\mathbf{1}_{nt}}{nt}^\top\)。如果 G0 是一个张量,它必须满足边际约束,并将作为求解器的初始传输使用。如果 G0 是一个字符串,它将被解释为一种方法,用于
ot.gromov.semirelaxed_init_plan(),取值为 “product”, “random_product”, “random”, “fluid”, “fluid_soft”, “spectral”, “spectral_soft”, “kmeans”, “kmeans_soft”。max_iter (int, 可选) – 最大迭代次数
tol_rel (float, 可选) – 相对误差的停止阈值 (>0)
tol_abs (float, 可选) – 绝对误差停止阈值 (>0)
random_state (int, 可选) – 在随机初始化方法中使用的随机种子。
**kwargs (dict) – 参数可以直接传递给 ot.optim.cg 求解器
- Returns:
T (类似数组,形状 (ns, nt)) –
最小化两个空间之间的耦合:
\(\sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\)
log (dict) – 收敛信息和损失。
参考文献
[48] Cédric Vincent-Cuaz, Rémi Flamary, Marco Corneli, Titouan Vayer, Nicolas Courty. “半放松Gromov-Wasserstein散度及其在图上的应用” 国际学习表示会议(ICLR),2022。
[62] H. Van Assel, C. Vincent-Cuaz, T. Vayer, R. Flamary, N. Courty. “在聚类与降维之间进行插值与 Gromov-Wasserstein”。NeurIPS 2023 研讨会 OTML。
- ot.gromov.semirelaxed_gromov_wasserstein2(C1, C2, p=None, loss_fun='square_loss', symmetric=None, log=False, G0=None, max_iter=10000.0, tol_rel=1e-09, tol_abs=1e-09, random_state=0, **kwargs)[源]
返回从 \((\mathbf{C_1}, \mathbf{p})\) 到 \(\mathbf{C_2}\) 的半放松 Gromov-Wasserstein 发散(见 [48])。
该函数使用条件梯度法解决以下优化问题:
\[ \begin{align}\begin{aligned}\text{srGW} = \min_{\mathbf{T}} \quad \sum_{i,j,k,l} L(\mathbf{C_1}_{i,k}, \mathbf{C_2}_{j,l}) \mathbf{T}_{i,j} \mathbf{T}_{k,l}\\s.t. \ \mathbf{T} \mathbf{1} &= \mathbf{p}\\ \mathbf{T} &\geq 0\end{aligned}\end{align} \]其中:
\(\mathbf{C_1}\): 源空间中的度量成本矩阵
\(\mathbf{C_2}\): 目标空间中的度量成本矩阵
\(\mathbf{p}\): 源空间中的分布
L: 用于考虑相似性矩阵之间不匹配的损失函数
注意,当使用后端时,这个损失函数对矩阵 (C1, C2) 是可微的,但尚未对权重 p 可微。
注意
此函数与后端兼容,可以适用于所有兼容后端的数组。然而,条件梯度中的所有步骤都是不可微的。
- Parameters:
C1 (类似数组, 形状 (ns, ns)) – 源空间中的度量成本矩阵
C2 (类似数组, 形状 (nt, nt)) – 目标空间中的度量成本矩阵
p (类数组, 形状 (ns,), 可选) – 源空间中的分布。如果默认为 None,则采用均匀分布。
loss_fun (str) – 求解器使用的损失函数,可以是'square_loss'或'kl_loss'。
对称 (布尔值, 可选) – C1 和 C2 是否被假设为对称。如果保持默认的 None 值,将进行对称性测试。否则,如果设置为 True(或 False),则 C1 和 C2 将被假设为对称(或不对称)。
verbose (bool, 可选) – 在迭代过程中打印信息
log (bool, 可选) – 如果为真,则记录日志
G0 (类数组 的 形状 (ns,nt) 或 字符串, 可选) – 如果 G0=None,求解器的初始传输计划为 \(\mathbf{p} \frac{\mathbf{1}_{nt}}{nt}^\top\)。如果 G0 是一个张量,它必须满足边际约束,并将作为求解器的初始传输使用。如果 G0 是一个字符串,它将被解释为一种方法,用于
ot.gromov.semirelaxed_init_plan(),取值为 “product”, “random_product”, “random”, “fluid”, “fluid_soft”, “spectral”, “spectral_soft”, “kmeans”, “kmeans_soft”。max_iter (int, 可选) – 最大迭代次数
tol_rel (float, 可选) – 相对误差的停止阈值 (>0)
tol_abs (float, 可选) – 绝对误差停止阈值 (>0)
random_state (int, 可选) – 在随机初始化方法中使用的随机种子。
**kwargs (dict) – 参数可以直接传递给 ot.optim.cg 求解器
- Returns:
srgw (float) – 半放松 Gromov-Wasserstein 散度
log (dict) – 收敛信息和耦合矩阵
参考文献
[48] Cédric Vincent-Cuaz, Rémi Flamary, Marco Corneli, Titouan Vayer, Nicolas Courty. “半放松Gromov-Wasserstein散度及其在图上的应用” 国际学习表示会议(ICLR),2022。
[62] H. Van Assel, C. Vincent-Cuaz, T. Vayer, R. Flamary, N. Courty. “在聚类与降维之间进行插值与 Gromov-Wasserstein”。NeurIPS 2023 研讨会 OTML。
- ot.gromov.semirelaxed_init_plan(C1, C2, p, M=None, alpha=1.0, method='product', use_target=True, random_state=0, nx=None)[源]
初始化半松弛(F)GW运输计划的启发式方法 \(\mathbf{T} \in \mathcal{U}_{nt}(\mathbf{p})\),在图 \((\mathbf{C1}, \mathbf{p})\)和结构矩阵\(\mathbf{C2}\)之间, 其中\(\mathcal{U}_{nt}(\mathbf{p}) = \{\mathbf{T} \in \mathbb{R}_{+}^{ns * nt}, \mathbf{T} \mathbf{1}_{nt} = \mathbf{p} \}\)。 可用的方法有:
“product”或“random_product”: \(\mathbf{T} = \mathbf{pq}^{T}\) 其中\(\mathbf{q}\)是均匀或随机采样的nt概率单纯形。
“random”: 在 \(\mathcal{U}_{nt}(\mathbf{p})\) 中进行随机抽样。
“fluid”: 来自networkx的流体算法用于图划分。
“spectral”, “kmeans” : 来自sklearn的光谱或K均值聚类。
“fluid_soft”, “spectral_soft”, “kmeans_soft”: \(\mathbf{T}_0\) 由相应的聚类给出,目标边际为 \(\mathbf{q}_0\),进一步中心化为 \(\mathbf{T} = (\mathbf{T}_0 + \mathbf{pq}_0^T) / 2\)。
如果提供了跨域特征之间的度量成本矩阵 \(\mathbf{M}\),它将被用作半放松 Wasserstein 问题中的成本矩阵,提供 \(\mathbf{T}_M \in \mathcal{U}_{nt}(\mathbf{p})\)。然后输出的运输计划为 \(\alpha \mathbf{T} + (1 - \alpha ) \mathbf{T}_{M}\)。
- Parameters:
C1 (类数组, 形状 (ns, ns)) – 源空间中的度量成本矩阵。
C2 (类似数组, 形状 (nt, nt)) – 目标空间中的度量成本矩阵。
p (类数组, 形状 (ns,), 可选。) – 源空间中的概率分布。如果设置为 None,则假定 C1 上的均匀权重。
M (类数组, 形状 (ns, nt), 可选.) – 特征在各个领域之间的度量成本矩阵。
alpha (float, 可选) – 权衡参数 (0 <= alpha <= 1)
方法 (str, 可选) – 用于初始化运输计划的方法。默认值为‘product’。
use_target (bool, 可选。) – 是否使用目标结构/特征来进一步对齐由method提供的运输计划。
random_state (int, 可选) – 用于随机方法的随机种子。
nx (后端, 可选) – POT 后端.
- Returns:
T – 可接受的运输计划,适用于sr(F)GW问题。
- Return type:
类数组,形状 (ns, ns)
参考文献
[48] Cédric Vincent-Cuaz, Rémi Flamary, Marco Corneli, Titouan Vayer, Nicolas Courty. “半放松Gromov-Wasserstein散度及其在图上的应用” 国际学习表示会议(ICLR),2022。
- ot.gromov.solve_gromov_linesearch(G, deltaG, cost_G, C1, C2, M, reg, alpha_min=None, alpha_max=None, nx=None, symmetric=False, **kwargs)[源]
解决FW迭代中的线搜索,对于任何内部损失,该损失的分解如[12]中的命题1所示。
- Parameters:
G (数组类似, 形状(ns,nt)) – 在FW的给定迭代中的传输图
deltaG (类数组 (ns,nt)) – 通过FW算法线性化找到的最佳映射与给定迭代值之间的差异
cost_G (float) – 在 G 的成本值
C1 (类似数组 (ns,ns), 可选) – 源域中的转换结构矩阵。 对于‘square_loss’和‘kl_loss’,我们提供来自 ot.gromov.init_matrix 的 hC1
C2 (类似数组 (nt,nt), 可选) – 源域中的变换结构矩阵。 对于‘square_loss’和‘kl_loss’,我们提供来自 ot.gromov.init_matrix 的 hC2
M (类数组 (ns,nt)) – 特征之间的成本矩阵。
reg (float) – 正则化参数。
alpha_min (float, 可选) – alpha 的最小值
alpha_max (float, 可选) – alpha的最大值
nx (backend, 可选) – 如果默认值为 None,将进行后端测试。
对称 (布尔值, 可选) – 结构是否被假定为对称。默认值为 False。 若设置为 True(相应地,False),C1 和 C2 将被假定为对称(相应地,非对称)。
- Returns:
alpha (float) – FW 的最优步长
fc (int) – 函数调用次数。这里没用
cost_G (float) – 下一次迭代的成本值
参考文献
[24] Vayer Titouan, Chapel Laetitia, Flamary Rémi, Tavenard Romain 和 Courty Nicolas “适用于图形的结构化数据的最优传输” 国际机器学习会议 (ICML)。 2019。
[12] 加布里埃尔·佩耶雷,马尔科·库图里和贾斯廷·所罗门, “核和距离矩阵的Gromov-Wasserstein平均。” 国际机器学习会议(ICML)。 2016年。
- ot.gromov.solve_partial_gromov_linesearch(G, deltaG, cost_G, df_G, df_Gc, M, reg, alpha_min=None, alpha_max=None, nx=None, **kwargs)[源]
根据[29]中的公式5,在部分(F)GW的FW迭代中解决线搜索。
- Parameters:
G (数组类似, 形状(ns,nt)) – 在FW的给定迭代中的传输图
deltaG (类似数组 (ns,nt)) – 由FW算法线性化找到的最优映射Gc与给定迭代值之间的差异
cost_G (float) – 在 G 的成本值
df_G (类数组 (ns,nt)) – 在 G 的GW成本的梯度
df_Gc (类数组 (ns,nt)) – Gc处的GW成本的梯度
M (类数组 (ns,nt)) – 特征之间的成本矩阵。
reg (float) – 正则化参数。
alpha_min (float, 可选) – alpha 的最小值
alpha_max (float, 可选) – alpha的最大值
nx (backend, 可选) – 如果默认值为 None,将进行后端测试。
- Returns:
alpha (float) – FW的最佳步长
fc (int) – 函数调用的数量。这里无用
cost_G (float) – 下一次迭代的成本值
df_G (array-like (ns,nt)) – GW成本的更新梯度
参考文献
[29] Chapel, L., Alaya, M., Gasso, G. (2020). “部分最优传输及其在正负标签学习中的应用”。NeurIPS.
- ot.gromov.solve_semirelaxed_gromov_linesearch(G, deltaG, cost_G, C1, C2, ones_p, M, reg, fC2t=None, alpha_min=None, alpha_max=None, nx=None, **kwargs)[源]
解决半放松Gromov-Wasserstein散度的条件梯度迭代中的线搜索。
- Parameters:
G (数组类似, 形状(ns,nt)) – 在FW的给定迭代中的传输图
deltaG (类数组 (ns,nt)) – 通过FW算法线性化找到的最佳映射与给定迭代值之间的差异
cost_G (float) – 在 G 的成本值
C1 (数组类似 (ns,ns), 可选) – 源域中的变换结构矩阵。 请注意,对于“平方损失”和“KL损失”,我们提供来自 ot.gromov.init_matrix_semirelaxed 的 hC1。
C2 (数组类似 (nt,nt), 可选) – 源域中的变换结构矩阵。 注意,对于 'square_loss' 和 'kl_loss',我们提供来自 ot.gromov.init_matrix_semirelaxed 的 hC2
ones_p (类似数组 (ns,1)) – 大小为 ns 的全是 1 的数组
M (类数组 (ns,nt)) – 特征之间的成本矩阵。
reg (float) – 正则化参数。
fC2t (array-like (nt,nt), optional) – 源域中的变换结构矩阵。 注意,对于“square_loss”和“kl_loss”,我们提供来自ot.gromov.init_matrix_semirelaxed的fC2t。 如果未提供fC2t,则默认为与“square_loss”对应的fC2t。
alpha_min (float, 可选) – alpha 的最小值
alpha_max (float, 可选) – alpha的最大值
nx (backend, 可选) – 如果默认值为 None,将进行后端测试。
- Returns:
alpha (float) – FW 的最优步长
fc (int) – 函数调用次数。这里没用
cost_G (float) – 下一次迭代的成本值
参考文献
[48] Cédric Vincent-Cuaz, Rémi Flamary, Marco Corneli, Titouan Vayer, Nicolas Courty. “半松弛的Gromov-Wasserstein散度及其在图上的应用” 国际学习表示会议(ICLR),2021年。
[62] H. Van Assel, C. Vincent-Cuaz, T. Vayer, R. Flamary, N. Courty. “在聚类与降维之间进行插值与 Gromov-Wasserstein”。NeurIPS 2023 研讨会 OTML。
- ot.gromov.tensor_product(constC, hC1, hC2, T, nx=None)[源]
返回用于Gromov-Wasserstein快速计算的张量
张量的计算如在[12]中的命题1公式(6)所述
- Parameters:
constC (类数组, 形状 (ns, nt))– 常量 \(\mathbf{C}\) 矩阵在公式 (6) 中
hC1 (数组类, 形状 (ns, ns)) – \(\mathbf{h1}(\mathbf{C1})\) 矩阵在方程 (6) 中
hC2 (类似数组, 形状 (nt, nt)) – \(\mathbf{h2}(\mathbf{C2})\) 矩阵在公式 (6) 中
nx (backend, 可选) – 如果默认值为 None,将进行后端测试。
- Returns:
tens – \(\mathcal{L}(\mathbf{C_1}, \mathbf{C_2}) \otimes \mathbf{T}\) 张量-矩阵乘法结果
- Return type:
数组类似,形状 (ns, nt)
参考文献
[12] 加布里埃尔·佩耶雷,马尔科·库图里和贾斯廷·所罗门, “核和距离矩阵的Gromov-Wasserstein平均。” 国际机器学习会议(ICML)。 2016年。
- ot.gromov.unbalanced_co_optimal_transport(X, Y, wx_samp=None, wx_feat=None, wy_samp=None, wy_feat=None, reg_marginals=10, epsilon=0, divergence='kl', unbalanced_solver='mm', alpha=0, M_samp=None, M_feat=None, rescale_plan=True, init_pi=None, init_duals=None, max_iter=100, tol=1e-07, max_iter_ot=500, tol_ot=1e-07, log=False, verbose=False, **kwargs_solve)[源]
计算两个欧几里得点云之间的不平衡共同最优传输(表示为行是样本而列是特征/维度的矩阵)。
更准确地说,这个函数返回样本和特征的运输计划,介于 \((\mathbf{X}, \mathbf{w}_{xs}, \mathbf{w}_{xf})\) 和 \((\mathbf{Y}, \mathbf{w}_{ys}, \mathbf{w}_{yf})\)之间, 通过使用块坐标下降算法解决以下问题:
\[\begin{split}\mathop{\arg \min}_{\mathbf{P}, \mathbf{Q}} &\quad \sum_{i,j,k,l} (\mathbf{X}_{i,k} - \mathbf{Y}_{j,l})^2 \mathbf{P}_{i,j} \mathbf{Q}_{k,l} \\ &+ \rho_s \mathbf{Div}(\mathbf{P}_{\# 1} \mathbf{Q}_{\# 1}^T | \mathbf{w}_{xs} \mathbf{w}_{ys}^T) + \rho_f \mathbf{Div}(\mathbf{P}_{\# 2} \mathbf{Q}_{\# 2}^T | \mathbf{w}_{xf} \mathbf{w}_{yf}^T) \\ &+ \alpha_s \sum_{i,j} \mathbf{P}_{i,j} \mathbf{M^{(s)}}_{i, j} + \alpha_f \sum_{k, l} \mathbf{Q}_{k,l} \mathbf{M^{(f)}}_{k, l} \\ &+ \varepsilon_s \mathbf{Div}(\mathbf{P} | \mathbf{w}_{xs} \mathbf{w}_{ys}^T) + \varepsilon_f \mathbf{Div}(\mathbf{Q} | \mathbf{w}_{xf} \mathbf{w}_{yf}^T)\end{split}\]在哪里:
\(\mathbf{X}\): 源输入(任意大小)矩阵
\(\mathbf{Y}\): 目标输入(任意大小)矩阵
\(\mathbf{M^{(s)}}\): 额外的样本矩阵
\(\mathbf{M^{(f)}}\): 额外的特征矩阵
\(\mathbf{w}_{xs}\): 源空间中样本的分布
\(\mathbf{w}_{xf}\): 源空间中特征的分布
\(\mathbf{w}_{ys}\): 目标空间中样本的分布
\(\mathbf{w}_{yf}\): 目标空间中特征的分布
\(\mathbf{Div}\): Kullback-Leibler 散度或半平方 L2 范数。
注意
此函数允许epsilon为零。在这种情况下,unbalanced_method必须是“mm”或“lbfgsb”。
- Parameters:
X ((n_sample_x, n_feature_x) 数组-like, 浮点数) – 源输入矩阵。
Y ((n_sample_y, n_feature_y) 类似数组, 浮点数) – 目标输入矩阵。
wx_samp ((n_sample_x, ) array-like, float, 可选 (默认 = None)) – 在矩阵 X 的行(样本)上分配的直方图。默认情况下是均匀分布。
wx_feat ((n_feature_x, ) array-like, float, optional (default = None)) – 分配给矩阵 X 的列(特征)的直方图。默认情况下为均匀分布。
wy_samp ((n_sample_y, ) 类数组, 浮点数, 可选 (默认 = None)) – 分配给矩阵 Y 的行(样本)的直方图。默认情况下为均匀分布。
wy_feat ((n_feature_y, ) array-like, float, optional (default = None)) – 指定在矩阵 Y 的列(特征)上的直方图。默认情况下为均匀分布。
reg_marginals (浮点数 或 可索引对象,长度为 1 或 2) – 用于样本和特征耦合的边际松弛项。 如果 reg_marginals 是一个标量 或长度为1的可索引对象, 则相同的值应用于两个边际松弛。
epsilon (标量 或 可索引对象,长度为 2, 浮点数 或 整数, 可选(默认值 = 0)) – 用于样本和特征耦合的熵逼近的正则化参数。 允许epsilon包含0。在这种情况下,默认使用MM求解器而不是Sinkhorn求解器。如果epsilon是标量,则相同的值应用于样本和特征耦合的正则化。
发散 (字符串, 可选 (默认 = "kl")) –
如果 divergence = “kl”,则 Div 是 Kullback-Leibler 发散。
如果 divergence = “l2”,则 Div 是一半的平方欧几里得范数。
unbalanced_solver (字符串, 可选 (默认 = "sinkhorn")) –
用于不平衡OT子例程的求解器。
如果 divergence = “kl”,那么 unbalanced_solver 可以是:“sinkhorn”、“sinkhorn_log”、“mm”、“lbfgsb”
如果 divergence = “l2”,那么 unbalanced_solver 可以是“mm”、“lbfgsb”
alpha (标量 或 可索引对象,长度为2, 浮点数 或 整数, 可选 (默认 = 0)) – 线性项相对于样本和特征耦合的系数参数。 如果alpha是标量,那么相同的alpha将应用于两个线性项。
M_samp ((n_sample_x, n_sample_y), float, 可选 (默认 = None)) – 与样本耦合中Wasserstein线性项相关的样本矩阵。
M_feat ((n_feature_x, n_feature_y), float, 可选 (默认 = None)) – 与特征耦合上的Wasserstein线性项相关的特征矩阵。
rescale_plan (boolean, 可选 (默认为 True)) – 如果为 True,则在每个 BCD 迭代中重新缩放样本和特征传输计划,使它们始终具有相等的质量。
init_pi (元组 包含 两个矩阵,大小为 (n_sample_x, n_sample_y) 和) – (n_feature_x, n_feature_y), 可选(默认值 = None)。 样本和特征耦合的初始化。 默认情况下为均匀分布。
init_duals (元组 包含 两个元组 ((n_sample_x, ), (n_sample_y, )) 和 ((n_feature_x, ), (n_feature_y, )), 可选的 (默认 = None).) – 在使用Sinkhorn算法时样本和特征对偶向量的初始化。默认情况下为零向量。
max_iter (int, 可选 (默认 = 100)) – 块坐标下降 (BCD) 迭代的次数。
tol (float, 可选 (默认 = 1e-7)) – BCD 方案的容忍度。如果当前和之前样本耦合之间的 L1-范数低于这个阈值,则停止 BCD 方案。
max_iter_ot (int, 可选 (默认 = 100)) – 在每次BCD迭代中,解决两个不平衡最优运输问题的迭代次数。
tol_ot (float, 可选的 (默认 = 1e-7)) – 每个BCD迭代中两个不平衡最优传输问题的不平衡求解器的容差。
log (bool, optional (default = False)) – 如果为真,则记录成本和四个对偶向量,包括来自样本的两个和来自特征耦合的两个。
verbose (bool, 可选 (默认 = False)) – 如果为真,则在每个 eval_bcd 的倍数迭代时打印 COOT 成本。
- Returns:
pi_samp ((n_sample_x, n_sample_y) 类数组, float) – 样本耦合矩阵。
pi_feat ((n_feature_x, n_feature_y) 类数组, float) – 特征耦合矩阵。
log (字典, 可选) –
如果 log 为 True,则返回。键包括:
- error类数组, float
当前样本耦合与前一个样本耦合之间的 L1 范数列表。
- duals_sample(n_sample_x, n_sample_y)-元组, float
在解决 OT 问题时与样本耦合相关的对偶向量对。
- duals_feature(n_feature_x, n_feature_y)-元组, float
在解决 OT 问题时与特征耦合相关的对偶向量对。
- linearfloat
成本的线性部分。
- ucootfloat
总成本。
参考文献
[71] Tran, H., Janati, H., Courty, N., Flamary, R., Redko, I., Demetci, P., & Singh, R. 不平衡的共同最优运输。2023年人工智能AAAI会议。
- ot.gromov.unbalanced_co_optimal_transport2(X, Y, wx_samp=None, wx_feat=None, wy_samp=None, wy_feat=None, reg_marginals=10, epsilon=0, divergence='kl', unbalanced_solver='sinkhorn', alpha=0, M_samp=None, M_feat=None, rescale_plan=True, init_pi=None, init_duals=None, max_iter=100, tol=1e-07, max_iter_ot=500, tol_ot=1e-07, log=False, verbose=False, **kwargs_solve)[源]
计算两个欧几里得点云之间的不平衡共同最优传输(表示为行是样本而列是特征/维度的矩阵)。
更精确地说,该函数返回未平衡的共同最佳传输成本,介于 \((\mathbf{X}, \mathbf{w}_{xs}, \mathbf{w}_{xf})\) 和 \((\mathbf{Y}, \mathbf{w}_{ys}, \mathbf{w}_{yf})\)之间, 通过使用块坐标下降算法解决以下问题:
\[\begin{split}\mathop{\min}_{\mathbf{P}, \mathbf{Q}} &\quad \sum_{i,j,k,l} (\mathbf{X}_{i,k} - \mathbf{Y}_{j,l})^2 \mathbf{P}_{i,j} \mathbf{Q}_{k,l} \\ &+ \rho_s \mathbf{Div}(\mathbf{P}_{\# 1} \mathbf{Q}_{\# 1}^T | \mathbf{w}_{xs} \mathbf{w}_{ys}^T) + \rho_f \mathbf{Div}(\mathbf{P}_{\# 2} \mathbf{Q}_{\# 2}^T | \mathbf{w}_{xf} \mathbf{w}_{yf}^T) \\ &+ \alpha_s \sum_{i,j} \mathbf{P}_{i,j} \mathbf{M^{(s)}}_{i, j} + \alpha_f \sum_{k, l} \mathbf{Q}_{k,l} \mathbf{M^{(f)}}_{k, l} \\ &+ \varepsilon_s \mathbf{Div}(\mathbf{P} | \mathbf{w}_{xs} \mathbf{w}_{ys}^T) + \varepsilon_f \mathbf{Div}(\mathbf{Q} | \mathbf{w}_{xf} \mathbf{w}_{yf}^T)\end{split}\]在哪里:
\(\mathbf{X}\): 源输入(任意大小)矩阵
\(\mathbf{Y}\): 目标输入(任意大小)矩阵
\(\mathbf{M^{(s)}}\): 额外的样本矩阵
\(\mathbf{M^{(f)}}\): 额外的特征矩阵
\(\mathbf{w}_{xs}\): 源空间中样本的分布
\(\mathbf{w}_{xf}\): 源空间中特征的分布
\(\mathbf{w}_{ys}\): 目标空间中样本的分布
\(\mathbf{w}_{yf}\): 目标空间中特征的分布
\(\mathbf{Div}\): Kullback-Leibler 散度或半平方 L2 范数。
注意
此函数允许epsilon为零。在这种情况下,unbalanced_method必须是“mm”或“lbfgsb”。
梯度的计算仅支持KL散度。半平方L2范数的情况使用KL散度的结果。- Parameters:
X ((n_sample_x, n_feature_x) 数组-like, 浮点数) – 源输入矩阵。
Y ((n_sample_y, n_feature_y) 类似数组, 浮点数) – 目标输入矩阵。
wx_samp ((n_sample_x, ) array-like, float, 可选 (默认 = None)) – 在矩阵 X 的行(样本)上分配的直方图。默认情况下是均匀分布。
wx_feat ((n_feature_x, ) array-like, float, optional (default = None)) – 分配给矩阵 X 的列(特征)的直方图。默认情况下为均匀分布。
wy_samp ((n_sample_y, ) 类数组, 浮点数, 可选 (默认 = None)) – 分配给矩阵 Y 的行(样本)的直方图。默认情况下为均匀分布。
wy_feat ((n_feature_y, ) array-like, float, optional (default = None)) – 指定在矩阵 Y 的列(特征)上的直方图。默认情况下为均匀分布。
reg_marginals (float 或 可索引对象 长度为 1 或 2) – 样本和特征耦合的边际松弛项。如果 reg_marginals 是标量或长度为 1 的可索引对象,则相同的值应用于两个边际松弛。
epsilon (标量 或 可索引对象,长度为 2, 浮点数 或 整数, 可选(默认值 = 0)) – 用于样本和特征耦合的熵逼近的正则化参数。 允许epsilon包含0。在这种情况下,默认使用MM求解器而不是Sinkhorn求解器。如果epsilon是标量,则相同的值应用于样本和特征耦合的正则化。
发散 (字符串, 可选 (默认 = "kl")) –
如果 divergence = “kl”,则 Div 是 Kullback-Leibler 发散。
如果 divergence = “l2”,则 Div 是一半的平方欧几里得范数。
unbalanced_solver (字符串, 可选 (默认 = "sinkhorn")) –
用于不平衡OT子例程的求解器。
如果 divergence = “kl”,那么 unbalanced_solver 可以是:“sinkhorn”、“sinkhorn_log”、“mm”、“lbfgsb”
如果 divergence = “l2”,那么 unbalanced_solver 可以是“mm”、“lbfgsb”
alpha (标量 或 可索引对象,长度为2, 浮点数 或 整数, 可选 (默认 = 0)) – 线性项相对于样本和特征耦合的系数参数。 如果alpha是标量,那么相同的alpha将应用于两个线性项。
M_samp ((n_sample_x, n_sample_y), float, 可选 (默认 = None)) – 与样本耦合中Wasserstein线性项相关的样本矩阵。
M_feat ((n_feature_x, n_feature_y), float, 可选 (默认 = None)) – 与特征耦合上的Wasserstein线性项相关的特征矩阵。
rescale_plan (boolean, optional (default = True)) – 如果为 True,则在每次 BCD 迭代中对运输计划进行重新缩放,以便它们始终具有相等的质量。
init_pi (元组 包含 两个矩阵,大小为 (n_sample_x, n_sample_y) 和) – (n_feature_x, n_feature_y), 可选(默认值 = None)。 样本和特征耦合的初始化。 默认情况下为均匀分布。
init_duals (元组 包含 两个元组 ((n_sample_x, ), (n_sample_y, )) 和 ((n_feature_x, ), (n_feature_y, )), 可选的 (默认 = None).) – 在使用Sinkhorn算法时样本和特征对偶向量的初始化。默认情况下为零向量。
max_iter (int, 可选 (默认 = 100)) – 块坐标下降 (BCD) 迭代的次数。
tol (float, 可选 (默认 = 1e-7)) – BCD 方案的容忍度。如果当前和之前样本耦合之间的 L1-范数低于这个阈值,则停止 BCD 方案。
max_iter_ot (int, 可选 (默认 = 100)) – 在每次BCD迭代中,解决两个不平衡最优运输问题的迭代次数。
tol_ot (float, 可选的 (默认 = 1e-7)) – 每个BCD迭代中两个不平衡最优传输问题的不平衡求解器的容差。
log (bool, optional (default = False)) – 如果为真,则记录成本和四个对偶向量,包括来自样本的两个和来自特征耦合的两个。
verbose (bool, 可选 (默认 = False)) – 如果为真,则在每个 eval_bcd 的倍数迭代时打印 COOT 成本。
- Returns:
ucoot (float) – UCOOT 成本。
log (dictionary, optional) –
如果 log 为 True,则返回。键为:
- errorarray-like, float
当前和前一个样本耦合之间的 L1 范数列表。
- duals_sample(n_sample_x, n_sample_y)-tuple, float
在解决与样本耦合相关的 OT 问题时的对偶向量对。
- duals_feature(n_feature_x, n_feature_y)-tuple, float
在解决与特征耦合相关的 OT 问题时的对偶向量对。
- linearfloat
UCOOT 成本的线性部分。
- ucootfloat
UCOOT 成本。
- backend
所有输入数组的适当后端
参考文献
[71] Tran, H., Janati, H., Courty, N., Flamary, R., Redko, I., Demetci, P., & Singh, R. 不平衡的协同最优运输。2023年人工智能AAAI会议。
- ot.gromov.uot_cost_matrix(data, pi, tuple_p, hyperparams, divergence, reg_type, nx=None)[源]
FUGW和UCOOT的块坐标下降算法 在每次迭代中需要解决一个UOT问题。 特别是,我们需要指定以下输入:
成本矩阵
超参数(边际放松和正则化)
边际松弛和正则化项中的参考度量
该方法返回成本矩阵。 方法
ot.gromov.uot_parameters_and_measures返回其余输入。- Parameters:
数据 (元组 由 数组组成) – 向量或矩阵
pi (类似数组) – 向量或矩阵
tuple_p (tuple 数组的 元组) – 关于(样本或特征)耦合的边际松弛项中的参考度量的元组
超参数 (元组 of 浮点数) – 边际松弛和正则化项的超参数 在融合的不平衡跨域发散中
发散 (字符串, 默认 = "kl") – Bregman 发散,选择“kl”(Kullback-Leibler 发散)或“l2”(半平方 L2 发散)
reg_type (string,) –
融合不平衡跨领域散度中的正则化项类型
reg_type = “joint” 对应于 FUGW
reg_type = “independent” 对应于 UCOOT
nx (backend, 可选) – 如果默认值为 None,将进行后端测试。
- Return type:
UCOOT 和 FUGW 的 UOT 子例程的成本矩阵
- ot.gromov.uot_parameters_and_measures(pi, tuple_weights, hyperparams, reg_type, divergence, nx)[源]
FUGW和UCOOT的块坐标下降算法 在每次迭代中需要解决一个UOT问题。 特别是,我们需要指定以下输入:
成本矩阵
超参数(边际放松和正则化)
边际松弛和正则化项中的参考度量
方法
ot.gromov.uot_cost_matrix返回成本矩阵。 该方法返回其余输入。- Parameters:
pi (类似数组) – 向量或矩阵
tuple_weights (tuple 由 数组组成) – 关于样本或特征耦合的边际松弛和正则化项中的参考度量的元组
超参数 (元组 of 浮点数) – 边际松弛和正则化项的超参数 在融合的不平衡跨域发散中
reg_type (string,) –
融合不平衡跨领域散度中的正则化项类型
reg_type = “joint” 对应于 FUGW
reg_type = “independent” 对应于 UCOOT
发散 (字符串, 默认 = "kl") – Bregman 发散,选择“kl”(Kullback-Leibler 发散)或“l2”(半平方 L2 发散)
nx (backend, 可选) – 如果默认值为 None,将进行后端测试。
- Return type:
超参数和分布的元组(权重)
- ot.gromov.update_barycenter_feature(Ts, Ys, lambdas, p=None, loss_fun='square_loss', target=True, check_zeros=True, nx=None)[源]
根据每次迭代的FGW重心问题变体计算的 S \(\mathbf{T}_s\) 关联更新特征,使用内部的wasserstein损失 loss_fun(例如 FGW [24],srFGW [48])。如果 target=True,则重心被视为目标,否则视为源。
- Parameters:
Ts(当target=True时为形状为(ns, N)的S类数组的列表,否则为(N, ns)。)– 在每次迭代中计算的S \(\mathbf{T}_s\)耦合。
Ys (列表 的 S 类数组, 形状 (ns, d)) – 特征矩阵。
p (类似数组, 形状 (N,) 或 (S,N)) – 目标重心中的质量或质量列表。
loss_fun (str, 可选。默认为'square_loss') – 要在[‘square_loss’]中使用的损失函数名称。
target (bool, 可选。默认为 True。) – 中心点是否作为目标(True)或源(False)进行定位。
check_zeros (bool, 可选。默认值为 True。) – 是否检查重心上的边际是否包含零。 如果已知边际为正,可以将其设置为 False 以节省时间。
nx (backend, 可选) – 如果默认值为 None,将进行后端测试。
- Returns:
X
- Return type:
类似数组,形状为 (N, d)
参考文献
[24] Vayer Titouan, Chapel Laetitia, Flamary Rémi, Tavenard Romain 和 Courty Nicolas “适用于图形的结构化数据的最优传输” 国际机器学习会议 (ICML)。 2019。
[48] Cédric Vincent-Cuaz, Rémi Flamary, Marco Corneli, Titouan Vayer, Nicolas Courty. “半放松Gromov-Wasserstein散度及其在图上的应用” 国际学习表示会议(ICLR),2022。
- ot.gromov.update_barycenter_structure(Ts, Cs, lambdas, p=None, loss_fun='square_loss', target=True, check_zeros=True, nx=None)[源]
根据内损失 L 更新 \(\mathbf{C}\),使用在 GW 重心问题的变体(例如 GW [12],srGW [48])每次迭代计算的 S \(\mathbf{T}_s\) 耦合。如果 target=True,则求解:
\[\mathbf{C}^* = \mathop{\arg \min}_{\mathbf{C}\in \mathbb{R}^{N \times N}} \quad \sum_s \lambda_s \sum_{i,j,k,l} L(\mathbf{C}^{(s)}_{i,k}, \mathbf{C}_{j,l}) \mathbf{T}^{(s)}_{i,j} \mathbf{T}^{(s)}_{k,l}\]否则它解决了对称问题:
\[\mathbf{C}^* = \mathop{\arg \min}_{\mathbf{C}\in \mathbb{R}^{N \times N}} \quad \sum_s \lambda_s \sum_{i,j,k,l} L(\mathbf{C}_{j,l}, \mathbf{C}^{(s)}_{i,k}) \mathbf{T}^{(s)}_{i,j} \mathbf{T}^{(s)}_{k,l}\]其中:
\(\mathbf{C}^{(s)}\): 在第 s^{th} 源空间中的成对矩阵。
\(\mathbf{C}\): 目标空间中的成对矩阵。
\(L\): GW损失的内部散度
- Parameters:
Ts(当target=True时为形状为(ns, N)的S类数组的列表,否则为(N, ns)。)– 在每次迭代中计算的S \(\mathbf{T}_s\)耦合。
Cs (列表 的 S 类数组, 形状(ns, ns)) – 度量成本矩阵。
p (类似数组, 形状 (N,) 或 (S,N)) – 目标重心中的质量或质量列表。
loss_fun (str, 可选。默认值为'square_loss') – 要在 [‘square_loss’, ‘kl_loss’] 中使用的损失函数名称。
target (bool, 可选。默认为 True。) – 中心点是否作为目标(True)或源(False)进行定位。
check_zeros (bool, 可选。默认值为 True。) – 是否检查重心上的边际是否包含零。 如果已知边际为正,可以将其设置为 False 以节省时间。
nx (backend, 可选) – 如果默认值为 None,将进行后端测试。
- Returns:
C – 更新的 \(\mathbf{C}\) 矩阵。
- Return type:
类数组,形状(nt,nt)
参考文献
[12] 加布里埃尔·佩耶雷,马尔科·库图里和贾斯廷·所罗门, “核和距离矩阵的Gromov-Wasserstein平均。” 国际机器学习会议(ICML)。 2016年。
[48] Cédric Vincent-Cuaz, Rémi Flamary, Marco Corneli, Titouan Vayer, Nicolas Courty. “半放松Gromov-Wasserstein散度及其在图上的应用” 国际学习表示会议(ICLR),2022。