CaffeLoss - SigmoidCrossEntropyLossLayer 用于 010101110 类型的 labels
<h2>1. SigmoidLayer</h2>
非线性激活函数 — Sigmoid:
$${y = (1+exp(-x))^{-1} = \frac{1}{1+exp(-x)}}$$
该激活函数随着值远离 0 ,会出现梯度消失.
<h2>2. SigmoidCrossEntropyLossLayer</h2>
计算交叉熵(cross-entropy) loss:
$${E = \frac{-1}{n}\sum_{n=1}^N[p_nlog\hat{p}_n + (1-p_n)log(1-\hat{p}_n]}$$
主要用于以概率形式预测目标值.
交叉熵 loss 用于度量两个概率分布之间的相似性.
该Loss层相比 SigmoidLayer + CrossEntropyLayer,梯度计算具有更好的数值稳定性.
Test 时,该网络层可以替换为 SigmoidLayer.
参数:
- bottom - 长度为2的输入Blob
- Size为 (N×X×H×W) ,采用 sigmoid 函数得到的概率预测值 sigmoid(x_n)
- Size为 (N×X×H×W) ,目标值,targets
- top - 长度为1的输出Blob
- Size为 (1×1×1×1) ,计算得到的交叉熵 loss 值.
<h3>2.1 SigmoidCrossEntropyLoss层计算</h3>
计算过程如下:
<h2>Reference</h2>
[1] - caffe::SigmoidCrossEntropyLossLayer
[2] - "caffe里sigmoidCrossEntropyLoss层计算" - CaffeCN深度学习社区
[3] - 如何通俗的解释交叉熵与相对熵? - 知乎