【caffe】loss function、cost function和error

@tags: caffe 機器學習html

在機器學習(暫時限定有監督學習)中,常見的算法大均可以劃分爲兩個部分來理解它算法

  1. 一個是它的Hypothesis function,也就是你用一個函數f,來擬合任意一個輸入x,讓預測值t(t=f(x))來擬合真實值y框架

  2. 另外一個是它的cost function,也就是你用一個函數E,來表示樣本整體的偏差。機器學習

而有時候還會出現loss function,感受會和cost function混淆。函數

上quora看了下,有個同名問題,回答的人很少,upvote更少。。回答者裏面,廣泛認爲cost function就是loss function,一個意思。學習

anyway,仍是有個答案提到了區別,我更支持這種見解,參考這裏:http://image.diku.dk/shark/sphinx_pages/build/html/rest_sources/tutorials/concepts/library_design/losses.htmlui

簡單說,loss function是對於單個樣本而言的,好比對於0-1分類問題,當前預測樣本x的輸出爲t,實際值爲y,那麼loss function就是y-t,或者abs(y-t);對於連續型數據的預測,也就是迴歸問題,loss function能夠是差值的平方:(y-t)^2
cost function是對於樣本整體而言的,對於0-1分類問題,loss function是n個樣本的loss function取值的均值;而對於迴歸問題,cost function是n個樣本的平方偏差的平均,俗稱均方偏差(mean square error)rest

總結:cost function是各個樣本的loss funcion的平均htm

========== 那麼caffe下的loss又是怎麼一回事?===========blog

caffe一般是視覺任務用的深度學習框架,處理的原始數據是圖片。每次處理一張圖片,這自己能夠run,算是OK,但不夠好。

每次處理多張圖片,稱爲一個batch(批次),好比訓練圖片一共有4000張,每一個batch處理50張。

按照batch來處理圖片後,每一個batch算出一個loss,也就是這50張圖片的loss平均。固然這個loss其實並非重點。重點是,用這50個樣本,在作梯度降低來更新權值的時候,梯度是根據這50個樣本算出來的均值,而不是用某一個圖片的梯度:

這也就是要使用batch的緣由。

=========== error又是什麼 ============ error是說,一個預測結果和實際標籤比較,同樣的話不算錯,不同就算錯(僅考慮分類問題)。 那麼我在一個miniBatch以內,好比100張圖,每張圖對應一個分類的標籤,以及一個預測出來的結果,這個預測結果和標籤作比較,若是不一致說明「預測錯了」。統計全部100張圖上「預測錯誤的結果」的數量,好比有3個,那麼error就認爲是3,或者表示爲3%。 也就是說,error表示的是「累計錯誤數量的佔比」。從這一點來看,error關注的是「是否正確」的累計,而不是「單個結果上錯誤的程度」,error關注的是「質」,而loss關注的是「錯誤的程度」(根據loss函數來決定),這一點上,error和loss是有所不一樣的。

相關文章
相關標籤/搜索