Sigmoid——二分类
- 将输出转换为概率
- 概率的值范围为0.0到1.0
- 属于所有类别的概率之和为1.0
σ ( l i ) = 1 1 + e − l i σ(li) = \frac{1}{1 + e^{-li}} σ(li)=1+e−li1
Softmax——多分类
S
(
l
i
)
=
e
l
i
∑
k
e
l
k
S(l_i) = \frac{e^{l_i}}{\sum_{k}e^{l_k}}
S(li)=∑kelkeli
multi-label分类,非 multi-class分类
- 输出属于对个类别中的一个或者多个类
- 例如一幅包含猫咪的图像可以同事属于“猫”、“哺乳动物”或者“宠物”
- 对每一个输出独立使用Sigmoid激活函数,不使用softmax
BCE (结合sigmoid)
- Cross-entropy loss for multi-label classification
L i = − ∑ k y k l o g ( σ ( l i ) + ( 1 − y k ) l o g ( 1 − σ ( l i ) ) ) L_i = - \sum_{k} y_klog(\sigma(li) + (1 - y_k)log(1 - \sigma(l_i))) Li=−k∑yklog(σ(li)+(1−yk)log(1−σ(li)))
CE (结合softmax)
- Cross-entropy loss for multi-class classification
L i = − ∑ k y k l o g ( S ( l k ) ) L_i = - \sum_{k}y_klog(S(l_k)) Li=−k∑yklog(S(lk))
一般而言:cross-entropy loss比方差函数square error loss在分类的情形下要好:
- 方差函数对误差的输出惩罚非常大
- 如果使用Softmax激活函数,加上方差函数作为损失函数,梯度包含 y ^ ( 1 − y ^ ) \hat{y}(1 - \hat{y}) y^(1−y^), 当输出接近0.0或者1.0的时候,梯度值非常小,网络的训练会比较慢
从以下的求导公式可以看出