二分类问题,应该选择sigmoid还是softmax函数

二分类的激活函数通常选择sigmoid或者softmax函数,对于二分类的问题,sigmoid函数和softmax函数可以等价
首先记隐层的输出为h。
如果使用sigmoid的话,输出层有一个结点,值为 θ h \theta h θh。然后类别1,2的预测概率分别为:
p 1 = s i g m o i d ( θ h ) = 1 1 + e − θ h p_{1} = sigmoid(\theta h) = \frac{1}{1+e^{-\theta h}} p1​=sigmoid(θh)=1+e−θh1​
p 2 = 1 − s i g m o i d ( θ h ) = 1 1 + e θ h p_{2} = 1-sigmoid(\theta h) = \frac{1}{1+e^{\theta h}} p2​=1−sigmoid(θh)=1+eθh1​
这里面的 θ \theta θ相等于softmax层之中的一个权重参数。
而如果使用softmax,输出层有两个结点,值分别是 θ 1 h \theta_{1}h θ1​h与 θ 2 h \theta_{2}h θ2​h,然后类别1,2的预测概率分别为
p 1 = e θ 1 h e θ 1 h + e θ 2 h = 1 1 + e ( θ 2 − θ 1 ) h p_{1} = \frac{e^{\theta_{1}h}}{e^{\theta_{1}h}+e^{\theta_{2}h}} = \frac{1}{1+e^{(\theta_{2}-\theta_{1})h}} p1​=eθ1​h+eθ2​heθ1​h​=1+e(θ2​−θ1​)h1​
p 2 = e θ 2 h e θ 1 h + e θ 2 h = 1 1 + e ( θ 1 − θ 2 ) h p_{2} = \frac{e^{\theta_{2}h}}{e^{\theta_{1}h}+e^{\theta_{2}h}} = \frac{1}{1+e^{(\theta_{1}-\theta_{2})h}} p2​=eθ1​h+eθ2​heθ2​h​=1+e(θ1​−θ2​)h1​
这里面的 θ 1 \theta_{1} θ1​和 θ 2 \theta_{2} θ2​相当于softmax网络之中的两个权重参数
可以看到,sigmoid网络中的 θ \theta θ与softmax网络中的 ( θ 1 − θ 2 ) (\theta_{1}-\theta_{2}) (θ1​−θ2​)是等价的。也就是说,不管sigmoid网络能产生什么样的预测,也一定存在softmax网络能产生相同的预测,只要令 θ 1 − θ 2 = θ \theta_{1}-\theta_{2} = \theta θ1​−θ2​=θ即可。
所以softmax网络的训练过程可以看作是在直接优化 θ 1 − θ 2 \theta_{1}-\theta_{2} θ1​−θ2​,优化结果和sigmoid应该没什么差异。所以我自己在做的时候会直接用softmax,这样也比较方便改成多分类模型。

上一篇:03 css三种引入的方式


下一篇:每日CSS_发光文本效果