当前位置:网站首页>函数分类大pk!sigmoid和softmax,到底分别怎么用?
函数分类大pk!sigmoid和softmax,到底分别怎么用?
2020-11-08 16:17:00 【spiritboy】

设计模型执行分类任务(如对胸部X光检查到的疾病或手写数字进行分类)时,有时需要同时选择多个答案(如同时选择肺炎和脓肿),有时只能选择一个答案(如数字“8”)。本文将讨论如何应用Sigmoid函数或Softmax函数处理分类器的原始输出值。
神经网络分类器分类算法有很多种,但本文讨论的内容只限于神经网络分类器。分类问题可通过不同神经网络进行解决,如前馈神经网络和卷积神经网络。应用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.05 + 0.70 = 1.00。因此,在Softmax函数中,为增大某一类别的概率,其他类别的概率必须相应减少。
Sigmoid函数应用:以胸部X光检查和入院为例胸部X光片:一张胸部X光片能够同时显示多种疾病,因此胸部X射线分类器也需要同时显示多种病征。下图为一张显示肺炎和脓肿的胸部X光片,在右侧的标签栏中有两个“1”:
入院:目标是根据患者的健康档案,判断该患者将来入院的可能性。因此,分类问题可设计为:根据诊断可能导致患者未来入院的病症(如果有的话),对该患者现有的健康档案进行分类。导致患者入院的疾病可能有多种,因此答案可能有多个。图表:下面两个前馈神经网络分别对应上述问题。在最后计算中,由Sigmoid函数处理原始输出值,得出相应概率,允许多种可能性并存——因胸部X射线可能反映出多种异常状态,则患者入院的病因可能不止一种。
Softmax函数应用:以手写数字和Iris(鸢尾花)为例手写数字:在区别手写数字(MNIST数据集:https://en.wikipedia.org/wiki/MNIST_database)时,分类器应采用Softmax函数,明确数字为哪一类。毕竟,数字8只能是数字8,不能同时是数字7。
Iris:Iris数据集于1936年引入(https://en.wikipedia.org/wiki/Iris_flower_data_set),一共包含150个数据集,分为山鸢尾、杂色鸢尾、维吉尼亚鸢尾3类,每类各有50个数据集,每个数据包含花萼长度、花萼宽度、花瓣长度、花瓣宽度4个属性。以下9个示例摘自Iris数据集:
数据集中没有任何图像,但下图的杂色鸢尾(https://en.wikipedia.org/wiki/Iris_flower_data_set#/media/File:Iris_versicolor_3.jpg),可供你欣赏:
Iris数据集的神经网络分类器,要采用Softmax函数处理原始输出值,因为一朵鸢尾花只能是某一个特定品种——将其分为几个品种毫无意义。
关于“e”的注解要理解Sigmoid和Softmax函数,应先引入 “e”。在本文中,只需了解e是约等于2.71828的数学常数。下面是关于e的其他信息:• e的十进制表示永远存在,数字出现完全随机——类似于pi。• e常用于复利、赌博和某些概率分布的研究中。• 下面是e的一个公式:
但e的公式不止一个。其计算方法有多种。有关示例:https://www.intmath.com/exponential-logarithmic-functions/calculating-e.php• 2004年,谷歌公司首次公开募股达2,718,281,828美元,即“e百万美元”。• 维基百科中人类历史上著名的十进制数字e的演变(https://en.wikipedia.org/wiki/E_%28mathematical_constant%29#Bernoulli_trials),从1690年的一位数字开始,持续到1978年的116,000位数字:
Sigmoid函数和Softmax函数Sigmoid =多标签分类问题=多个正确答案=非独占输出(例如胸部X光检查、住院)• 构建分类器,解决有多个正确答案的问题时,用Sigmoid函数分别处理各个原始输出值。• Sigmoid函数如下所示(注意e):

在该公式中,σ表示Sigmoid函数,σ(zj)表示将Sigmoid函数应用于数字Zj。 “Zj”表示单个原始输出值,如-0.5。 j表示当前运算的输出值。如果有四个原始输出值,则j = 1,2,3或4。在前面的例子中,原始输出值为[-0.5,1.2,-0.1,2.4],则Z1 = -0.5,Z2 = 1.2,Z3 = -0.1,Z4 = 2.4。所以,

Z2,Z3、Z4 的计算过程同上。由于Sigmoid函数分别应用于每个原始输出值,因此可能出现的输出情况包括:所有类别概率都很低(如“此胸部X光检查没有异常”),一种类别的概率很高但是其他类别的概率很低(如“胸部X光检查仅发现肺炎”),多个或所有类别的概率都很高(如“胸部X光检查发现肺炎和脓肿”)。下图为Sigmoid函数曲线:

Softmax =多类别分类问题=只有一个正确答案=互斥输出(例如手写数字,鸢尾花)• 构建分类器,解决只有唯一正确答案的问题时,用Softmax函数处理各个原始输出值。• Softmax函数的分母综合了原始输出值的所有因素,这意味着,Softmax函数得到的不同概率之间相互关联。• Softmax函数表述如下:

除分母外,为综合所有因素,将原始输出值中的e ^ thing相加,Softmax函数与Sigmoid函数差别不大。换言之,用Softmax函数计算单个原始输出值(例如Z1)时,不能只计算Z1,分母中的Z1,Z2,Z3和Z4也应加以计算,如下所示:

Softmax函数的优势在于所有输出概率的总和为1:
区分手写数字时,用Softmax函数处理原始输出值,如要增加某一示例被分为“8”的概率,就要降低该示例被分到其他数字(0,1,2,3,4,5,6,7和/或9)的概率。Sigmoid和Softmax的其他示例
总结:
• 如果模型输出为非互斥类别,且可以同时选择多个类别,则采用Sigmoid函数计算该网络的原始输出值。
• 如果模型输出为互斥类别,且只能选择一个类别,则采用Softmax函数计算该网络的原始输出值。
版权声明
本文为[spiritboy]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/3337401/blog/4708235
边栏推荐
- Xiaoqingtai officially set foot on the third day of no return
- What are the necessary laws and regulations to know when entering the Internet?
- Solution to the problem of offline connection between ADB and mobile phone
- Learn to record and analyze
- 喜获蚂蚁offer,定级p7,面经分享,万字长文带你走完面试全过程
- Golang 系统ping程序探测存活主机(任意权限)
- Framework - SPI four modes + general device driver implementation - source code
- [开源] .Net 使用 ORM 访问 华为GaussDB数据库
- 构建者模式(Builder pattern)
- Golang system ping program to detect the surviving host (any permission)
猜你喜欢

Do these mistakes in your resume affect your annual salary of one million?

I used Python to find out all the people who deleted my wechat and deleted them automatically

Apache Kylin远程代码执行漏洞复现(CVE-2020-1956)

喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水

Solution of DEV-C + + unable to debug in Windows Environment

10 common software architecture patterns

uni-app实战仿微信app开发

LeanCloud 十月变化

The network adapter could not establish the connection
![[open source]. Net uses ORM to access Huawei gaussdb database](/img/f8/50715c25a9d49b010cba2ff442c04e.jpg)
[open source]. Net uses ORM to access Huawei gaussdb database
随机推荐
DeepMind 最新论文解读:首次提出离散概率树中的因果推理算法
I used Python to find out all the people who deleted my wechat and deleted them automatically
第五章编程题
Station B STM32 video learning
The first open source Chinese Bert pre training model in the financial field
How to cooperate with people in software development? |Daily anecdotes
金融领域首个开源中文BERT预训练模型,熵简科技推出FinBERT 1.0
On the software of express delivery cabinet and deposit cabinet under Windows
Returning to the third place in the world, what did Xiaomi do right?
Interpretation of deepmind's latest paper: the causal reasoning algorithm in discrete probability tree is proposed for the first time
进入互联网得知道的必备法律法规有哪些?
我用 Python 找出了删除我微信的所有人并将他们自动化删除了
软件开发中如何与人协作? | 每日趣闻
Huawei has an absolute advantage in the 5g mobile phone market, and the market share of Xiaomi is divided by the market survey organization
write文件一个字节后何时发起写磁盘IO
机械硬盘随机IO慢的超乎你的想象
LiteOS-消息队列
[开源] .Net 使用 ORM 访问 华为GaussDB数据库
SQL 速查
TypeScript(1-2-2)