softmax和sigmoid的选择

前言

最近在做一个二分类项目,项目过程中经过测试发现最后一层的激活函数分别使用了softmax和sigmoid的函数,经过测试softmax的结果更加的好,由此引发了一些思考,为什么softmax要比sigmoid好呢。

正文

参考知乎一个回答或许可以解答这个疑问。二分类问题,应该选择sigmoid还是softmax? 

对于二分类任务而言sigmoid和softmax公式如下所示:

 

从此可以看出使用sigmoid激活函数,模型输出结果只有1个属于(0,1)的数字,模型是学习的是图像是属于类别1的概率x,关于是否属于类别1需要工程师们使用阈值来断定,使用不同的阈值得到不同的结果,计算出TPR和FPR就可以画出roc曲线。如果在多分类问题中,每一个类别sigmoid结果是独立的,也就说一张图片既可以是类别1也可以是类别2,在一个训练好的模型中,sigmoid的结果应该要么趋近于0要么趋近于1.

然而softmax激活函数,模型学习到的是x2-x1,在一个训练好的模型中softmax的输出结果应该相差足够的大,也就是说|x2-x1|足够的大。同时,softmax的两个值为类别1何其互斥类别的概率,类别1和其互斥类别不是独立的。

综上,sigmoid可以理解为是针对一个类别进行建模,其如果存在互斥类别也是人为理解的。而softmax则一开始就是针对类别1和其互斥类别建模。

本项目中类别1和类别0是互斥的关系,所以softmax作为激活函数测试机结果更加的优秀。

你可能感兴趣的:(深度学习,python,人工智能,算法)