神經網路之損失函式

2021-07-31 06:25:37 字數 3080 閱讀 3844

對於損失函式一直處於混亂理解的狀態,l2=1/2 ||a-y||^2 ,對於其他的類似於交叉資訊熵感覺很高大上的樣子,但是到底是怎麼回事呢?今天我就一**竟!

我們都知道,神經網路模型訓練得以實現是經過前向傳播計算loss,根據loss的值進行反向推到,進行相關引數的調整。可見,loss是指導引數進行調整的方向性的指導,很關鍵,正如在梯度下降中看到的圖一樣,如果loss隨意指示下降的方向,那麼可能無論經過多少次迭代,都是沒有目標的隨意遊走,又怎麼可能到達loss最低點呢?

所以,在神經網路的訓練中對於損失函式的選取、以及梯度下降的各個引數的調整尤為重要!

損失函式通常可以表示成損失項和正則項的和 j(w)=∑il(mi(w))+λr(w) ,今天我們只對於前一部分進行理解和記錄。對於損失函式的收斂特性我們期望是當誤差越大的時候,收斂(學習)速度應該越快。

具體分為以下三類:

1. quadratic+sigmoid (平方損失函式)

2. cross entropy + sigmoid (交叉熵損失函式)

3. softmax + log-likelihood

(1)定義

平方和損失函式定義c=0.5*(y−a)^2,其中y是期望輸出,a是實際輸出。

(2)收斂特性

不幸的是,使用平方和作為損失函式的神經單元不具備這種性質,即當誤差越大的時候,收斂(學習)速度應該越快。你可以按照下面的列子驗證一下。

z=wx+b

a=δ(z)

根據鏈式法則,求c對於w的偏導數

∂c/∂w=(δ(z)−y)δ′(z)x

∂c/∂b=(δ(z)−y)δ′(z)

如果啟用函式使用的是sigmoid函式的話,根據啟用函式的形狀和特性可知,當δ(z)趨近於0或者趨近於1的時候,δ′(z)會趨近於0,當δ(z)趨近於0.5的時候,δ′(z)會最大。

比如說,取y=0,當δ(z)=1的時候,期望值和實際值的誤差δ(z)−y達到最大,此時,δ′(z)會趨近於0,所以就會發生收斂速度慢的問題。

(1)定義

為了解決當誤差大時,收斂速度大的問題,引入交叉熵損失函式。

c=−(ylna+(1−y)ln(1−a))
(2)特點

要想成為loss function,需要滿足兩點要求:

1. 非負性

2. **值和期望值接近時,函式值趨於0

顯然,quadratic cost function滿足以上兩點。cross entropy同樣也滿足以上兩點,所以其可以成為乙個合格的cost function。

(3)收斂特性

z=wx+b

a=δ(z)

依舊根據鏈式法則,可以求得對應的偏導數

∂c/∂w=δ′(z)x
對於sigmoid函式,有δ′(z)=δ(z)(1−δ(z))對上式子進行替換和約分有∂c/∂w=(δ(z)−y)x

∂c/∂b同理,∂c/∂b=(δ(z)−y)x。

可以看到梯度(∂c/∂w)正比與誤差(δ(z)−y),滿足我們最初的目標!

(4)含義

交叉熵是用來衡量兩個概率分布之間的差異。交叉熵越大即資訊量越大,兩個分布之間的差異越大,越對實驗結果感到意外,反之,交叉熵越小,兩個分布越相似,越符合預期。如拋擲兩枚硬幣,如果確定出現某一面其資訊量不大,而正反面都是以1/2的概率出現,這個時候資訊熵最大。下面以離散分布為例討論。

q(x)表示估計x的概率分布,p(x)表示真實x的概率分布,交叉熵定義如下:

h(p(x),q(x))=h(p(x))+d(p(x)||q(x))
其中,h(p(x))表示p(x)的熵,定義如下:

h(p(x))=−∑p(x)logp(x)
d(p(x)||q(x))表示p(x)和q(x)的kl距離(kullback-leibler divergence),也叫作相對熵,定義如下:

d(p(x)||q(x))=∑p(x)log(p(x)/q(x))
由h(p(x))和d(p(x)||q(x))可得h(p,q)=−∑p(x)logq(x)

對於神經網路的二值輸出(0或者1),假設神經網路輸出a表示是輸出1的概率(此時對應的y=1),那麼1−a表示輸出0的概率(此時對應的1−y=0),所以交叉熵可以定義成如下形式:

c=−(ylna+(1−y)ln(1−a))

(1)softmax多分類器定義

zj=∑wx+b

aj=ej/∑ek (原來此處是sigmoid函式)

(2)loss的計算公式

c=−lnay
ay表示類別y對應的**概率,如果**好的話,ay會趨近於1,c會趨近於0,反之,ay趨近於0,c趨近於極大。

(3)梯度計算

∂c/∂w=(a−1)∗x

∂c/∂b=a−1

當aj**不好時,誤差會很大,收斂會變快。

(一)、sigmoid

在啟用函式使用sigmoid的前提之下,相比於quadratic cost function, cross entropy cost function具有收斂速度快和更容易獲得全域性最優(至於為什麼更容易獲得全域性最優,個人感覺有點類似於動量的物理意義,增加收斂的步長,加快收斂的速度,更容易跳過區域性最優)的特點。

因為我們一般使用隨機值來初始化權重,這就可能導致一部分期望值和**值相差甚遠。所以選擇sigmoid作為啟用函式的時候,推薦使用cross entropy。如果啟用函式不是sigmoid,quadratic cost function就不會存在收斂速度慢的問題。

(二)、softmax

對於分類問題,如果希望輸出是類別的概率,那麼啟用函式選擇使用softmax,同時使用log-likelihood作為損失函式。

loss *****

神經網路之損失函式

1.兩種損失函式對比 目前在神經網路的訓練學習過程中,最常用的有兩種損失函式 均方誤差和交叉熵。yi為真實標籤,yi尖為 標籤,二者定義如下 均方誤差 分別計算二者梯度 均方誤差 交叉熵 由上面推到可以看出,均方誤差的梯度還和啟用函式的梯度有關,啟用函式梯度越大,均方誤差收斂速度越快但當sigmod...

神經網路損失函式

2018,aug 3 顧名思義,從標題就能知道損失函式 loss function 一定就是來計算神經網路在訓練中的損失的。說完了定義那到了舉例時間了 主要拿softmax loss來分析 這裡的k也就是我們分類的類別。然後這個函式是怎麼用的呢,我們可以簡單的舉乙個分類的例子來看下。假設我們輸入一張...

神經網路 損失函式

開始之前我們先進入數字識別這樣乙個場景 以識別數字1為例,神經網路模型的輸出結果越接近 0,1,0,0,0,0,0,0,0,0 越好。神經網路解決多分類的問題,最常見的方法是設定n個輸出節點,其中n類別個數,那麼上述數字判斷就應該有n 10個輸出。那麼如何判斷乙個輸出向量和期望向量的接近程度呢?交叉...