在Deep Speaker中,Triplet三元组的选择是很重要的。如果随机选择,会使收敛速度变慢,如果使用“hard-negative”,会得到次优的结果,也就是说ap和an的相似度一直接近1,如图1所示。因此FaceNet论文中建议使用“semi-hard-negative”,根据我做的实验来看,确实能起到作用,如图2所示,在使用了“semi-hard-negative”之后,an不在接近1,而且ap和an的相似度分离得越来越开(当然,这里还没有收敛,因此ap没有接近1)
图1
图2
这里的“hard-negative”是这样做的:在mini-batch中,保持ap对不变,对每一个ap对,从所有的negative中选择一个,使得an的相似度最高。这样可以使得训练加快收敛,但是会造成次优的结果,参考图1
而“semi-hard-negative”是这样做的:在mini-batch中,保持ap对不变,对每一个ap对,从所有的negative中选择一个,使得an的相似度尽可能高,但是必须小于相应的ap的相似度。这样可以避免an的相似度接近1。从实验的结果上来看,“semi-hard-negative”的效果还是很明显的。
不过deep speaker论文中没有使用“semi-hard-negative”,而是使用softmax和交叉熵进行预训练。