交叉熵誤差函式

2022-07-23 04:30:20 字數 834 閱讀 5522

概率分布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...