機器學習-代價函數和激活函數組合效果

#均方差代價函數 + sigmoid
C=(ya)22C=\frac {(y−a)^2} 2
其中,z=wx+b,
而a是經歷了激活函數的z,a=σ(z)。
那麼這個的梯度,對w和b分別求導,得到:
Cw=(ay)σ(z)x=aσ(z)\frac{∂C} {∂w} =(a−y)σ′(z)x=aσ′(z)
Cb=(ay)σ(z)=aσ(z)\frac{∂C} {∂b} =(a−y)σ′(z)=aσ′(z)
也就是說梯度的大小和激活函數的倒數有着直接的正相關關係。假設我們選擇sigmoid函數
這裏寫圖片描述

可以很明顯的看出,在z = 0的時候導數最大,越往兩邊越小。也就代表神經網絡輸出結果離真實值越遠學習速率越慢。這種差距越大速率越慢的結果對我們訓練很不利,所以我們需要尋求一種新的方法來解決。

交叉熵代價函數+sigmoid

我們提出交叉熵的方法,來配合sigmoid可以完美的解決這個問題。
首先,交叉熵的公式是
C=1nx[ylna+(1y)ln(1a)] C = -\frac 1 n \sum_{x} [ylna +(1-y)ln(1-a)]

求導可以得到
C=1nxσ(z)xjσ(z)(1σ(z))(σ(z)y) C = -\frac 1 n \sum_{x} \frac {σ′(z)x_j} {σ(z)(1−σ(z))}(σ(z)−y)

由於sigmoid函數是σ(z)=1/(1+e−z),所以實際上可以推導出σ′(z)=σ(z)(1−σ(z)) (別問我這是怎麼發現的,神奇的數學家發現的,我驗證過了的),所以可以消除很多項了,也就是
Cwj=1nxxj(σ(z)y) \frac {∂C} {∂w_j}=\frac 1 n \sum_ {x} x_j(σ(z)−y)
這樣一來速率就只和(σ(z)−y)成正相關了,所以差距越大,速度也就可以越快了。

參考資料:
神經網絡與深度學習–交叉熵代價函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章