#均方差代價函數 + sigmoid
C=2(y−a)2
其中,z=wx+b,
而a是經歷了激活函數的z,a=σ(z)。
那麼這個的梯度,對w和b分別求導,得到:
∂w∂C=(a−y)σ′(z)x=aσ′(z)
∂b∂C=(a−y)σ′(z)=aσ′(z)
也就是說梯度的大小和激活函數的倒數有着直接的正相關關係。假設我們選擇sigmoid函數
可以很明顯的看出,在z = 0的時候導數最大,越往兩邊越小。也就代表神經網絡輸出結果離真實值越遠學習速率越慢。這種差距越大速率越慢的結果對我們訓練很不利,所以我們需要尋求一種新的方法來解決。
交叉熵代價函數+sigmoid
我們提出交叉熵的方法,來配合sigmoid可以完美的解決這個問題。
首先,交叉熵的公式是
C=−n1x∑[ylna+(1−y)ln(1−a)]
求導可以得到
C=−n1x∑σ(z)(1−σ(z))σ′(z)xj(σ(z)−y)
由於sigmoid函數是σ(z)=1/(1+e−z),所以實際上可以推導出σ′(z)=σ(z)(1−σ(z)) (別問我這是怎麼發現的,神奇的數學家發現的,我驗證過了的),所以可以消除很多項了,也就是
∂wj∂C=n1x∑xj(σ(z)−y)
這樣一來速率就只和(σ(z)−y)成正相關了,所以差距越大,速度也就可以越快了。
參考資料:
神經網絡與深度學習–交叉熵代價函數