AMSoftmax
我们来讲一下多类别分类问题。
首先我们好好介绍一下softmax loss function。(其实这个名字可以叫CrossEntropy交叉熵函数)。比如说模型输出数据的维度是1*n,但是在此次训练中数据集的类别是m,为了模型输出的维度和输出数据的维度相匹配,我们利用了一个W矩阵,将输出的feat转为(1*m)维度。它的公式也就是由如下所示。
(1)
之后再用softmax激活函数将prey的数据通过如下的式子推导出来。
(2)
注意得到的公式是只是prey中的某一个维度的值罢了。
而实际的y是由独热编码构成的。所以y其实是其中对应正确类别为1。
接下来我们来介绍AMsoftmax。
之前的softmax loss得到的只是一个vector(基准)但是类间的距离却差别不是很大,而由下图中的左图我们可以看出类内的点variance比较大,分散比较零散。
而右图的Additive Margin Softmax就缩小了类内间距,扩大了类间间距。
我在这里理解最后全连接层训练的参数W权重矩阵其实就是每一类的中心向量的汇总,然后将输入的数据x映射到待分类的线性空间上(以中心向量作为基准向量)。但是如此映射Softmax loss如上文提到的分类得到的只是一个向量,为了加大不同类之间的距离,就引用了
这个公式,首先我们来看cos角是什么意思,首先我们回溯到之前的全连接层。
全连接层的 其中假设||W||、||x||为1,而||b||=0,那么得到的Wx相乘结果其实就是余弦角cos值。接下来我们明白了cos值的缘由,我们就聚焦于ϕθ的效果,首先我之前说过,我假设分别为两种类别用于分类的中心向量。而原先训练得到的 但是现在训练得到的是'
而cosθ'=cosθ+m (这样才能抵消原先所作的减法)也就是说cosθ'的值需要比原来更大,所以容忍的角度自然也就更小了。
好了既然我们已经知道m的作用了,接下来我们来看看完整的AMSoftmax中preyi概率的计算。
我们可以看到所有都乘以了一个s系数。我们假设一个类间原本的容忍角度是
但是如今乘了一个s系数,导致preyi的概率变化会比以前剧烈,也就是说类间的样本与基准向量角度有略微的偏移会对概率预测的影响比之前没乘系数大,所以按理来说,一个类间容忍角度会变小。
以上只是一名普通大学生自己的翻阅资料学习,得到的感悟如有错误希望纠正。