1.損失函數---------經典損失函數--------交叉熵:交叉熵刻畫了兩個概率分布之間的距離,它是分類問題中使用比較廣的一種損失函數。通過q來表示p的交叉熵為:
Softmax將神經網絡前向傳播得到的結果變成概率分布,原始神經網絡的輸出被用作置信度來生成新的輸出,而新的輸出滿足概率分布的所有要求。
交叉熵函數不是對稱的,H(p,q)!=H(q,p),他刻畫的是通過概率分布q來表達概率分布p的困難程度。因為正確答案是希望得到的結果,所以當交叉熵作為神經網絡的損失函數是,p代表的是正確答案,q代表的是預測值。交叉熵刻畫的是兩個概率分布的距離,也就是說交叉熵值越小,兩個概率分布越接近。
tensorflow實現交叉熵代碼:
其中y_代表正確結果,y代表預測結果。tf.clip_by_value()函數的意思是,小於1e-10的數全換成1e-10,大於1的數全換成1。tensorflow中*的意思是對應相同位置的數項乘,不是矩陣的乘法。
因為交叉熵一般會與softmax回歸一起使用,所以tensorflow對這兩個功能進行了統一封裝:
通過這個命令就可以得到使用了Softmax回歸之后的交叉熵。
在只有一個正確答案的分類問題中,tensorflow提供了tf.nn.sparse_softmax_cross_entropy_with_logits函數來進一步加速計算過程。
2.損失函數---------經典損失函數--------均方誤差(MSE,mean squared error):
其中yi為一個batch中第i個數據的正確答案,而yi‘為神經網絡給出的預測值。tensorflow實現代碼:
3.損失函數---------自定義函數-----
tf.greater(A,B) 返回A>B的結果,布爾值
tf.select(C,A,B) C為真時(True),返回A值,為假(False)時返回B值。
這兩個函數都是在元素級別進行