triplet loss
官方文档:
torch.nn — PyTorch master documentation
关于三元损失,出自论文:
FaceNet: A Unified Embedding for Face Recognition and Clustering
FaceNet: A Unified Embedding for Face Recognition and Clustering(论文阅读笔记)
三元损失的介绍很多,本站上搜一下就可以找到,比如:
Triplet Loss 和 Center Loss详解和pytorch实现
Triplet-Loss原理及其实现、应用
看下图:
- 训练集中随机选取一个样本:Anchor(a)
- 再随机选取一个和Anchor属于同一类的样本:Positive(p)
- 再随机选取一个和Anchor属于不同类的样本:Negative(n)
这样<a, p, n>就构成了一个三元组。
学习目标是让Positive和Anchor之间的距离 D ( a , p ) D(a,p) D(a,p) 尽可能的小,Negative和Anchor之间的距离 D ( a , n ) D(a,n) D(a,n) 尽可能的大:
∥ f ( x i a ) − f ( x i p ) ∥ 2 2 + α < ∥ f ( x i a ) − f ( x i n ) ∥ 2 2 (1) \left\|f\left(x_{i}^{a}\right)-f\left(x_{i}^{p}\right)\right\|_{2}^{2}+\alpha<\left\|f\left(x_{i}^{a}\right)-f\left(x_{i}^{n}\right)\right\|_{2}^{2} \tag{1} ∥f(xia)−f(xip)∥22+α<∥f(xia)−f(xin)∥22(1)
∀ ( f ( x i a ) , f ( x i p ) , f ( x i n ) ) ∈ T \forall\left(f\left(x_{i}^{a}\right), f\left(x_{i}^{p}\right), f\left(x_{i}^{n}\right)\right) \in \mathcal{T} ∀(f(xia),f(xi