二次代價函數
$C = \frac{1} {2n} \sum_{x_1,...x_n} \|y(x)-a^L(x) \|^2$
其中,C表示代價函數,x表示樣本,y表示實際值,a表示輸出值,n表示樣本的總數;整個的意思就是把n個y-a的平方累加起來,再除以2n求一下均值。
為簡單起見,先看下 一個樣本 的情況,此時二次代價函數為:$C = \frac{(y-a)^2} {2}$
$a=\sigma(z), z=\sum w_j*x_j +b$ ,其中a就代表激活函數的輸出值,這個符號$\sigma$代表sigmoid函數將變量映射到0-1的$S$型光滑的曲線,z是上一層神經元信號的總和
假如我們使用梯度下降法(Gradient descent)來調整權值參數的大小,權值w和權值b的梯度推到如下(求導數):
$\frac {\partial C} {\partial w} = (a-y)\sigma' (z)x$ $\frac {\partial C} {\partial b} = (a-y)\sigma' (z)$
其中,z表示神經元的輸入,$\sigma$表示激活函數sigmoid。可以看出,w和b的梯度跟激活函數的梯度成正比,激活函數的梯度越大,w和b的大小調整越快,訓練收斂的就越快。
假設我們激活函數輸出的值目標是收斂到1,A點離目標較遠,梯度較大,權值調整比較大。B點為0.98離目標比較近,梯度比較小,權值調整比較小,調整方案合理。
假設我們激活函數輸出的值目標是收斂到0,A點離目標較遠,梯度較大,權值調整比較大。B點為0.98離目標比較遠,梯度比較小,權值調整比較小,調整方案不合理,B點要經過非常長的時間才會收斂到0,而且B點很可能成為不收斂的點。
交叉墒代價函數(cross-entropy)
由於上邊的問題,我們換一種思路,我們不改變激活函數,而是改變代價函數,改用交叉墒代價函數:
$C = -\frac{1}{n} \sum_{x_1,,,x_n}, [y\ln a + (1-y) \ln(1-a)]$
其中,C表示代價函數,x表示樣本,y表示實際值,a表示輸出值,n表示樣本的總數。
$a=\sigma(z), z=\sum w_j*x_j +b $ $ \sigma'(z) = \sigma(z)(1-\sigma (x))$ sigmod函數的導數比較好求,這也是為什么大家用sigmoid做激活函數的原因,接下來我們看一下求導的過程
懶得敲了,直接貼個圖過來,之后閑了在敲一遍,上邊就是求導的推導過程,從最后的式子可以看出:權值w和偏執值b的調整與$\sigma '(z)$無關,另外,梯度公式中的$\sigma (z)-y$表示輸出值與實際值放入誤差。所以當誤差越大時,梯度就越大,參數w和b的調整就越快,訓練的速度也就越快。
總結:當輸出神經元是線性的,那么二次代價函數就是一種合適的選擇。如果輸出神經元是S型函數,那么比較適合交叉墒代價函數。
對數似然代價函數(log-likelihood cost)
對數似然函數常用來作為softmax回歸的代價函數,如果輸出層神經元是sigmoid函數,可以使用交叉墒代價函數。而深度學習中更普遍的做法是將softmax作為最后一層,此時常用的代價函數是對數似然代價函數。
對數似然代價函數與softmax的組合和交叉墒與sigmoid函數的組合非常相似。對數似然代價函數在二分類時可以化簡為交叉墒代價函數的形式。
在TensorFlow中用:
tf.nn.sigmoid_cross_entropy_with_logits()來表示跟sigmoid搭配使用的交叉墒。
tf.nn.softmax_cross_entropy_with_logits()來表示跟softmax搭配使用的交叉墒。
目錄:
- tensorflow簡介、目錄
- tensorflow中的圖(02-1)
- tensorflow變量的使用(02-2)
- tensorflow中的Fetch、Feed(02-3)
- tensorflow版helloworld---擬合線性函數的k和b(02-4)
- tensorflow非線性回歸(03-1)
- MNIST手寫數字分類simple版(03-2)
- 二次代價函數、交叉熵(cross-entropy)、對數似然代價函數(log-likelihood cost)(04-1)
- 多層網絡通過防止過擬合,增加模型的准確率(04-2)
- 修改優化器進一步提升准確率(04-3)
- 手寫數字識別-卷積神經網絡cnn(06-2)
- 循環神經網絡rnn與長短時記憶神經網絡簡述(07-2)
- 循環神經網絡lstm代碼實現(07-3)
- tensorflow模型保存和使用08
- 下載inception v3 google訓練好的模型並解壓08-3
- 使用inception v3做各種圖像分類識別08-4
- word2vec模型訓練簡單案例
- word2vec+textcnn文本分類簡述及代碼