loss weight
Loss(損失)
-
與絕大多數的機器學習引擎一樣,Caffe是由一個loss function(損失函數)驅動的。loss function也稱為 error function,cost function或者objective function。loss function利用模型中的參數(比如模型中網絡的weights-權重參數)運算得出一個(標量)結果,這個結果表明參數設置的badness,通過最小化loss function得出的badness,來優化算法,達到學習的目標。
-
Caffe中的loss是由Net的Forward pass計算得出的。每一個Layer根據輸入的Blobs計算得到輸出的Blobs。某些Layer的輸出會被用于loss function計算badness。對于one-versus-all classification task(多分類問題),一個經典的loss function是SoftmaxWithLoss function(廣義線性回歸分析損失函數)。如下定義:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 在SoftmaxWithLoss function中,輸出是一個標量,計算的是預測值(pred)與實際值(label)之間的平均誤差(loss)。
Loss weights(損失權重)
-
對于有多個Layer組成的Net而言(例如一個由SoftmaxWithLoss layer和EuclideanLoss layer組成的Net),loss weights(權重)用來表征不同Layer產生的loss的重要性。
-
Caffe里面的約定,Layer名稱中以Loss結尾表示這是一個會產生loss的Layer,除此之外,其他的Layer只是單純的用于中間計算。然而,任何一個Layer都可以被用于產生loss,如果為Layer產生的每一個output Blob添加一個屬性:loss_weight: <float>的話。每一個Loss Layer都有一個隱含的loss weight,對于第一個top/output,loss weight是1,對于其他的top/output,loss weight是0;其他類型Layer隱含的loss weight都是0。所以上述的SoftmaxWithLoss layer也可以寫成:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
-
然而,反向迭代時,一個Layer可以賦予一個非零的loss weight,用于調整中間Layer產生的一些數據、參數。對于不止一個輸出(top)的Layer(對應的有非零的loss weight),輸出的loss是summing over all entries of the blob(對所有輸出-blob的loss的和)。
-
Caffe最后輸出的loss,是由Net中所有的loss加權得到的,如下所示(偽代碼):
總結
以上是生活随笔為你收集整理的loss weight的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: excel验证身份证号码是否正确
- 下一篇: speedoffice表格如何冻结窗格?