Softmax函数与Sigmoid函数的区别与联系

Sigmoid和Softmax的区别与联系

  1. Sigmoid函数
    S i g m o i d Sigmoid Sigmoid函数也叫 L o g i s t i c Logistic Logistic函数,将输入值压缩到 ( 0 , 1 ) (0,1) (0,1)区间之中,其函数表达式为: S i g m o i d ( x ) = 1 1 + e − x Sigmoid(x) =\frac{1}{1+e^{-x}} Sigmoid(x)=1+ex1 函数图像如图所示:
    sigmoid
    其求导之后的表达式为: Sigmoid ⁡ ′ ( x ) = Sigmoid ⁡ ( x ) ⋅ ( 1 − Sigmoid ⁡ ( x ) ) \operatorname{Sigmoid}^{\prime}(x)=\operatorname{Sigmoid}(x) \cdot(1-\operatorname{Sigmoid}(x)) Sigmoid(x)=Sigmoid(x)(1Sigmoid(x)) 其梯度的导数图像如:
    sigmoid求导
    对于 S i g m o i d Sigmoid Sigmoid函数,其 优点为:

    • 输出范围限制:函数将其输入映射到有限的范围[0, 1]之间,这有助于防止模型的输出变得过大或过小,从而提高模型的稳定性;
    • 适用于二元分类:函数在二元分类问题中非常有用,可以将输入的线性组合映射到0到1之间的概率,用于表示正类别和负类别的概率。
    • 平滑性:函数是光滑连续且可导的,因此在训练过程中具有连续的梯度。

    其``缺点为:

    • 梯度消失问题:Sigmoid函数的梯度在接近0和1的极端位置非常小,容易导致梯度消失问题。
    • 非零中心输出:Sigmoid函数的输出值很明显均大于0,输出均值不等于0,导致后一层的神经元将得到上一层非 0 0 0均值的信号作为输入,从而会对梯度产生影响。
    • 计算复杂度高:Sigmoid函数的计算涉及指数运算,尤其是在大规模深度网络中,它会增加计算成本。
  2. Softmax函数
    S o f t m a x Softmax Softmax函数又称归一化指数函数,函数表达式为: y i = Softmax ⁡ ( x i ) = e x i ∑ j = 1 n e x j y_{i}=\operatorname{Softmax}(x_{i})=\frac{e^{x_{i}}}{\sum_{j=1}^{n} e^{x_{j}}} yi=Softmax(xi)=j=1nexjexi 其中, i ∈ [ 1 , n ] i \in [1, n] i[1,n] ∑ i y i = 1 \sum_{i} y_{i}=1 iyi=1
    softmax
    S o f t m a x Softmax Softmax函数可以将上一层的原始数据进行归一化,转化为一个 ( 0 , 1 ) (0,1) (0,1)之间的数值,这些数值可以被当做概率分布,用来作为多分类的目标预测值。 S o f t m a x Softmax Softmax函数一般作为神经网络的最后一层,接受来自上一层网络的输入值,然后将其转化为概率。

    对于 S o f t m a x Softmax Softmax函数而言,我们可以从不同的角度来理解它:

    • A r g m a x Argmax Argmax是一个暴力的找最大值的过程,最后的输出是以一个 O n e − h o t One-hot Onehot形式,将最大值的位置设置为 1 1 1,其余为 0 0 0。这样的话,则在网络训练中,是不可导的,我们采用 S o f t m a x Softmax Softmax看作是 A r g m a x Argmax Argmax的平滑近似,从而可以使得网络可导。
    • S o f t m a x Softmax Softmax将输入向量归一化映射到一个类别概率分布,即 n n n个类别上的概率分布,因此我们常将 S o f t m a x Softmax Softmax放到 M L P MLP MLP 的最后一层。
    • 从概率图角度, S o f t m a x Softmax Softmax可以理解为一个概率无向图上的联合概率。
  3. 联系

    1. S i g m o i d Sigmoid Sigmoid函数和 S o f t m a x Softmax Softmax函数都用于将模型的输出映射到概率分布,使得输出值在0到1之间,并且用于表示不同类别的概率;
    2. 对于二分类任务而言,二者都可以达到目标,理论上没有什么区别。例如在二分类 ( x 1 , x 2 ) (x_1, x_2) (x1,x2)任务中, 经过 S i g m o i d Sigmoid Sigmoid函数之后: Sigmoid ⁡ ( x 1 ) = 1 1 + e − x 1 \operatorname{Sigmoid}\left(x_{1}\right)=\frac{1}{1+e^{-x_{1}}} Sigmoid(x1)=1+ex11 对于 S o f t m a x Softmax Softmax函数,则为: Softmax ⁡ ( x 1 ) = e x 1 e x 1 + e x 2 = 1 1 + e − ( x 1 − x 2 ) \operatorname{Softmax}\left(x_{1}\right)=\frac{e^{x_{1}}}{e^{x_{1}}+e^{x_{2}}}=\frac{1}{1+e^{-\left(x_{1}-x_{2}\right)}} Softmax(x1)=ex1+ex2ex1=1+e(x1x2)1 对于 x 1 − x 2 x_{1} - x_{2} x1x2,我们可以使用一个 z 1 z_{1} z1来进行替换,则替换成了: Softmax ⁡ ( x 1 ) = 1 1 + e − z 1 \operatorname{Softmax}\left(x_{1}\right)=\frac{1}{1+e^{-z_{1}}} Softmax(x1)=1+ez11
  4. 区别

    1. S i g m o i d Sigmoid Sigmoid函数用于多标签分类问题,选取多个标签作为正确答案; S o f t m a x Softmax Softmax函数用于多分类问题,即从多个分类中选取一个正确答案。
    2. S i g m o i d Sigmoid Sigmoid函数的输出范围是[0, 1],可以视为一个概率; S o f t m a x Softmax Softmax函数的输出是一个多元分布,所有类别的概率之和等于1。
    3. 二分类任务中:
      • S i g m o i d Sigmoid Sigmoid函数针对两点分布提出。神经网络的输出经过它的转换,可以将数值压缩到 ( 0 , 1 ) (0,1) (0,1)之间,得到的结果可以理解成分类成目标类别的概率 P P P,而不分类到该类别的概率是 ( 1 − P ) (1 - P) (1P),这也是典型的两点分布的形式。
      • S o f t m a x Softmax Softmax函数本身针对多项分布提出,当类别数是2时,它退化为二项分布。而它和Sigmoid函数真正的区别就在——二项分布包含两个分类类别(姑且分别称为 A A A B B B),而两点分布其实是针对一个类别的概率分布,其对应的那个类别的分布直接由 1 − P 1-P 1P得出。
      • S i g m o i d Sigmoid Sigmoid函数可以认为是对一个类别的“建模”,将该类别建模完成,另一个相对的类别就直接通过1减去得到。而 s o f t m a x softmax softmax函数,是对两个类别建模,同样的,得到两个类别的概率之和是1
  5. 总结

    • 如果模型输出为非互斥类别,且可以同时选择多个类别,则采用 S i g m o i d Sigmoid Sigmoid函数计算该网络的原始输出值。
    • 如果模型输出为互斥类别,且只能选择一个类别,则采用 S o f t m a x Softmax Softmax函数计算该网络的原始输出值。
    • S i g m o i d Sigmoid Sigmoid函数可以用来解决多标签问题, S o f t m a x Softmax Softmax函数用来解决单标签问题。
    • 对于某个分类场景,当Softmax函数能用时,Sigmoid函数一定可以用。

参考文献

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: softmax函数sigmoid函数都是常用的激活函数,用于神经网络中的非线性变换。 softmax函数是一种多元分类的激活函数,将多个输入值映射到一个概率分布上,使得每个输出值都在0到1之间,并且所有输出值的和为1。在神经网络中,softmax函数常用于输出层,用于将神经网络的输出转化为概率分布,以便进行分类任务。 sigmoid函数是一种常用的二元分类的激活函数,将输入值映射到0到1之间的一个值,表示输入值为正例的概率。在神经网络中,sigmoid函数常用于隐藏层和输出层,用于将神经元的输出转化为概率值,以便进行分类任务或回归任务。 总的来说,softmax函数sigmoid函数都是常用的激活函数,用于神经网络中的非线性变换,但是它们的应用场景不同,softmax函数适用于多元分类任务,而sigmoid函数适用于二元分类任务。 ### 回答2: softmax函数sigmoid函数都是常见的非线性函数,在机器学习和深度学习中被广泛应用。它们的作用在于将输入的实数映射到一个0到1之间的范围内,便于用于概率估计和分类。 sigmoid函数是最基本的非线性函数之一,它的形式为:$sigmoid(x) = \dfrac{1}{1+e^{-x}}$。在输入的实数x较大时,sigmoid函数的值趋近于1;在输入的实数x较小时,sigmoid函数的值趋近于0。sigmoid函数具有连续可导、单调递增、非线性的特点,通常用于二分类问题中,即输出结果为正样本的概率。 softmax函数是一个常用的多类别分类器,在输入的实数向量中,将每一个分量映射成对应类别的概率。它的形式为:$softmax(x_i) = \dfrac{e^{x_i}}{\sum_{j=1}^{K}e^{x_j}}$,其中$x_i$表示输入向量的第i个分量,K表示类别的数量。softmax函数将所有输入向量的分量归一化并映射到一个概率分布上。在实践中,softmax函数通常与交叉熵损失函数一起使用,用于多分类问题的训练。 虽然softmax函数sigmoid函数在一些方面类似,但它们的应用场景不同。sigmoid函数通常用于二分类问题中,而softmax函数适合用于多类分类问题。此外,softmax函数对输入向量的大小比较敏感,较大的分量会对结果产生更大的影响,因此在使用softmax函数时需要注意输入向量的归一化问题。 ### 回答3: sigmoid函数softmax函数是深度学习中常用的激活函数Sigmoid函数也称为逻辑函数,其公式为f(x) = 1 / (1 + exp(-x))。sigmoid函数将输入值映射为[0,1]之间的浮点数,因此它常用于二分类问题的输出层。对于其他类型的问题,则需要使用其他函数Sigmoid函数的主要优点是易于计算,并且有一个平滑的导数,这使得它成为反向传播算法中常用的激活函数。然而,它也有几个缺点。对于输入x>5或x<-5,sigmoid函数的梯度非常小,这意味着在进行反向传播时,梯度可能会消失。此外,sigmoid函数的输出非线性,并且在函数的两端,梯度变得非常小,这使得训练过程会变得缓慢。 softmax函数也是一个激活函数,它用于多分类问题的输出层。softmax函数将输出值映射到[0,1]之间,并且所有值的总和为1。其公式为f(x_i) = exp(x_i) / sum_j(exp(x_j)),其中i表示类别,j表示所有类别。其特点是保留输入的相对大小,因此softmax函数可以将原始输出解释为类别的概率。 softmax函数的优点是它可以将输出解释为类别的概率,因此它是处理分类问题的不错选择。它也是可微分的,并且有一个平滑的导数,使得它非常适合用于反向传播算法。然而,与sigmoid函数一样,当输入较大时,softmax函数会给出接近于1的输出,这可能导致梯度消失。此外,softmax函数在处理大型数据集时会变得非常缓慢。 综上所述,sigmoid函数适用于二分类问题,而softmax函数适用于多分类问题。它们都有其优点和缺点,应根据具体问题进行选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

w94ghz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值