Angular Loss论文理解
一、相较于Triplet loss
Triplet loss在训练时,收敛较难
- 每个三元组需要三次抽样,然而将某个数据集中所有三元组罗列出来是不实际的,因此需要高效取样策略。
- 目标是将inter-class间的距离推远到margin m以上,然而使用全局统一margin m是不合理的,因为现实世界中,intra-class的距离有很大变化
- 从函数的梯度运算公式来看,每个sample的梯度只考虑两个点之间的关联,不会考虑第三个点。
二、Angular loss的意义
因为anchor和positive samples属于同一个类别,因此可以对称地推导出
由于an边和pn边的距离都应该大于ap边,根据余弦定理,最短的变ap对应的角∠n ≤ min(∠a, ∠p)
又因为,三角形内角和=180度,因此∠n 应该小于60度,因此得到一个upper bound:
三、Angular loss的优点
- Angle是一个similarity transform invariant(相似变换不变量) metric,与三角形边的相对关系成比例。用一个固定的α ,能够适用与feature map的任意缩放
- 相较于Triplet loss,只考虑两个边。∠n的计算需要同时考虑三个边,提升优化的鲁棒性和高效性
- Margin m的选取没有有意义的参考,而 α 的设置有具体且可解释的几何学意义
四、Angular Loss
如图Fig3(a),当∠a大于90度时,减小∠n可能会使negative 靠近anchor,出现不稳定case
因此,通过外界圆C,和垂直于nc边的超平面P,产生两个新的点,圆心Xc 和相交点Xm。通过变换Xa到Xc,和变换Xp到Xm,得到一个新的三角形。
目标变成:减小∠n′ -> 减小 tan∠n′
对应的梯度计算:
五、实施细节
- 取样策略:采用N-pair loss论文中的取样逻辑,取N/2个classes,每个class随机取2个samples,构成N个tuplets——由同class的2个samples构成anchor和positive,N-1个negatives取自其他不同classes
- 平滑loss函数:
基于以下不等式
假设feature为单元长度:||x|| = 1
得到:
结合N-pair Loss:λ = 2
六、训练细节
- 对于类目数量多的数据集,使用0.0001的LR;对于类目较少的数据集,使用0.00001的LR
- α的选择对训练结果会有影响,不同的数据集,最佳α不同,一般固定在36度~55度最佳
- 单独使用AL时,根据α的选择,效果和NL不相上下,NL&AL的效果最好
七、未来构想
三元组再往上,形成四元组,构成一个triangular pyramid(三角锥体),关注一个点到另外三个点构成平面的距离关系