paddle硬標籤交叉熵演算法和軟標籤交叉熵演算法

2021-10-04 17:29:24 字數 2711 閱讀 2257

最近在使用paddle深度學習框架進行專案實戰,拿來練手的專案是手寫數字集識別,所用到的損失值計算方式是交叉熵計算。但是,通過查閱paddle官網的交叉熵實現方法的api文件,發現有兩種交叉熵演算法,一種是硬標籤交叉熵演算法,另一種是軟標籤交叉熵演算法。由於我在網上搜尋相關問題,沒有對應的解答,所以,我在這裡將和大家討論一下這兩個交叉熵演算法。

結語官方api解釋

該op計算輸入input和標籤label間的交叉熵,可用於計算硬標籤或軟標籤的交叉熵。

硬標籤交叉熵演算法:若soft_label = false, label[i1,i2,…,ik]label[i1,i2,…,ik] 表示每個樣本的硬標籤值:

o ut

put[

i1,i

2,..

.,ik

]=−l

og(i

nput

[i1,

i2,.

..,i

k,j]

),la

bel[

i1,i

2,..

.,ik

]=j,

j!=i

gnor

eind

ex

output[i1,i2,...,ik]=−log(input[i1,i2,...,ik,j]),label[i1,i2,...,ik]=j,j!=ignore_index

output

[i1,

i2,.

..,i

k]=−

log(

inpu

t[i1

,i2,

...,

ik,j

]),l

abel

[i1,

i2,.

..,i

k]=j

,j!=

igno

rei​

ndex

軟標籤交叉熵演算法:若soft_label = true,

l ab

el[i

1,i2

,...

,ik,

j]la

bel[

i1,i

2,..

.,ik

,j

]label[i1,i2,...,ik,j]label[i1,i2,...,ik,j]

label[

i1,i

2,..

.,ik

,j]l

abel

[i1,

i2,.

..,i

k,j]

表明每個樣本對應類別j的軟標籤值:

o ut

put[

i1,i

2,..

.,ik

]=−∑

jlab

el[i

1,i2

,...

,ik,

j]∗l

og(i

nput

[i1,

i2,.

..,i

k,j]

)output[i1,i2,...,ik]=−∑jlabel[i1,i2,...,ik,j]∗log(input[i1,i2,...,ik,j])

output

[i1,

i2,.

..,i

k]=−

∑jla

bel[

i1,i

2,..

.,ik

,j]∗

log(

inpu

t[i1

,i2,

...,

ik,j

])返回: 表示交叉熵結果的tensor,資料型別與input相同。若soft_label=false,則返回值維度與label維度相同;若soft_label=true,則返回值維度為 [n1,n2,…,nk,1][n1,n2,…,nk,1] 。

下面拿乙個例子來解釋一下我的想法:

共同前提:

我們還是以手寫陣列集來說,一共有10種不同的資料集,數字範圍在0-9.

單個資料的大小是28*28,單通道。每個資料對應乙個標籤值

使用卷積神經網路,最後一層全連線層得大小為10,並且啟用函式是softmax。

硬標籤交叉熵

單個的標籤大小是1,值對應得就是數字幾。

假設我們每一批次有1張,交叉熵函式的輸入值input大小為(1,10),label標籤值得大小為(1,1).

輸出值得大小為(10,1)

具體計算:l = -log(input[label]),

軟標籤交叉熵演算法

軟標籤它和上面稍微不太一樣,得輸入大小還是(1,10),但是label標籤值的大小也是(1,10).

也許到這,大家有點迷糊,為什麼這裡標籤值的大小也是10呢?

我的理解是,軟標籤,它只是乙個權重比。舉個例子 這個數字是5,然後它的label值為[0.02,0.03,0.05,0.2,0.7,0.03,0.03,0.010.01,0.02] 就是說這個標籤不是乙個準確的數字,而是乙個概率值。

計算方式:先讓input中的數進行log計算,然後與label進行向量點積操作。也就是對應位置相乘再相加。

至於哪個演算法更加好一些,我沒有具體實驗,但是我覺得軟標籤比較好。原因是它沒有將其他概率低的值捨去,而是全部使用參與計算。

目前的想法是這樣的,如後面在實踐中有所發現,會及時更新。也希望有了解這方面的大佬一起交流。

資訊熵,交叉熵和相對熵

怎樣去量化資訊?一些大牛對某些問題的見解,我們會說乾貨滿滿,就代表這個見解具有很大的資訊。對於一些不太確定的事,比如一場足球比賽的結果,會有勝平負三種情況,有不確定的情況,但如果某人有直接的內幕訊息,說這場主隊穩輸,因為 這樣的乙個資訊就具有很大的資訊量了,因為不確定的事情變得十分確定。如果有人告訴...

softmax和交叉熵

softmax用於多分類過程中,往往加在神經網路的他將多個神經元的輸出,對映到 0,1 區間內,看成概率來解,這些值的累和為1,在選取輸出節點的時候選取概率最大的節點作為我們的 目標,從而進行多分類。softmax 相關求導 當對分類的loss進行改進時,我們通過梯度下降,每次優化乙個step大小的...

熵和編碼長度以及交叉熵

源自知乎的乙個答案 資訊理論中,熵代表著根據資訊的概率分布對資訊編碼所需要的最短平均編碼長度。舉個簡單的例子來理解一下這件事情 假設有個考試作弊團夥,需要連續不斷地向外傳遞4選1單選題的答案。直接傳遞abcd的ascii碼的話,每個答案需要8個bit的二進位制編碼,從傳輸的角度,這顯然有些浪費。資訊...