Caffe Loss层 - SigmoidCrossEntropyLossLayer
1. SigmoidLayer
非线性激活函数——Sigmoid:
y=(1+exp(−x))−1=11+exp(−x) y = ( 1 + e x p ( − x ) ) − 1 = 1 1 + e x p ( − x )
该激活函数随着值远离 0 ,会出现梯度消失.
2. SigmoidCrossEntropyLossLayer
计算交叉熵(cross-entropy) loss:
E=−1n∑Nn=1[pnlogp^n+(1−pn)log(1−p^n] E = − 1 n ∑ n = 1 N [ p n l o g p ^ n + ( 1 − p n ) l o g ( 1 − p ^ n ]
主要用于以概率形式预测目标值.
交叉熵 loss 用于度量两个概率分布之间的相似性.
该Loss层相比 SigmoidLayer + CrossEntropyLayer,梯度计算具有更好的数值稳定性.
Test 时,该网络层可以替换为 SigmoidLayer.
参数:
- bottom - 长度为2的输入Blob
- Size为 (N×X×H×W) ( N × X × H × W ) ,采用 sigmoid 函数得到的概率预测值 p^n=sigmoid(xn)∈[0,1] p ^ n = s i g m o i d ( x n ) ∈ [ 0 , 1 ]
- Size为 (N×X×H×W) ( N × X × H × W ) ,目标值,targets
- top - 长度为1的输出Blob
- Size为 (1×1×1×1) ( 1 × 1 × 1 × 1 ) ,计算的交叉熵loss值.
2.1 SigmoidCrossEntropyLoss层计算
Reference
[1] - caffe::SigmoidCrossEntropyLossLayer
[2] - “caffe里sigmoidCrossEntropyLoss层计算” - CaffeCN深度学习社区
[3] - 如何通俗的解释交叉熵与相对熵? - 知乎