概率分布p和q的交叉熵定義為:
\[ (p,q)=\operatorname _[-\log(q)]=\mathrm (p)+d_}(p\parallel q)}
\]可以看到,交叉熵可以拆解為兩部分的和,也就是p的熵加上p與q之間的kl距離,對於乙個已知的分布p,它的熵:
\[ \]
是乙個已知的常數,所以在這種情況下,使用交叉熵等價於使用kl距離,而且由於交叉熵的計算更簡潔,所以在機器學習中,通常使用交叉熵作為分類問題的誤差函式。
假設乙個三分類問題,通過前向計算,最終會將輸入對映到乙個3維的向量上,假設得到的是:
\[\begin 1 \\ 200 \\ 3\\ \end
\]\[\begin 0 \\ 1 \\0 \end
\]那麼如何度量這種損失呢,需要使用交叉熵,但是交叉熵使用的條件是,p與q都是概率分布,現在只有p,也就是target是概率分布的形式,為了讓q也變成概率分布的形式,使用softmax將其歸一化,得到概率分布,然後再計算;
\[\sigma (\mathbf )_=}}^e^}}}
\]歸一化之後的q如下:
\[\begin 3.7e ^ \\ 1 \\ 2.7e^\\ \end
\]根據交叉熵計算公式得到:0
交叉熵的結果總是大於等於0的,越接近0,說明兩個概率分布之間越接近,所以這裡可以認為是分類正確。
在pytorch中,不需要手動進行這種計算,也不需要手動對標籤進行onehot編碼,crossentropyloss會自動進行這些操作,forward函式接收連個引數:input和target,input函式要滿足 [b * c],target函式要是[b],也就是只要給出標籤的序號即可。
均方誤差和交叉熵誤差
均方誤差個交叉熵誤差都是常用的損失函式之一。損失函式是用來表示神經網路效能的 惡劣程度 的指標。即當前神經網路對監督資料在多大程度上不擬合,在多大 程度上不一致。說白了,即所建立的神經網路對輸入資料的 輸出值與監督資料 實際輸出值 的差距。上面是計算公式,其中yk表示神經網路的 輸出值,tk表示監督...
深度學習入門 損失函式 交叉熵誤差
交叉熵誤差 cross entropy error 07 設定乙個微小值,避免對數的引數為0導致無窮大 1 10的負7次方 return np.sum t np.log y delta 注意這個log對應的是ln t 0,0,1,0,0,0,0,0,0,0 設定 2 為正確解標籤 y 0.1,0.0...
mini batch 版交叉熵誤差的實現
4.2.4 mini batch 版交叉熵誤差的實現 one hot格式的監督資料 def cross entropy error y,t if y.ndim 1 一維陣列要把第一維放到第二維,表示只有一條資料 t t.reshape 1,t.size reshape函式代兩維的引數 y y.res...