機器學習中的目標函數、損失函數、代價函數有什麼區別?

看了一些關於機器學習的資料,裡面經常有提到目標函數、損失函數、代價函數等,都被搞蒙了,能不能直觀地解釋下或者舉個例子。謝謝!!


謝謝評論區 @阿薩姆 老師的建議,完善下答案:

首先給出結論:損失函數和代價函數是同一個東西,目標函數是一個與他們相關但更廣的概念,對於目標函數來說在有約束條件下的最小化就是損失函數(loss function)。

舉個例子解釋一下:(圖片來自Andrew Ng Machine Learning公開課視頻)

上面三個圖的函數依次為 f_{1}(x) , f_{2}(x) , f_{3}(x) 。我們是想用這三個函數分別來擬合Price,Price的真實值記為 Y

我們給定 x ,這三個函數都會輸出一個 f(X) ,這個輸出的 f(X) 與真實值 Y 可能是相同的,也可能是不同的,為了表示我們擬合的好壞,我們就用一個函數來度量擬合的程度,比如:

L(Y,f(X)) = (Y-f(X))^2 ,這個函數就稱為損失函數(loss function),或者叫代價函數(cost function)。損失函數越小,就代表模型擬合的越好

那是不是我們的目標就只是讓loss function越小越好呢?還不是。

這個時候還有一個概念叫風險函數(risk function)。風險函數是損失函數的期望,這是由於我們輸入輸出的 (X,Y) 遵循一個聯合分布,但是這個聯合分布是未知的,所以無法計算。但是我們是有歷史數據的,就是我們的訓練集, f(X) 關於訓練集的平均損失稱作經驗風險(empirical risk),即 frac{1}{N}sum_{i=1}^{N}L(y_{i},f(x_{i})) ,所以我們的目標就是最小化 frac{1}{N}sum_{i=1}^{N}L(y_{i},f(x_{i})) ,稱為經驗風險最小化

到這裡完了嗎?還沒有。

如果到這一步就完了的話,那我們看上面的圖,那肯定是最右面的 f_3(x) 的經驗風險函數最小了,因為它對歷史的數據擬合的最好嘛。但是我們從圖上來看 f_3(x)肯定不是最好的,因為它過度學習歷史數據,導致它在真正預測時效果會很不好,這種情況稱為過擬合(over-fitting)。

為什麼會造成這種結果?大白話說就是它的函數太複雜了,都有四次方了,這就引出了下面的概念,我們不僅要讓經驗風險最小化,還要讓結構風險最小化。這個時候就定義了一個函數 J(f) ,這個函數專門用來度量模型的複雜度,在機器學習中也叫正則化(regularization)。常用的有 L_1 , L_2 範數。

到這一步我們就可以說我們最終的優化函數是:minfrac{1}{N}sum_{i=1}^{N}L(y_{i},f(x_{i}))+lambda J(f) ,即最優化經驗風險和結構風險,而這個函數就被稱為目標函數

結合上面的例子來分析:最左面的 f_1(x) 結構風險最小(模型結構最簡單),但是經驗風險最大(對歷史數據擬合的最差);最右面的 f_3(x) 經驗風險最小(對歷史數據擬合的最好),但是結構風險最大(模型結構最複雜);而 f_2(x) 達到了二者的良好平衡,最適合用來預測未知數據集。

以上的理解基於Coursera上Andrew Ng的公開課和李航的《統計學習方法》,如有理解錯誤,歡迎大家指正。


在深度學習裡面,我認為代價函數和損失函數應該是差不多的,雖然描述的角度不同,但是我沒找出來本質上的差別,都是評價模型好不好的。如果有大神覺得我說的不對,請多賜教,我也想搞個明白啊。。。。。

而目標函數跟另外兩個有很大的聯繫,但不是同一個東西。為了優化模型,得有一個研究目標吧,這就得選取一個目標函數,這個目標函數必須能體現模型的優劣。那麼損失函數或者代價函數就能體現體現模型的好壞,從這個角度看,我們求得損失最小的時候不就是模型優化得最好嗎?這個時候損失函數就是目標函數了。但是目標函數還需要容易優化才行,所以我們還常常看到損失函數又添加了一個修正項,就是那個帶λ係數的Ω項。也就是說,目標函數可以選損失函數,也可以是損失函數的變體,如果有其它能夠很好描述模型優劣並且能夠容易優化的函數,我覺得也可以成為目標函數。


把最大化或者最小化的函數稱為目標函數,把需要最小化的函數稱為代價函數或者損失函數,因為我們的優化是最小化代價或者損失。也就是代價函數與損失函數也屬於目標函數,有些目標是最大化,那麼就不能叫做損失函數或者代價函數了。


我認為這些概念沒有必要嚴格區分,機器學習總體來說是門比較新的學科,各種術語還沒有完全確定下來,當你讀多論文的時候你會發現各種優化目標並沒有一個統一的名字,損失函數,代價函數,目標函數,熵等等都會出現,這個很多情況下取決於作者自身的背景和他周圍別人是怎麼用的。但從本質上講它們之間並無區別。將機器學習問題建模成一個最優化問題已經是現在最主流的建模手段,這些都只是最優化問題中優化目標的在各種背景下的別名罷了。(現在少了,以前有物理背景的人建模就很喜歡借用熵這個概念,所以和其他人不一樣的是他們求最大值,我們求最小值,也是挺有趣的。)

學習機器學習時更應關心的特定問題下,人們是如何設計損失函數的。這裡為什麼用交叉熵,它和KL散度是什麼關係;那裡為什麼用平方損失,它和最大似然又是什麼關係;我優化目標是怎麼來的,我為什麼要這麼建模;這個模型最後是如何推出現在這個損失函數的;這個問題為什麼要添加正則子,為什麼能添加這樣的正則子,等等,等等。

舉個例子,線性擬合:我們現在對這個問題只是求一下最小平方損失,這是我們的損失函數。我們為什麼不用4次方,不用絕對值做損失呢。因為這個平方損失是我們假設y的觀測值存在一個正態分布的誤差,我們最大似然y的概率來的,在概率上有實際意義的支持。如果發現過擬合怎麼辦,添加正則子。添加正則子後的函數再叫損失函數不太合適吧,數學上已經不再和原來的概率問題等價,而且原來損失函數的名字已經被佔了。嗯,那就叫目標函數吧。就醬紫。


簡單點回答:

  1. 損失函數 left| y_i-f(x_i) 
ight| ,一般是針對單個樣本 i
  2. 代價函數 1/N.sum_{i=1}^{N}{left| y_i-f(x_1) 
ight|} , 一般是針對總體
  3. 目標函數 1/N.sum_{i=1}^{N}{left| y_i-f(x_1) 
ight|} + 正則化項

PS: 在很多paper中,1.2.3的叫法並不是很嚴格,另外優化過程中涉及到求梯度,所以代價函數很多會做成差的平方和形式,沒差,都是最小化y和output的差別。另外為了盡量避免過擬合,還會在後面加上正則化項。


每一個演算法都有一個目標函數(objective function),演算法就是讓這個目標函數達到最優。

對於分類的演算法,都會有對錯。

錯了就會有代價,或者說是損失。

分類演算法的目標就是讓它錯的最少,也就是代價最小。

所以對於分類演算法,它的目標函數就是代價函數(cost function),或者是損失函數(loss function)。

反正我是這麼理解的。


反對 @zzanswer 的答案,代價函數cost function 與損失函數loss funciton 並不是完全相同的概念

在 Coursera:Neural Networks and Deep Learning 課程中,Andrew Ng 給出的解釋如下:

The loss function computes the error for a single training example; the cost function is the average of the loss funcitons of the entire training set.

以 logistic regression 為例,圖片來自 Andrew 在該課程中的 PPT.

loss(error) function 是單個樣例的損失/誤差;而 cost function 是對數據集整體的誤差描述,是選定參數 w 和 b 後對數據進行估計所要支付的代價,cost 是對所有數據的誤差取平均得到的。

再次反對 @zzanswer 的觀點:

我們不僅要讓經驗風險最小化,還要讓結構風險最小化

經驗風險最小化和結構風險最小化並不是同時滿足的。

經驗風險最小化可表示為最優化問題:

結構風險最小化可表示為最優化問題:

在結構風險最小化中,經驗風險只是被優化的一部分,此時並不能稱經驗風險小化

上述兩個被優化的函數,在不同情境下都可被稱作目標函數,個人認為沒有一個統一的定義。


目標函數是最終需要優化的函數,其中包括經驗損失和結構損失。

obj=loss+Ω

經驗損失(loss)就是傳說中的損失函數或者代價函數。結構損失(Ω)就是正則項之類的來控制模型複雜程度的函數。



我在學習過程中是這麼認為的,在演算法的評價環節,需要評價一個演算法的性能,則需要使用性能度量/指標,根據不同的演算法有不同的性能度量/指標,比如代價函數、損失函數。而在演算法的優化環節,我們是希望能夠找到最好的模型,也就是使目標函數優化為最佳的參數所對應的模型。

舉個例子,線性回歸中的性能度量/指標是損失函數(平方損失函數),而這個平方損失函數就是可以直接作為目標函數來優化。


我個人理解是:損失函數/代價函數是對模型或者演算法的準確性的最直接的描述(對於二分類問題來說就是能不能正確分類的能力),而目標函數則是損失函數/代價函數的遞進,目標函數考慮的可能不僅僅有模型演算法的準確性,還可能要考慮模型的複雜度,可解釋度等等的問題(比如目標函數在損失函數的基礎之上加上各種正則項)。當然最簡單的情況就是目標函數和損失函數等價。


我聽過有位老師說的loss函數和cost函數的區別:loss函數針對的是單個樣本,cost函數針對所有樣本的。比如神經網路里求loss函數的變分就是得到一個樣本扔進去使得目標函數最小化的權重,而求cost函數的變分就是得到所有樣本扔進去使得目標函數最小化的權重。


贊同 @allenlew的回答,本質上 任何能夠很好描述模型優劣並且能夠容易優化的函數 都可以選為目標函數,只不過選擇 損失函數/代價函數 更符合邏輯推斷,因為他們的數學解釋性最直觀,而由此衍生的變體函數則完全出於優化過程的方便性考慮的。這部分建議精讀 李航《統計學習方法》的第二章,對這一知識點的講解比 周志華那本清晰


損失函數應該是用來計算單個訓練樣本的錯誤。其實總體來講就是代價函數...


我也覺得這三者是同一個東西,但好像又有些區別,不然為什麼會有三種不同的叫法呢,等大神......


貼上我自己的博客地址,裡面有較為詳細的解釋:

機器學習三要素|叫Jackie的鹹魚


deep learning這本書里提到過

絕大部分情況下應該是指同一種函數


[維基搬運工]知乎上搜到這個,感覺微亂,忽然想起維基,奮起而書之-_^

搜了三個詞條後,結論就是:1. loss function = objective function,雖然詞條中還提到一句目標函數或者是損失函數的相反值,在這種情況下目標函數需要求最大值 2. 在數學優化上loss function = cost function, 就是一個待最小化的函數 3. cost function提到了在ANN中它用來評估性能,而loss function在統計學中通常用作參數優化,在分類和優化控制作為penalty

個人感覺還是微亂-_-,不過至少知道這三個名詞各有特色,在某些場合叫這個也行叫那個也行,在某些場合叫這個比較 『約定俗成』 ,所以,不要糾結【......好糾結+_+】

loss function:

In mathematical optimization, statistics, decision theory and machine learning, a loss function or cost function is a function that maps an event or values of one or more variables onto a real number intuitively representing some "cost" associated with the event. An optimization problem seeks to minimize a loss function. An objective function is either a loss function or its negative (sometimes called a reward function, a profit function, a utility function, a fitness function, etc.), in which case it is to be maximized.

In statistics, typically a loss function is used for parameter estimation, and the event in question is some function of the difference between estimated and true values for an instance of data. The concept, as old as Laplace, was reintroduced in statistics by Abraham Wald in the middle of the 20th century.[1] In the context of economics, for example, this is usually economic cost or regret. In classification, it is the penalty for an incorrect classification of an example. In actuarial science, it is used in an insurance context to model benefits paid over premiums, particularly since the works of Harald Cramér in the 1920s.[2] In optimal control the loss is the penalty for failing to achieve a desired value. In financial risk management the function is precisely mapped to a monetary loss.

cost function:

In economics, the cost curve, expressing production costs in terms of the amount produced.

In mathematical optimization, the loss function, a function to be minimized.

In artificial neural networks, the function to return a number representing how well the neural network performed to map training examples to correct output.

objective function: 直接重定向到了loss function


推薦閱讀:

神經網路中的SIGMOID函數的意義?
第三次工業革命的完成會不會是以「AI製造AI」為標誌?
本科生進數據機器學習和挖掘實驗室能做一些什麼?
當前量子計算技術前沿是什麼水平?
怎麼看待所謂的「人工智慧威脅論」?

TAG:人工智慧 | 統計學 | 機器學習 | 神經網路 | 深度學習DeepLearning |