不同margin的对比
目前人脸识别算法以large margin为主,这里提出并讨论两个问题:
问题一:large margin为什么能work?
- L-Softmax重构了Softmax,输出x变成,SphereFace归一化权值W,变成;最新AM-Softmax和ArcFace继续归一化特征乘尺度因子,变成。所以这里我们简化问题,默认归一化权值W和特征f,即 ,仅考虑这一项变动对分类任务的影响。
- 还是讨论四分类问题,输出{ }等价于{}。原始Softmax在输出x = {5, 1, 1, 1}时就接近收敛,训练停止,此时改用large margin softmax,第一列的强制变成、或,会使输出减小,其他列保持不变,此时输出可能变成了x = {4, 1, 1, 1},网络又可以继续训练了。
- 这一过程与“从hardmax的 到softmax的 非线性放大了输出,减小训练难度,使分类问题更容易收敛”正好相反,从 到,或,都非线性减小了输出,增加训练难度,使训练得到的特征映射更好。
- 不同loss的曲线对比,下图来自ArcFace,所有loss都是单调递减的。对比Softmax的 曲线,乘性margin的SphereFace对应曲线下降最多,训练难度剧增,退火技术也难以收敛,反观加性margin的CosineFace和ArcFace下降较少,训练难度稍微增加,所以更容易收敛。
问题二:Large Margin到底优化了什么?
前面提到large margin显式约束了类间分离,看可视化结果好像也是这样,但其实这种说法是不对的。
- large margin优化的核心——夹角是权值W和特征f之间的夹角,并不是不同类别之间的夹角,loss函数也完全没有涉及不同类别特征向量之间的夹角约束。
- 具体来看,考虑W和f都是归一化的,训练目标从变成、或,,都减小了输出**值,如果要达到目标置信度100%,就需要优化出比Softmax更小的夹角,也就是说large margin的优化目标是让权值向量W和特征向量f之间的夹角更小。
- 对特定类别来说,假如有1000张图像,经CNN特征映射后得到1000个特征向量,而权值向量W是每个类别只有一个,large margin loss要求这1000个特征向量和这1个权值向量的夹角非常小,也就是说,优化让1000个特征向量都向权值向量W的方向靠拢。
- 下图是SphereFace(m=4)在MNIST上跑出来的特征映射,不同颜色代表不同类别,每个类别的中心白线就是这个类别的权值向量可视化的结果,与前面的分析完全一致。结论就是:large magin是显式的类内夹角约束,目标是让同一类的所有特征向量都拉向该类别的权值向量。
摘录: https://zhuanlan.zhihu.com/p/34436551
参考:
[1] Liu W, Wen Y, Yu Z, et al. Large-Margin Softmax Loss for Convolutional Neural Networks [C]// ICML, 2016.
[2] Liu W, Wen Y, Yu Z, et al. SphereFace: Deep Hypersphere Embedding for Face Recognition [C]// CVPR. 2017.
[3] Wang F, Liu W, Liu H, et al. Additive Margin Softmax for Face Verification [C]// ICLR 2018 (Workshop) .
[4] Wang H, Wang Y, Zhou Z, et al. CosFace: Large Margin Cosine Loss for Deep Face Recognition [C]// CVPR, 2018.
[5] Jiankang Deng, Jia Guo, Stefanos Zafeiriou. ArcFace: Additive Angular Margin Loss for Deep Face Recognition [J]. arXiv:1801.07698. (Submitted to IJCV)