Tensorflow學習教程------代價函數


二次代價函數(quadratic cost):

 


其中,C表示代價函數,x表示樣本,y表示實際值,a表示輸出值,n表示樣本的總數。為簡單起見,使用一個樣本為例進行說明,此時二次代價函數為:

 


假如我們使用梯度下降法(Gradient descent)來調整權值參數的大小,權值w和偏置b的梯度推導如下:

 


其中,z表示神經元的輸入,σ表示激活函數。w和b的梯度跟激活函數的梯度成正比,激活函數的梯度越大,w和b的大小調整得越快,訓練收斂得就越快。假設我們的激活函數是sigmoid函數:

 


假設我們目標是收斂到1.0。1點為0.82離目標比較遠,梯度比較大,權值調整比較大。2點為0.98離目標比較近,梯度比較小,權值調整比較小。調整方案合理。
假如我們目標是收斂到0。1點為0.82目標比較近,梯度比較大,權值調整比較大。2點為0.98離目標比較遠,梯度比較小,權值調整比較小。調整方案不合理。

交叉熵代價函數(cross-entropy):
換一個思路,我們不改變激活函數,而是改變代價函數,改用交叉熵代價函數:

其中,C表示代價函數,x表示樣本,y表示實際值,a表示輸出值,n表示樣本的總數。

權值和偏置值的調整與無關,另外,梯度公式中的表示輸出值與實際值的誤差。所以當誤差越大時,梯度就越大,參數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搭配使用的交叉熵。





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM