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,
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:
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。