度量学习中三元组损失不收敛(loss无法下降到margin以下,样本的降维输出聚在一起)

最近在搞三元组损失来做分类的任务,用了VGG16模型进行主干网络进行特征提取,最后用triplet loss来约束网络进行学习。

三元组损失是来优化正样本,负样本与锚点之间的距离的,以margin作为阈值。

但是我在训练时发现使用数据增强的情况下triplet loss并不能降到margin以下,反而是停留在margin附近,此时正样本,负样本,锚点距离都为0,聚在了一起。
而不使用数据增强时只要特征维度不是太小loss就可以降到margin以下。
我的学习率设置为0.0005,MomentumOptimizer,momentum=0.9。

是因为样本本身的原因吗?或者是网络本身的原因?
希望能得到大家的指点,感谢。

可以将margin设置较大,太小的话loss可能收敛比较好,有可能无法拉近anhor与正样本距离。

我最近也遇到类似的问题,输入的feature是128维度的;训练的时候,随机挑选8个类别,每个类别随机挑选8个sample,以此构成一个batch size为64的mini-batch,进行batch-hard triplet loss训练。

我发现训练过程模型收敛有很大随机性,有时候能按照正确的方向收敛,即同类别的feautre距离小,不同类别的feature距离大;有时则出现楼主提到的现象,feature间的距离都为0,triplet loss拟合到margin附近;

向有经验的同学请教后,他提到可以加入另外的softmax loss一起训练,softmax loss实际上是主要的,帮助每一个类别的feature都能有一个固定的方向拟合,而triplet loss则是辅助的,让不同类别间的距离加大,目前还在试,不知道什么结果。

不知道楼主就这个问题有没有进展??

楼主,几年过去了,请问您当时如何解决的,为我们提供下经验,感谢感谢