Machine-Learning

為什麼二進制交叉熵可以用作自編碼器中的損失函數?[複製]

  • October 4, 2018

我想知道為什麼二進制交叉熵可以用作在(標準化)圖像上訓練的自動編碼器中的損失函數,例如這里本文?我知道二進制交叉熵可用於二進制分類問題,其中地面實況標籤(即 $ y $ ) 為 0 或 1,因此當預測(即 $ p $ ) 是正確的,在這兩種情況下,損失值都為零:

$$ BCE(y,p) = -y.log(p) - (1-y).\log{(1-p)} $$

$$ BCE(0,0) = 0, BCE(1,1) = 0 $$

然而,當二元交叉熵的參數都不是零或一時,二元交叉熵的值不為零,這是在範圍內具有真實標籤的自動編碼器的情況 $ [0,1] $ (即假設輸入數據已在此範圍內歸一化)。我認為必須使用回歸損失函數,例如均方誤差或平均絕對誤差,當標籤和預測相同時,它們**的值為零。**我在這裡想念什麼?

我認為必須使用回歸損失函數,例如均方誤差或平均絕對誤差, 當標籤和預測相同時,它們的值為零。

這正是你的誤解。您認為,為了在自動編碼器等模型中使用損失函數,當預測等於真實標籤時,它的值必須為零。這是完全錯誤的,因為在大多數機器學習模型(包括自動編碼器)中,我們都試圖最小化損失/成本函數。我們這樣做的假設是,當我們使用的損失函數達到其最小值時,意味著預測和真實標籤是相同的. 這就是在基於最小化損失函數訓練的模型中使用函數作為損失函數的條件。請注意,在這個最小點的損失函數的值可能根本不為零,但是我們並不關心這一點,只要它暗示該點的預測和真實標籤是相同的。

現在讓我們驗證二元交叉熵的情況:我們需要證明當我們達到二元交叉熵的最小值時,它意味著 $ y = p $ ,即預測等於真實標籤。為了找到最小點,我們取關於的導數 $ p $ 並將其設置為零(請注意,在以下計算中,我假設 $ log $ 是自然對數函數,使計算更容易):

$$ \begin{align}&\frac{\partial BCE(y,p)}{\partial p} = 0\ &\implies -y.\dfrac{1}{p} - (1-y).\dfrac{-1}{1-p} = 0\ &\implies -y.(1-p) + (1-y).p = 0\ &\implies -y + y.p + p - y.p = 0\ &\implies p - y = 0\ &\implies y = p \end{align} $$

引用自:https://stats.stackexchange.com/questions/370179

comments powered by Disqus