Note: This article is available in Chinese only. 本文暂无英文版本。
View original
Similarity_learning#
相似性学习(Similarity learning )有监督机器学习,它与回归和分类密切相关,但目标是从实例中学习一个相似函数,以衡量两个对象的相似程度或相关程度。
Similarity learning 通常有四种 setups:
- regression similarity learning:在这种方式中,给出的数据是 \( (x_{i}^{1},x_{i}^{2}) \) 和它们的相似度 \( y_{i}\in R \)。目标是学习到一个函数 \( f(x_{i}^{1},x_{i}^{2})\sim y_{i} \),对于 \( (x_{i}^{1},x_{i}^{2}) \) 给出 \( y_i \) 的近似值。
- Classification similarity learning:给出数据 \( (x_{i}^{1},x_{i}^{2}) \) 和它们是否相似 \( y_{i}\in \{0,1\} \)。目标是训练出一个分类器,能够完成对一组 \( (x_{i}^{1},x_{i}^{2}) \) 是否相似的二分类判断。
- Ranking similarity learning:给出有序三元组 \( (x_{i},x_{i}^{+},x_{i}^{-}) \),其中 \( x_{i} \) 已知与 \( x_{i}^{+} \) 比与 \( x_{i}^{-} \) 更相似。目标是训练出一个函数,使得对于新的三元组 \( (x,x^{+},x^{-}) \),满足 \( f(x,x^{+})\gt f(x,x^{-}) \)。容易看出,这种方式采取了比回归更弱的监督形式,因为不需要提供精确的相似性度量,只需要提供相似性的相对顺序。因此,这种 ranking-based 的相似性学习更容易应用于实际的大规模应用。
- Locality sensitive hashing (LSH):局部敏感哈希和普通哈希的不同就是,相似的项有更大的概率被放到同一个桶中。
顺便一提,这里有一个叫 triplet loss 的概念。
如上图所示,triplet是一个三元组,这个三元组是这样构成的:从训练数据集中随机选一个样本,该样本称为Anchor,然后再随机选取一个和Anchor (记为x_a)属于同一类的样本和不同类的样本,这两个样本对应的称为Positive (记为x_p)和Negative (记为x_n),由此构成一个(Anchor,Positive,Negative)三元组。
我们发现,triplet loss 其实就是在 ranking similarity learning 问题中,学习 similarity function 时的 loss。
形式化地,Triplet Loss 定义为:
$$ \mathcal{L}(x_a, x_p, x_n) = \max\left(0, \|f(x_a) - f(x_p)\|_2^2 - \|f(x_a) - f(x_n)\|_2^2 + \alpha\right) $$其中 \( \alpha \) 为预设的 margin 边距超参数。当异类负样本距离 \( d(a, n) \) 已经比同类正样本距离 \( d(a, p) \) 远出至少 \( \alpha \) 时,损失为 0;否则反向传播梯度继续拉近 \( (x_a, x_p) \) 并推远 \( (x_a, x_n) \)。
Metric learning#
相似性学习与距离度量学习密切相关。度量学习的目标是在对象上学习一个距离函数。度量或距离函数必须遵循四个公理:非负性、不可分辨的恒等式、对称性和次可加性/三角形不等式。在实际应用中,度量学习算法忽略了不可分辨物体的身份条件,学习了一个伪度量。