为直观了解softmax loss,在mnist数据集上训练了一个lenet模型作为例子。先将特征维降低到2,并画了10w个训练样本的2维特征在平面上,如图2所示。从图中可以看到,如果使用欧式距离作为度量方式,则f2与f1之间的距离比f2到f3的近很多,达不到好的效果。而同时可以看到,对于这些特征以角度进行划分的效果会比欧式距离和内积要好,所以之前很多都会采用余弦相似度作为度量方法,尽管训练的时候用的是softmax loss。而softmax loss是非归一化特征的内积运算,因此训练的度量方法和测试用的度量方法一定的分歧。
为什么softmax loss会趋向取产生这样“呈放射状”的特征分布呢?
原因是softmax loss实际上表现为soft version of max operator。对特征向量的量级进行缩放不会影响到它们的类别结果,回顾softmax loss的公式定义如下:
其中m是训练样本数量,n是类别数量,fi是第i个样本的特征,yi是对应的标签(范围是[1,n]),W和b分别是softmax loss之前的最后一个内积层的权重矩阵和偏置向量,Wj是W的第j列,对应着第j类别,在测试的阶段,通过下式进行分类:
这里先假定(Wi x f + bi) - (Wj x f + bj) >= 0,再假定去掉偏置项b,则以
参考: