經典的損失函式有四種,也可以自己定義損失函式
有幾種不同的代價函式,不同的代價函式適用於不同的場景
有二次代價函式,交叉熵代價函式(適用於s型曲線,選擇合適的代價函式,可節省訓練時間),對數似然代價函式
# loss = tf.reduce_mean(tf.square(y - prediction))
計算公式如下:
其中yi為乙個batch中第i個資料的正確答案,而y′為神經網路給出的**值。
tensorflow中實現均方誤差損失函式:
mse = tf.reduce_mean(tf.square(y_ - y)),
其中輸入為矩陣,輸出為乙個數
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=prediction))
交叉熵,最早使用在通道傳輸之中,用來描述兩個概率分布之間的距離,定義如下h(p,q)=−∑p(x)logq(x)
將神經網路前向傳播結果變為概率分布,繼而變為交叉熵,可以使用softmax函式將結果變為概率分布,
在tensorflow中的實現,已經通過函式進行了這兩步的封裝,其封裝函式如下:cross_entropy = tf.nn.softmax_cross_entropy_with_logits(y, y_)
tf.nn.sparse_softmax_cross_entropy_with_logits()
tf.nn.softmax_cross_entropy_with_logits(_sentinel=none, labels=none, logits=none, dim=-1, name=none)
args:
_sentinel: used to prevent positional parameters. internal, do not use.
labels: each row labels[i] must be a valid probability distribution.
logits: unscaled log probabilities.
dim: the class dimension. defaulted to -1 which is the last dimension.
name: a name for the operation (optional).
此函式至少有兩個輸入:labels, logits.
labels:為神經網路期望的輸出
logits:為神經網路最後一層的輸出
使用注意:
警告:這個函式內部自動計算softmax,然後再計算交叉熵代價函式,也就是說logits必須是沒有經過tf.nn.softmax函式處理的資料,
否則導致訓練結果有問題。建議程式設計序時使用這個函式,而不必自己編寫交叉熵代價函式。′y′
′y′
tf 損失函式 TensorFlow裡面損失函式
2 交叉熵 交叉熵 crossentropy 也是loss演算法的一種,一般用在分類問題上,表達的意識為 輸入樣本屬於某一類的概率 其表示式如下,其中y代表真實值分類 0或1 a代表 值。在tensorflow中常見的交叉熵函式有 sigmoid交叉熵 softmax交叉熵 sparse交叉熵 加權...
機器學習(四) 損失函式
在上上一節邏輯回歸中,是使用似然函式來作為模型的求解引數的目標。但在很多情況下,似然函式很難直接寫出,更常用的方法是損失函式,這個在上上一節的補充中也有提過。那麼損失函式表示什麼概念呢?和似然函式相反,損失函式是模型 失敗的度量。注意最大化似然函式和最小化損失函式兩者並不能完全等同,因為這涉及到所選...
機器學習總結(四)損失函式的總結
在監督學習中,給定輸入x,可根據假設函式f x 輸出相應的y。這個f x 與y可能一致,也可能不一致。用損失函式來度量 錯誤的程度。通常希望的是損失函式的值越小越好。我們一般是通過優化損失函式,把損失函式的值最小時的引數作為 函式的引數值。常見的損失函式有 一 0 1損失函式 二 平方損失函式 常見...