Softmax函数概述——2020.2.8
一、softmax函数简介
softmax作为输出层的激励函数,在机器学习中常被看作是一种多分类器。通俗的意思就是,将一个物品输入,得出其中可能属于的类别概率(soft),最后得出最大可能性的判别(max)。下图为softmax的具体计算流程:
其中,3、1、-3为输入值,计算以e为底的幂,之后求各类别之和,每个类别的输出值为,保证了各个类别输出值总和 ≤ 1(即:)。
比如下图所,j假设有7张图,分别为飞机、汽车、轮船、猫、狗、鸟、太阳,则图像的分类标签如下表示:
这种激励函数通常用在神经网络的最后一层作为分类器的输出,有7个节点就可以做7个不同类别的判别,有1000个节点就可以做1000个不同样本类别的判断。
二、softmax函数优劣性分析
优点:不同类之间分类准确
softmax比hardmax(本文暂且称为,即利用输入本身的值计算输出值:))更容易实现one-hot目标,即放大某一类可能性与其他类的差值,方便实现不同类之间的分类判定。两者差异性见下图:
缺点:类间紧凑,不满足进行人脸识别中特征向量对比需求
人脸识别中特征向量相似度计算,常用欧式距离(L2 distance)和余弦距离(cosine distance),下面讨论特征向量相似度对比情况:
-
欧式距离:
欧式距离越小,向量相似度越高。可能同类的特征向量距离(黄色)比不同类的特征向量距离(绿色)更大
-
余弦距离:
夹角越小,余弦距离越大,向量相似度越高。可能同类的特征向量夹角(黄色)比不同类的特征向量夹角(绿色)更大
总结
- Softmax训练的深度特征,会把整个超空间或者超球。如果按照分类个数进行划分,可以保证不同类别是可分的,适用于多分类任务如MNIST和ImageNet,因为测试类别必定在训练类别中。
- 但Softmax并不要求类内紧凑和类间分离,这一点非常不适合大数据量人脸识别任务,因为训练集的1W人数,相对测试集整个世界70亿人类来说,非常微不足道,而我们不可能拿到所有人的训练样本,并且还要求训练集和测试集不重叠。
- 如果需要改造Softmax,除了保证可分性外,还应做到特征向量类内尽可能紧凑,类间尽可能分离。
三、学习总结
之前仅仅使用过softmax做一些数据处理,但是对它的原理概念总是记忆不清,今天特总结记录一下。