深度学习原理42——一文彻底理解sigmoid和softmax的区别和输出通道维度的关系

== 对于sigmoid和softmax看这篇足够了==

这里写目录标题

  • 1 模型的输出基本上分为3种情况,当然还有其它的:
  • 2 sigmoid和softmax函数是什么
  • 3 二分类sigmoid或者softmax
  • 4 多分类
    • 4.1 多分类用softmax
    • 4.2 为什么多分类用softmax
  • 5 设计网络时候到底用哪个?
    • 5.1 二分类任务
    • 5.2 二分类语义分割
    • 5.3 多分类任务和语义分割
  • 6 对应损失函数
  • 7 总结
  • 参考:

1 模型的输出基本上分为3种情况,当然还有其它的:

(1)分类:2分类,多分类,对应输出为一个预测向量,可以是1个,两个,多个
(2)目标检测:对应二维矩阵mn,m行代表有m个目标,n列代表n个特征预测值,x,y,类别类型。
(3)语义分割:m
n*k(宽,高,类别数)

2 sigmoid和softmax函数是什么

看下面的博客介绍
(11条消息) 深度学习原理23——激活函数_xiaotiig的博客-CSDN博客_激活函数原理
https://blog.csdn.net/xiaotiig/article/details/111257822

深度学习原理42——一文彻底理解sigmoid和softmax的区别和输出通道维度的关系_第1张图片

3 二分类sigmoid或者softmax

输出通道维度是1,用sigmoid
输出通道维度是2,用softmax

深度学习原理42——一文彻底理解sigmoid和softmax的区别和输出通道维度的关系_第2张图片

4 多分类

4.1 多分类用softmax

多分类用softmax,同时注意算不算背景,多分类考虑不考虑其它,语义分割考虑不考虑背景,考虑的话需要在类别的基础上加1,比如20+1

4.2 为什么多分类用softmax

sigmoid和softmax的区别就是互斥与否
同样输出10类,输出通道是10,
(1)用sigmoid的话,表示这10类互不相关,得到的10个概率值中的每个值代表输入这类的概率和不属于这类的概率,0-1之间的值。
比如第4个值,代表输入第4类的值概率和不属于第4类的概率,和其它9个值没关系。

经过sigmoid输出的10个值互不影响,只关注某一类的可能性概率是多大,每一类都是二分类,所以加起来也不等于1,可以是第一类得到的值0.9,第二个也是0.9。

(2)用softmax就不一样了,它要综合考虑10个类,属于每个类的概率,这10个类相互影响,加起来是等于1的。

进一步理解:
(1)可以从网络角度来理解,输出维度是2和输出维度是3,4,5等都叫多分类,输出维度是1才叫2分类。
(2)sigmoid用到10分类中,相当于10个分类器,10个人来判断自己负责的类,都是相互独立的,每个人只负责判断自己对应位置的类别是不是,都比较自私,没有宏观能力。输出为10,用了10个sigmoid函数,1个sigmoid对应1个输入,一个输出,10个sigmoid分类器各自独立计算,得到10个输出。
softmax用到10分类中,相当于1个分类器,1个人来判断属于10个类别的概率,这样就有了宏观思维,能考虑全局,所以多分类中用softmax比较好。输出为10个,输入为10个,1个softmax分类器综合计算。
(3)多分类任务中我们不是就不能用sigmiod,可以用,只不过它不能考虑多个类别的综合情况,所以效果一半较差,我们不用它。

深度学习原理42——一文彻底理解sigmoid和softmax的区别和输出通道维度的关系_第3张图片

深度学习原理42——一文彻底理解sigmoid和softmax的区别和输出通道维度的关系_第4张图片
损失函数softmax_cross_entropy、binary_cross_entropy、sigmoid_cross_entropy之间的区别与联系 - 灰信网(软件开发博客聚合)
https://www.freesion.com/article/7062261412/

(2条消息) 一分钟理解softmax函数(超简单)_L.Z.的博客-CSDN博客_softmax
https://blog.csdn.net/lz_peter/article/details/84574716

5 设计网络时候到底用哪个?

(1)分类任务中,输出为1,用sigmoid,输出不为1,用softmax
(2)语义分割中,输出为1,用sigmoid,输出不为1,用softmax
(3)特殊情况,二分类任务和二分类语义分割,输出通道维度可以是1,也可以是2。输出为1,用sigmoid,输出为2,用softmax。一半情况下,二分类任务输出通道为1,用sigmoid。二分类语义分割输出维度通道设为2,用softmax。
当然二分类任务和二分类语义分割输出通道为1或为2都行,效果都差不多。

(4)多标签任务中,就是一个图像可以包括人,猫,房子等多标签任务,一般用sigmoid,因为它们互不影响,究其本质还是看类别之间概率是不是相互影响来确定用sigmoid还是softmax,这是由它们的计算公式来区别的,sigmoid计算公式只用到了1个输入,softmax的输入是多个。

深度学习原理42——一文彻底理解sigmoid和softmax的区别和输出通道维度的关系_第5张图片
logits代表没有经过softmax或者sigmoid的计算。pre = logits+softmax或者pre = logits+sigmoid。

3种情况一般按这样做就行:

5.1 二分类任务

(1)二分类任务
(2)输出通道设为1
(3)用sigmoid

5.2 二分类语义分割

(1)二分类语义分割
(2)输出通道设为2
(3)用softmax

5.3 多分类任务和语义分割

(1)多分类任务和多分类语义分割
(2)输出通道为n>2
(3)用softmax

6 对应损失函数

二分类和多分类都叫交叉熵损失函数,一个是sigmoid交叉熵损失函数,一个是softmax交叉熵损失函数
用的是sigmoid,就用binary_cross_entropy
用的是softmax,就用softmax_cross_entropy

损失函数softmax_cross_entropy、binary_cross_entropy、sigmoid_cross_entropy之间的区别与联系 - 你的雷哥 - 博客园
https://www.cnblogs.com/henuliulei/p/13742376.html

7 总结

3个决定(1)任务决定模型的输出通道维度,(2)输出通道维度决定用sigmoid还是softmax(不考虑多标签),(3)sigmoid和softmax决定损失函数。

参考:

(11条消息) sigmoid、softmax和交叉熵损失函数_xiaohuihui1994的博客-CSDN博客_sigmoid损失函数和softmax损失函数
https://blog.csdn.net/xiaohuihui1994/article/details/94179698?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1.no_search_link&utm_relevant_index=1

你可能感兴趣的:(#,深度学习基础知识,深度学习,机器学习,人工智能)