创新点和动机
文章提出了 hierarchical triplet loss (HTL) 方法,该方法主要通过定义一个编码上下文信息的树来收集信息样本,改进了在 mini-batch 中随机取样导致的陷入局部最优和收敛速度慢等问题。
解决方法
给定使用传统 triplet loss 预训练的神经网络 ϕt(⋅,θ)(∈Rd),样本xi的特征为 ri=ϕt(xi,θ),第p个类和第q个类的距离为 d(p,q)=npnq1∑i∈p,j∈q∥ri−rj∥2。
如何构建层次树? 计算不同类之间的距离,将原始图像类作为树的叶子节点,叶子节点代表在第0层。设树为L层,第0层合并节点的阈值为 d0=C1c=1∑C(nc2−nc1i∈c,j∈c∑∥ri−rj∥2);第l层的树合并的阈值为dl=Ll(4−d0)+d0。
如何选取Anchor?在层次树的第0层选取l′个节点,对每个节点分别选取(m-1)个在第0层最近的类,在每个类随机选取t个图片。因此,mini-batch的数量为n=l′mt。
Hierarchical triplet loss 的表达式为:
LM=2ZM1Tz∈TM∑[∥∥xaz−xpz∥∥−∥xaz−xnz∥+αz]+
TM表示在mini-batch M中的所有triplets。 ZM=Al′m2At2Ct1 表示triplets的数量,Al′m2表示从l′m个类中选择两个类,一个为正类一个为负类。At2表示从正类中选择一个 anchor sample 和 一个 positive sample,Ct1表示从负类中选择一个negative sample。
αz表示一个动态margin,αz=β+dH(ya,yn)−sya。dH(ya,yn)表示在层次树H上合并类ya和类yn的阈值,sya=nya2−nya1i,j∈ya∑∥ri−rj∥2表示类ya中samples 的平均距离。
完整的算法为:
