神經網絡和深度學習 | ||
---|---|---|
上一篇 | 主目錄 | 下一篇 |
文章結構
-
- 1.損失函數,代價函數,目标函數
- 2. 損失函數
- 3. 代價函數
-
- 3.1 為什麼需要代價函數
- 3.2 代價函數的形式
- 4. 目标函數
【前言】
這下函數是算法好壞的評價标準之一。
所讨論的事件是資料執行個體的估計值和真值之間的差異的一些函數。簡而言之,就是用來評估預測值相對于真實值的損失情況。在某種參數的取值情況下,使得某代價函數的取值最小,這些參數也就是我們進行神經網絡訓練的目标。
以下關于損失函數和代價函數等的函數形式隻是個例,并不唯一。
1.損失函數,代價函數,目标函數
函數名稱 | 定義 |
---|---|
損失函數(Loss Function ) | 是定義在單個樣本上的,算的是一個樣本的誤差 |
代價函數(Cost Function ) | 是定義在整個訓練集上的,是所有樣本誤差的平均,也就是損失函數的平均 |
目标函數(Object Function) | 最終需要優化的函數。等于經驗風險+結構風險(也就是Cost Function + 正則化項) |
-
關于目标函數和代價函數的差別還有一種通俗的差別:
目标函數是最大化或者最小化,而代價函數是最小化
2. 損失函數
損失函數又叫做誤差函數,用來衡量算法的運作情況,Loss function:L(yhat,y).
我們通過這個 L稱為的損失函數,來衡量預測輸出值和實際值有多接近。一般我們用預 測值和實際值的平方差或者它們平方差的一半,但是通常在邏輯回歸中我們不這麼做,因為 當我們在學習邏輯回歸參數的時候,會發現我們的優化目标不是凸優化,隻能找到多個局部 最優值,梯度下降法很可能找不到全局最優值,雖然平方差是一個不錯的損失函數,但是我 們在邏輯回歸模型中會定義另外一個損失函數。 我們在邏輯回歸中用到的損失函數是:
其中,
為什麼要用這個函數作為邏輯損失函數?當我們使用平方誤差作為損失函數的時候,你 會想要讓這個誤差盡可能地小,對于這個邏輯回歸損失函數,我們也想讓它盡可能地小,為 了更好地了解這個損失函數怎麼起作用,我們舉兩個例子:
-
從以上中我們知道,
1)如果 y等于 1,為了使L變小,我們就通過調整參數(w,b等)盡可能讓yhat變大,那麼預測值yhat就越接近于真實值y;
2)如果 y等于 0,為了使L變小,我們就通過調整參數(w,b等)盡可能讓yhat變小,那麼預測值yhat就越接近于真實值y
損失函數是在單個訓練樣本中定義的,它 衡量的是算法在單個訓練樣本中表現如何,為了衡量算法在全部訓練樣本上的表現如何,我 們需要定義一個算法的代價函數,算法的代價函數是對 ݉ 個樣本的損失函數求和然後除以 ݉m,具體見代價函數部分。
3. 代價函數
3.1 為什麼需要代價函數
當我們确定了模型h,後面做的所有事情就是訓練模型的參數w和b。那麼什麼時候模型的訓練才能結束呢?這時候也涉及到代價函數,由于代價函數是用來衡量模型好壞的,我們的目标當然是得到最好的模型(也就是最符合訓練樣本(x, y)的模型)。是以訓練參數的過程就是不斷改變參數,進而得到更小的J(θ)的過程。理想情況下,當我們取到代價函數J的最小值時,就得到了最優的參數。綜上,代價函數評估算法的好壞,幫助我們得到最佳的模型參數。
注意:代價函數衡量的是算法在全部訓練樣本上的表現如何
3.2 代價函數的形式
我們知道,損失函數衡量的是算法在單個訓練樣本中表現,而代價函數衡量算法在全部訓練樣本上的表現。損失函數的形式在前面已經說明,相應的可以得到代價函數的形式:
損失函數隻适用于像這樣的單個訓練樣本,而代價函數是參數的總代價,是以在訓練邏 輯回歸模型時候,我們需要找到合适的 w和 ܾb,來讓代價函數 J的總代價降到最低。
如何進行訓練以找到合适的 w和 ܾb呢?這需要用到梯度下降算法,詳情參見:《神經網絡和深度學習(7)-- 梯度下降算法》
4. 目标函數
目标函數是最大化或者最小化,而代價函數是最小化
簡單地說,目标函數中考慮的項不僅僅是包括了代價函數,還會考慮其他因素的影響,例如某目标函數的形式為:
在上式中,L是代價函數,屬于經驗風險;此外還有結構風險,定義的函數為J(f).
經驗風險是基于訓練使用的資料集的,可能會導緻過度拟合的現象,這時我們就需要考慮結果上的風險,于是定義了一個叫做J(f)的函數來對所得到的函數的結構進行風險評估。目标函數就是綜合考慮了以上的不同因素而得到的函數。進一步說,代價函數隻是基于訓練的資料集而進行的評估,而目标函數考慮了代價函數和代價函數模型結構而進行綜合的評估。
以上均基于個人了解,如果不正确的地方歡迎指教,您可以通過郵箱或下方評論等方式與我取得聯系,不勝感激。
神經網絡和深度學習系列筆記: 傳送門