NormFace: L2 Hypersphere Embedding for Face Verification
发布于2017年。
1 简介
- 对softmax loss函数进行了修改,优化了余弦相似度。
- 通过为每个类引入代理向量来重新制定度量学习。
- 在LFW数据集上将性能提高0.2%到0.4%。
问题:
- 对比分类损失训练的CNN特征,尤其是softmax loss,为什么特征归一化如此有效?
- 为什么使用softmax loss直接优化余弦相似度会导致网络收敛失败?
- 使用softmax loss时如何优化余弦相似度?
- 由于softmax loss模型归一化后不收敛,是否有其他的损失函数适用于归一化?
2 归一化的必要性
- 图中的点代表手写数字图片经过LeNet网络提取的二维特征。
- f1与f2的欧式距离小于f2与f3的欧氏距离,然而f2和f3是同一类,如果不对其进行归一化,直接使用欧氏距离的方向进行特征比较,模型的性能将会较差。
- f1与f2的夹角大于f2与f3的夹角,因此,特征向量之间的夹角似乎是一种很好的度量。
- 加入bias之后,会出现有一组类分布在零点附近,这时对特征进行归一化处理,这一类还会散布在单位圆上,造成误分类。
-
公式1是softmax loss,公式2得出预测概率最大的i类,从而就有公式3。
-
把偏置去掉,则上述命题成立,这意味着softmax loss总是鼓励分离良好的特征具有更大的幅度。
-
我们通常使用两个特征向量的余弦来衡量两个样本之间的相似性。
3 归一化层
- 经过梯度下降,x的范数总会增加,为防止x范数无限增大,需要使用权重衰减项。
4 网络收敛问题
-
归一化的内积是[-1, 1]区间的数,经过softmax loss之后,梯度(1-y)还是很大,从而导致无法收敛。
-
假设各个类别已经被完全分开,其中一类内积为1,其余都为-1。
-
如上式,n=10,y=0.45;n=1000,y=0.007。而梯度(1-y)就很大,所以无法收敛。
-
softmax loss存在一个下界,这个界限意味着,如果我们只是将特征和权重归一化到1,即使不应用正则化,softmax loss也会被限制在一个很高的值。
-
通过将权重和特征归一化到一个更大的值,就可以将softmax loss的下界继续减小。我们通过添加一个scale层在cosline层后来学习。
-
s=l^2,在实践中,直接将比例参数添加到余弦距离上。
-
图反映不同的s对与损失边界的影响。
5 度量学习
度量学习比分类更难训练,因为度量学习模型中可能的输入对或者三元组非常大。
- 对比损失和三元组损失。多用于人脸验证。
- 即将某类特征与另一类特征之间的距离计算改成某类特征和另一类特征的总结**Wj**的距离计算,这样在训练的时候就不用进行成对数据或成三对数据的配对了
- Wj表示的是第j类特征的总结,其在论文中称为agent。如果所有类都能通过边界很好地分离,则Wj就能很好地对应每个类的特征均值。
但该策略也有缺点:
- 左图(对比损失):黄点与红色agent的距离大于m,所以黄点损失为0将不会被优化。
- 右图(三元组损失):黄点与黄色agent的距离加上m小于黄点与红色agent的距离,所以黄点也将不被优化。
解决方法是将m变大,这里推荐对比损失的m为1,三元组损失的m为0.8。