1、Sigmoid函数 Softmax函数应用示例
神经网络分类器最终结果为某一向量,即“原始输出值”,如[-0.5, 1.2 ,-0.1, 2.4 ],这四个输出值分别对应胸部X光检查后发现的肺炎、心肌肥大、肿瘤和脓肿。但是这些原始输出值是什么意思?将输出值转换为概率可能更容易理解。比起看似随意的“2.4”,患有糖尿病的可能性为91%,这种说法更便于患者理解。
Sigmoid函数或Softmax函数可以讲分类器的原始输出值映射为概率,下图显示了将前馈神经网络的原始输出值(蓝色)通过函数映射为概率的过程(红色)
Sigmoid
Softmax
如图所示,Sigmoid函数和Softmax函数得出不同的结果。
原因在于,Sigmoid函数会分别处理各个原始输出值,因此其结果相互独立,概率总和不一定为1,如图0.37+0.77+0.48+0.91=2.53
相反,softmax函数的输出值相互关联,其概率的总和始终为1,如图0.04 + 0.21 +0.51 +0.70 =1.因此,Softmax函数中,为增大某一类的概率,其他类别概率必须相应减少。
2 实际应用
Sigmoid
胸部X光片:一张胸部X光片能够同时显示多种疾病,因此胸部X射线分类器也需要同时显示多种病征。下图为一张显示肺炎和脓肿的胸部X光片,在右侧的标签栏中有两个“1”:
入院:目标是根据患者的健康档案,判断该患者将来入院的可能性。因此,分类问题可设计为:根据诊断可能导致患者未来入院的病症(如果有的话),对该患者现有的健康档案进行分类。导致患者入院的疾病可能有多种,因此答案可能有多个。
图表:下面两个前馈神经网络分别对应上述问题。在最后计算中,由Sigmoid函数处理原始输出值,得出相应概率,允许多种可能性并存——因胸部X射线可能反映出多种异常状态,则患者入院的病因可能不止一种。
Softmax
应用于手写数字‘鸢尾花数据集
手写数字:在区别手写数字时,分类器应采用Softmax函数,明确数字为哪一类。毕竟,数字8只能是数字8,不能同时是数字7。
Iris:Iris数据集于1936年引入,一共包含150个数据集,分为山鸢尾、杂色鸢尾、维吉尼亚鸢尾3类,每类各有50个数据集,每个数据包含花萼长度、花萼宽度、花瓣长度、花瓣宽度4个属性。
以下9个示例摘自Iris数据集:
数据集中没有任何图像,但下图的杂色鸢尾,可供你欣赏:
Iris数据集的神经网络分类器,要采用Softmax函数处理原始输出值,因为一朵鸢尾花只能是某一个特定品种——将其分为几个品种毫无意义。
总结
Sigmoid =多标签分类问题=多个正确答案=非独占输出(例如胸部X光检查、住院)
构建分类器,解决有多个正确答案的问题时,用Sigmoid函数分别处理各个原始输出值。
Softmax =多类别分类问题=只有一个正确答案=互斥输出(例如手写数字,鸢尾花)
构建分类器,解决只有唯一正确答案的问题时,用Softmax函数处理各个原始输出值。
对于二分类问题,没有区别,是等价的
网友评论