【度量学习】Weakly Supervised Metric Learning

弱监督算法比有监督算法处理的数据点信息更弱。与标记点不同,他们将数据点元组的相似性判断作为输入,例如相似点和不相似点的对。

General API

输入数据

在下面的段落中,为了概括起见,以元组为主体讨论,可以是对、三元组、四元组等,取决于度量学习算法。

基本形式

每个弱监督算法的输入都是带样本点的元祖,如果需要还可以取这些元祖的标签。这些样本点构成的元祖也可以称为约束(constraints)。标签是有关这组点的一些信息(例如:“这两个点是相似的”)

tuple 参数是每个方法的第一个参数(例如scikit-learn中经典方法里的 x x 参数),第二个参数是标签,其语义取决于使用的算法。例如,对于样本对学习器, y y 是一个标签,表示这对样本是相似还是不相似。

然后可以在这个元组上匹配一个弱监督度量学习器,如下所示:

image.png

如同经典设置中的将 x x 划分为训练集和测试集,此处将tuple 划分为训练集和测试集:

image.png

3维元组数组

最直观的表示元组的方法是为算法提供一个3维类数组元组,其形状为:(n_tuples, tuple_size, n_features)。n_tuples表示tuple的数量,tuple_size表示一个tuple中的元素数量,n_features表示每个样本点的特征数。

image.png

注意:对于大量的元祖不推荐使用这种方式,因为它是冗余的,需要大量的内存。

2维数组的 indicators + preprocessor

一种更有效的方法是用样本点的索引来表示元组,由于失去了特征维度,因此得到的数组是2D的:

image.png

为了适应度量学习算法与这种类型的输入,需要给估计器的原始数据集样本点 x x ,以便它知道的点索引指向。

Fit, transform 等等

弱监督度量学习算法的目标是转换样本点到一个新的空, 在这个空间中元组级的约束能够被遵从。

image.png

或者(使用预处理器):

image.png

现在estimator已经安装好了,可以用它来处理新的数据。

首先,可以使用transform来转换数据到学习空间,下面的例子转换两个样本点到新的嵌入空间:

image.png

度量学习器学习两样本点间的距离,可以通过下面两种方法得到该距离:

  • 使用score_pairs函数返回一对样本点之间的距离:

image.png

  • 或者可使用get_metric函数构造度量函数:

image.png

使用get_mahalanobis_matrix函数可以得到马氏距离度量:

image.png

预测和打分

弱监督在fitted后也能够预测给定元组的标签(样本对)或顺序(四元组),它们同样也有评分方式。

Scikit-learn兼容性

弱监督估计器和scikit-learn程序兼容(sklearn.model_selection.cross_val_score, sklearn.model_selection.GridSearchCV )

image.png

样本对学习

一些度量学习算法是基于样本对的,这种情况下要给算法提供N_samples对样本点,及其对应的标签,标签值为1或-1表示给定样本对是否相似。

fitted

下面是一个fitted 的例子:

image.png

在这里学习了一个度量标准,在变换后的空间中,前两个点靠得更近,而后两个点则相距更远。

预测

当样本对学习器fitted后,它就能预测:

image.png

预测阈值

预测一对新样本是否代表相似或不相似的样本,需要设置一个学习距离的阈值,在学习空间中,比这个阈值小的距离被预测为相似,而超出阈值的被预测为不相似。有几种方法可以实现这种阈值:

  • 在fit的时候进行校正:使用calibrate_threshold在训练集上设置阈值,可以在fit方法中直接指定校准参数,使用threshold_params参数。注意,在训练集上进行校准可能会导致一些过拟合,为避免这个情况可以在fitted之后校准。

image.png

  • 在验证集上校准:调用calibrate_threshold 在验证集上校准阈值以获得特定的分数,该分数位于经典分类分数之间(精确度,F1分数……)。

image.png

  • 手工阈值:使用set_threshold手工给阈值设置一个特殊的值:

image.png

评分

样本对度量学习器也可以返回一个用于成对组合的decision_function,这个分数对应于新空间中距离的相反值(高分表示样本点相似,低分表示样本点不同)。

image.png

这允许使用通用的评分函数来实现二分类,例如sklearn.metrics.accuracy_score可以在交叉验证例程中使用:

image.png

样本对学习器也有默认分数,基本上返回sklearn.metrics.roc_auc_score

image.png

算法

ITML

Information Theoretic Metric Learning (ITML)

ITML 最小化(微分)相对熵,又名 Kullback-Leibler 散度,在相关马氏距离约束下的多元高斯方程之间,通过最小化 LogDet 散度在线性约束下的散度形成一个 Bregman 优化问题。该算法可以处理各种各样的约束条件,并且可以选择性地在距离函数中加入先验。与其他方法不同,ITML 不依赖于特征值计算或半定规划。

给定一个马氏距离 M M ,其相关的多元高斯分布表示为:

image.png

Z Z 为标准化常数,马氏矩阵的逆矩阵 M 1 M^{-1} 为高斯分布的协方差。

给定相似对 S S 和不相似对 D D ,距离度量学习问题是最小化LogDet散度,等同于最小化 K L ( P ( x ; M ) p ( x ; M ) ) KL(P(x;M)||p(x;M))

image.png

其中, u , l u,l 为相似和不相似对的上下限, M 0 M_0 是先验距离度量,默认设置为单位矩阵, D l d ( ) D_{ld(\cdot)} 为对数行列式。

image.png

SDML

Sparse High-Dimensional Metric Learning (SDML)

SDML是一个有效的稀疏度量学习,它在高维空间中使用双正则化:对马氏矩阵 M M 的非对角元素使用L1-penalization和 M , M 0 M,M_0 间的对数行列式散度(设置为 I I 或者 Ω 1 \Omega^{-1} ,其中 Ω \Omega 为协方差矩阵)

形式化优化基于半正定矩阵 M M 是凸的:

image.png

X X 为训练数据集, 1 ||\cdot||_1 为非对角L1范数。

image.png

RCA

Relative Components Analysis (RCA)

RCA基于一个加权 in-chunklets 协方差矩阵来学习一个满轶马氏距离度量,它使用了一个全局线性映射来给相关的维度分配较大的权重,给不相关的维度分配较低的权重。这些相关维度是使用chunklets(已知属于同一类的点的子集)来估计的。

对于规模为 n n 的训练集在 k k 个chunklets中,该算法计算:

image.png

此处,chunklet j j { x j i } i = 1 n j \{x_{ji}\}^{nj}_{i=1} 构成,其均值为 m ^ j \hat{m}_j C 1 C^{-1} 的逆作为马氏距离。

image.png

MMC

Metric Learning with Application for Clustering with Side Information (MMC)

MMC 最小化相似点之间的距离平方和,同时强制不同点之间的距离之和大于一。这可以得到凸函数从而有效地解决局部极小最佳化问题。然而,该算法涉及特征值的计算,是主要的速度瓶颈。因为它最初是为聚类应用而设计的,所以 MMC 隐含的假设之一是所有类形成一个紧凑的集合,即遵循一个单峰分布,这限制了该方法可能的应用范围,但它仍然是最早的和仍然经常被引用的技术之一。

该算法旨在最小化所有相似点之间的距离和,同时约束不同点之间的距离和:

image.png

三元组学习

fitted

下面是一个fitted三元组的示例:

image.png

预测

image.png

评分

三元组度量学习者还可以返回一组三元组的decision_function,该判定函数对应于前两个点之间的距离减去三元组的第一个点和最后一个点之间的距离(值越高,第一个点和第二个点相比,第二个点越相似)。该分数可以被解释为度量这个三元组得到+1预测的可能性:

image.png

在上面的例子中,对于三元组测试中的第一个三元组,预计第一个点与第二个点的相似度要小于与最后一个点的相似度(它们在转换空间中的距离更远)。

与对子学习者不同,三元组学习者不允许在拟合时给出 y y : 假设三元组中点的排序使得训练的三元组都是正的。因此,不可能使用 scikit-learn 评分功能(如f1 _ score)在三元组学习者上。

然而,三元组学习者确实有一个默认的评分函数,它基本上会返回给定测试集的准确性分数,即具有正确预测顺序的三元组的比例。

image.png

算法

SCML

Sparse Compositional Metric Learning (SCML)

SCML通过优化稀疏正权重来给一组 K K rank-one PSD bases从三元组约束中学习一个系数马氏距离。这个可以形式化为一个只有 K K 参数的优化问题,并通过一个有效的随机组合方案来解决它。

马氏距离 M M 基于一个基集 B = { b i } i = 1 , . . . , K B=\{b_i\}_{i=1,...,K} 来搭建,通过一个 K K 维向量 w = { w i } i = 1 , . . . , K w=\{w_i\}_{i=1,...,K} 来赋权:

image.png

关于 w w 的优化问题可以通过一个经典的基于边际的hinge loss函数来形式化,包括集合 C C 的三元组。添加一个正则化 l 1 l_1 用于产生一个系数组合,其形式化如下所示:

image.png

image.png

猜你喜欢

转载自juejin.im/post/7073712201940336676
今日推荐