Softmax分类器

在Softmax分类器中,函数映射2.3 损失函数:Softmax分类器保持不变,但将这些评分值视为每个分类的未归一化的对数概率,并且将折叶损失(hinge loss)替换为交叉熵损失(cross-entropy loss。公式如下:

2.3 损失函数:Softmax分类器

在上式中,使用2.3 损失函数:Softmax分类器来表示分类评分向量2.3 损失函数:Softmax分类器中的第j个元素。和之前一样,整个数据集的损失值是数据集中所有样本数据的损失值2.3 损失函数:Softmax分类器的均值与正则化损失2.3 损失函数:Softmax分类器之和。

其中函数2.3 损失函数:Softmax分类器被称作softmax 函数:其输入值是一个向量,向量中元素为任意实数的评分值(2.3 损失函数:Softmax分类器中的),函数对其进行压缩,输出一个向量,其中每个元素值在0到1之间,且所有元素之和为1。

信息理论视角

“真实”分布2.3 损失函数:Softmax分类器和估计分布2.3 损失函数:Softmax分类器之间的交叉熵定义如下:

2.3 损失函数:Softmax分类器

因此,Softmax分类器所做的就是最小化在估计分类概率(就是上面的2.3 损失函数:Softmax分类器)和“真实”分布之间的交叉熵,在这个解释中,“真实”分布就是所有概率密度都分布在正确的类别上。还有,既然交叉熵可以写成熵和相对熵(Kullback-Leibler divergence)2.3 损失函数:Softmax分类器,并且delta函数2.3 损失函数:Softmax分类器的熵是0,那么就能等价的看做是对两个分布之间的相对熵做最小化操作。换句话说,交叉熵损失函数“想要”预测分布的所有概率密度都在正确分类上。

Kullback-Leibler差异(Kullback-Leibler Divergence)也叫做相对熵(Relative Entropy),它衡量的是相同事件空间里的两个概率分布的差异情况。

概率论解释

先看下面的公式:

2.3 损失函数:Softmax分类器

可以解释为是给定图像数据2.3 损失函数:Softmax分类器,以2.3 损失函数:Softmax分类器为参数,分配给正确分类标签2.3 损失函数:Softmax分类器的归一化概率。

Softmax分类器将输出向量2.3 损失函数:Softmax分类器中的评分值解释为没有归一化的对数概率。那么以这些数值做指数函数的幂就得到了没有归一化的概率,而除法操作则对数据进行了归一化处理,使得这些概率的和为1。从概率论的角度来理解,我们就是在最小化正确分类的负对数概率,这可以看做是在进行最大似然估计(MLE)。该解释的另一个好处是,损失函数中的正则化部分2.3 损失函数:Softmax分类器可以被看做是权重矩阵2.3 损失函数:Softmax分类器的高斯先验,这里进行的是最大后验估计(MAP)而不是最大似然估计。

数值稳定

编程实现softmax函数计算的时候,中间项2.3 损失函数:Softmax分类器2.3 损失函数:Softmax分类器因为存在指数函数,所以数值可能非常大。除以大数值可能导致数值计算的不稳定,所以学会使用归一化技巧非常重要。如果在分式的分子和分母都乘以一个常数2.3 损失函数:Softmax分类器,并把它变换到求和之中,就能得到一个从数学上等价的公式:

2.3 损失函数:Softmax分类器

2.3 损失函数:Softmax分类器的值可自由选择,不会影响计算结果,通过使用这个技巧可以提高计算中的数值稳定性。通常将2.3 损失函数:Softmax分类器设为2.3 损失函数:Softmax分类器。该技巧简单地说,就是应该将向量2.3 损失函数:Softmax分类器中的数值进行平移,使得最大值为0。

SVM和Softmax的比较

2.3 损失函数:Softmax分类器

针对一个数据点,SVM和Softmax分类器的不同处理方式的例子。两个分类器都计算了同样的分值向量f(本节中是通过矩阵乘来实现)。不同之处在于对f中分值的解释:SVM分类器将它们看做是分类评分,它的损失函数鼓励正确的分类(本例中是蓝色的类别2)的分值比其他分类的分值高出至少一个边界值。Softmax分类器将这些数值看做是每个分类没有归一化的对数概率,鼓励正确分类的归一化的对数概率变高,其余的变低。SVM的最终的损失值是1.58,Softmax的最终的损失值是0.452,但要注意这两个数值没有可比性。只在给定同样数据,在同样的分类器的损失值计算中,它们才有意义。

SVM的计算是无标定的,而且难以针对所有分类的评分值给出直观解释。

Softmax分类器则不同,它允许我们计算出对于所有分类标签的可能性。

举个例子,针对给出的图像,SVM分类器可能给你的是一个[12.5, 0.6, -23.0]对应分类“猫”,“狗”,“船”。而softmax分类器可以计算出这三个标签的”可能性“是[0.9, 0.09, 0.01],这就让你能看出对于不同分类准确性的把握。为什么我们要在”可能性“上面打引号呢?这是因为可能性分布的集中或离散程度是由正则化参数λ直接决定的,λ是你能直接控制的一个输入参数。举个例子,假设3个分类的原始分数是[1, -2, 0],那么softmax函数就会计算:

2.3 损失函数:Softmax分类器

现在,如果正则化参数λ更大,那么权重W就会被惩罚的更多,然后他的权重数值就会更小。这样算出来的分数也会更小,假设小了一半吧[0.5, -1, 0],那么softmax函数的计算就是:

2.3 损失函数:Softmax分类器

现在看起来,概率的分布就更加分散了。还有,随着正则化参数λ不断增强,权重数值会越来越小,最后输出的概率会接近于均匀分布。这就是说,softmax分类器算出来的概率最好是看成一种对于分类正确性的自信。和SVM一样,数字间相互比较得出的大小顺序是可以解释的,但其绝对值则难以直观解释

在实际使用中,SVM和Softmax经常是相似的:通常说来,两种分类器的表现差别很小,不同的人对于哪个分类器更好有不同的看法。

相对于Softmax分类器,SVM更加“局部目标化(local objective)”,这既可以看做是一个特性,也可以看做是一个劣势。考虑一个评分是[10, -2, 3]的数据,其中第一个分类是正确的。那么一个SVM(2.3 损失函数:Softmax分类器)会看到正确分类相较于不正确分类,已经得到了比边界值还要高的分数,它就会认为损失值是0。SVM对于数字个体的细节是不关心的:如果分数是[10, -100, -100]或者[10, 9, 9],对于SVM来说没设么不同,只要满足超过边界值等于1,那么损失值就等于0。

对于softmax分类器,情况则不同。对于[10, 9, 9]来说,计算出的损失值就远远高于[10, -100, -100]的。换句话来说,softmax分类器对于分数是永远不会满意的:正确分类总能得到更高的可能性,错误分类总能得到更低的可能性,损失值总是能够更小。但是,SVM只要边界值被满足了就满意了,不会超过限制去细微地操作具体分数。这可以被看做是SVM的一种特性。

 

转载于:https://www.cnblogs.com/xiaojianliu/articles/10014761.html

相关文章: