2015-12-03 151 views
1

我不完全理解如何計算交叉熵誤差。由於某些負數的對數沒有定義(或假想),並且神經網絡的輸出可能是一些負數(權重和偏差隨機初始化),所以我經常得到NaN。我如何避免這種情況?交叉熵誤差計算

例子:

output[] = {-0.78, -0.98, 0.78, -0.68}; 
target[] = {-1.0, -1.0, 1.0, 1.0}; 
error = ln(0.78) * 1.0 + ln(-0.68) * 1.0; 

回答

1

如果你的任務是一個二元分類我建議你改變目標值「-1」到「0」。在最後一層,輸出層,你有兩個神經元(每個類一個)。對於神經網絡的輸出,您應該使用softmax function,它爲每個類別分配概率(意思是,您沒有負值)。最後,每個實例的輸出是對應於這兩個概率中較大者的類的標籤。

0

交叉熵的證明顯示兩個概率分佈之間的量化差異。在機器學習的情況下,它會計算您的「目標」(真實值)與模型「輸出」預測的值之間的差異。 概率可能僅在[0; 1]的範圍內變化,並且在任何情況下可能都不是負數。負數在概率方面沒有任何意義。