Caffe中Loss Layer原理的简单梳理

1.SoftmaxWithLoss

对一对多的分类任务计算多项逻辑斯蒂损失,并通过softmax传递预测值,来获得各类的概率分布。该层可以分解为SoftmaxLayer+MultinomialLogisticLossLayer,但它的梯度计算在数值上更为稳健。在测试时,该层可用SoftmaxLayer替代。

前向传播

bottom: 1.(N×C×H×W)维的预测得分x,N是batch数,类别总数为K=CHW,目前看到的SoftmaxWithLossLayer的bottom一般是一个InnerProduct层,所以K是写在一起的。该层将这些得分通过softmax函数(多项logistic回归模型)这里写图片描述映射为概率分布,n∈[0, 1, …, N-1],k、k’∈[0, 1, …, K-1]; 
2.(N×1×1×1)维的标签l,这里写图片描述,表示这个bacth中各样本的正确标签。 
top:(1×1×1×1)维,对softmax输出类别概率这里写图片描述的交叉熵分类损失这里写图片描述

反向传播

top:(1×1×1×1)维,该blob的微分就是loss_weight λ,λ是该层输出这里写图片描述 的系数,整个网络的损失为这里写图片描述 ,这样这里写图片描述。 
bottom: 1.(N×C×H×W)维的预测得分x,反向计算微分这里写图片描述; 
2.(N×1×1×1)维的标签,忽略。 
另外可参考一篇很好的介绍文章:http://blog.csdn.net/u012162613/article/details/44239919

2.EuclideanLoss

回归任务计算欧氏距离(L2)损失这里写图片描述,可用于最小二乘回归任务。

前向传播

bottom: 1.(N×C×H×W)维的预测,这里写图片描述 
2.(N×C×H×W)维的真实结果,这里写图片描述 
top:(1×1×1×1)维的欧氏距离损失:这里写图片描述

反向传播

top:(1×1×1×1)维,该blob的微分就是loss_weight λ,λ是该层输出这里写图片描述 的系数,整个网络的损失为这里写图片描述 ,这样这里写图片描述。 
bottom: 1.(N×C×H×W)维的预测这里写图片描述,反向计算微分这里写图片描述; 
2.(N×C×H×W)维的预测这里写图片描述,反向计算微分这里写图片描述

3.HingeLoss

对一对多的分类任务计算铰链损失。

前向传播

bottom: 1.(N×C×H×W)维的预测t,blob值的范围是这里写图片描述,表示对K=CHW中每个类的预测得分。在SVM中,这里写图片描述是D维特征这里写图片描述和超平面参数这里写图片描述的内积这里写图片描述,因此只有一个InnerProductLayer(num_output = D)提供预测到HingeLossLayer中的网络就相当于一个SVM; 
2.(N×1×1×1)维的真实标签l,这里写图片描述。 
top:(1×1×1×1)维的铰链损失:这里写图片描述,对应于这里写图片描述正规化,默认是L1正规化,也可以用L2正规化,这里写图片描述

反向传播

top:(1×1×1×1)维,该blob的微分就是loss_weight λ,λ是该层输出这里写图片描述 的系数,整个网络的损失为这里写图片描述 ,这样这里写图片描述。 
bottom: 1.(N×C×H×W)维的预测得分t,反向计算微分这里写图片描述; 
2.(N×1×1×1)维的标签,忽略。

4.SigmoidCrossEntropyLoss

计算交叉熵(逻辑斯蒂)损失这里写图片描述,通常用于以概率形式预测目标。该层可以分解为SigmoidLayer+CrossEntropyLayer,但它的梯度计算在数值上更为稳健。在测试时,该层可用SigmoidLayer替代。

前向传播

bottom: 1.(N×C×H×W)维的预测得分这里写图片描述,是用sigmoid函数这里写图片描述的概率预测这里写图片描述; 
2.(N×C×H×W)维的真实结果,这里写图片描述。 
top:(1×1×1×1)维的交叉熵损失:这里写图片描述

反向传播

top:(1×1×1×1)维,该blob的微分就是loss_weight λ,λ是该层输出这里写图片描述 的系数,整个网络的损失为这里写图片描述 ,这样这里写图片描述。 
bottom: 1.(N×C×H×W)维的预测得分x,反向计算微分这里写图片描述; 
2.(N×1×1×1)维的标签,忽略。

5.MultinomialLogisticLossLayer

对一对多的分类任务计算多项逻辑斯蒂损失,直接将预测的概率分布作为输入。当预测并不是概率分布时应该用SoftmaxWithLossLayer,因为它在计算多项逻辑斯蒂损失前通过SoftmaxLayer将预测映射为分布。

前向传播

bottom: 1.(N×C×H×W)维的预测得分这里写图片描述,blob值的范围是[0, 1],表示对K=CHW个类中每个类的预测概率。每个预测向量这里写图片描述之和为1,这里写图片描述
2.(N×1×1×1)维的标签l,这里写图片描述,表示这个bacth中各样本的正确标签。 
top:(1×1×1×1)维的多项逻辑斯蒂损失这里写图片描述

反向传播

top:(1×1×1×1)维,该blob的微分就是loss_weight λ,λ是该层输出这里写图片描述 的系数,整个网络的损失为这里写图片描述 ,这样这里写图片描述。 
bottom: 1.(N×C×H×W)维的预测得分这里写图片描述,反向计算微分这里写图片描述; 
2.(N×1×1×1)维的标签,忽略。

6.InfogainLoss

是MultinomialLogisticLossLayer的泛化,利用“information gain”(infogain)矩阵指定所有标签对的“value“,如果infogain矩阵一致则与MultinomialLogisticLossLayer等价。

前向传播

bottom: 1.(N×C×H×W)维的预测得分这里写图片描述,blob值的范围是[0, 1],表示对K=CHW个类中每个类的预测概率。每个预测向量这里写图片描述之和为1,这里写图片描述
2.(N×1×1×1)维的标签l,这里写图片描述,表示这个bacth中各样本的正确标签; 
3.(1×1×K×K)维的infogain矩阵H(相应的另一个为I),若H=I则该层等价于MultinomialLogisticLossLayer。 
top:(1×1×1×1)维的infogain多项逻辑斯蒂损失这里写图片描述这里写图片描述指的是H的第这里写图片描述行。

反向传播

top:(1×1×1×1)维,该blob的微分就是loss_weight λ,λ是该层输出这里写图片描述 的系数,整个网络的损失为这里写图片描述 ,这样这里写图片描述。 
bottom: 1.(N×C×H×W)维的预测得分这里写图片描述,反向计算微分这里写图片描述; 
2.(N×1×1×1)维的标签,忽略; 
3.(1×1×K×K)维的infogain矩阵,忽略。

7.ContrastiveLoss

计算对比损失这里写图片描述,其中这里写图片描述,可用于训练siamese网络。

前向传播

bottom: 1.(N×C×1×1)维的特征这里写图片描述; 
2.(N×C×1×1)维的特征这里写图片描述; 
3.(N×C×1×1)维的二元相似度这里写图片描述。 
top:(1×1×K×K)维的对比损失这里写图片描述

反向传播

top:(1×1×1×1)维,该blob的微分就是loss_weight λ,λ是该层输出这里写图片描述 的系数,整个网络的损失为这里写图片描述 ,这样这里写图片描述。 
bottom: 1.(N×C×1×1)维的特征a; 
2.(N×C×1×1)维的特征b。

猜你喜欢

转载自blog.csdn.net/qq_23304241/article/details/80929486