
2025年最新LangChain Agent教程:從入門到精通
因為sigmoid函數的性質,如圖的兩端,幾近于平坦,導致 在 取大部分值時會很小,這樣會使得 和 更新非常慢(因為 )。
再定量解釋如下:在上式
a) 當真實值 若 輸出值 ,則
若 輸出值 ,則
b) 當真實值 , 若 輸出值 ,則
若 輸出值 ,則
也就是平方損失(MSE)的梯度更新很慢,如下圖所示
這就帶來實際操作的問題。當梯度很小的時候,應該減小步長(否則容易在最優解附近產生來回震蕩),但是如果采用 MSE ,當梯度很小的時候,無法知道是離目標很遠還是已經在目標附近了。(離目標很近和離目標很遠,其梯度都很小)
為了克服上述 MSE 不足,引入了categorical_crossentropy(交叉熵損失函數)
1)二分類 Binary Cross-entropy
激活函數為 sigmoid
損失函數:
或者簡寫成:
其中 , 表示樣本數量。
同樣求導可得:
證明如下:
其中,
因此, 的梯度公式中原來的 被消掉了,所以導數中沒有 這一項,權重的更新是受 這一項影響(表示真實值和輸出值之間的誤差),即受誤差的影響,所以當誤差大的時候,權重更新就快,當誤差小的時候,權重的更新就慢。
2)多分類 Categorican Cross-entropy
激活函數為 softmax
可以看作是Sigmoid的一般情況,用于多分類問題。
損失函數:
后續分析類似。
sigmoid(softmax)+cross-entropy loss 擅長于學習類間的信息,因為它采用了類間競爭機制,它只關心對于正確標簽預測概率的準確性,忽略了其他非正確標簽的差異,導致學習到的特征比較散。基于這個問題的優化有很多,比如對softmax進行改進,如L-Softmax、SM-Softmax、AM-Softmax等。這些在本篇不展開討論。
我們從最簡單的線性回歸開始討論:線性回歸(回歸問題)使用的是平方損失:
因為這個函數 是凸函數,直接求導等于零,即可求出解析解,很簡單。但是對于邏輯回歸則不行(分類問題)【注意:邏輯回歸不是回歸!是分類!!】。因為如果邏輯回歸也用平方損失作為損失函數,則:
其中 表示樣本數量。上式是非凸的,不能直接求解析解,而且不宜優化,易陷入局部最優解,即使使用梯度下降也很難得到全局最優解。如下圖所示:
2.Cross-entropy
而,Cross-entropy 計算 loss,則依舊是一個凸優化問題。
以下進行詳細說明和推導:
邏輯回歸模型進行學習時,給定訓練集:,其中 ,可以應用 極大似然估計 估計模型參數,從而得到邏輯回歸模型。
設:
似然函數:
對數似然函數為:
接下來求 的極大值,從而得到 的估計值。
這樣一來,問題就變成了以對數似然函數為目標函數的最優化問題,邏輯回歸 中通常的方法就是梯度下降法和擬牛頓法。
極大似然函數是求極大,取個相反數,再對所有 個樣本取平均,即得到邏輯回歸的損失函數:
并且這個損失函數 是凸函數,沒有局部最優解,便于優化。
以下是直觀理解:
其中:
當類別標簽為 時,越靠近 1 則損失越小;當類別標簽為 時,越靠近 1 則損失越大.
參考鏈接
文章轉載自: 交叉熵損失(Cross-entropy)和平方損失(MSE)究竟有何區別?