在目標檢測和分類任務中,每一個類別都需要一個編碼來表示,同時,這個編碼會用來計算網絡的loss。比如有貓,狗,豬三種動物,這三種動物相互獨立,在分類中,將其中任意一種分類為其他都同等的錯誤。
在這種情況下,我們比如將貓為0,狗為1,豬為2。就會出現一個問題,三者之間兩兩距離不同。 這在參與損失計算的時候是完全不能接受的:互相獨立的標簽之間,竟然出現了不對等的情況。
因此,需要有一種表示方法,將互相獨立的標簽表示為互相獨立的數字,并且數字之間的距離也相等。
那么我們可以利用向量的正交性,也就是貓[1,0,0],狗[0,1,0],豬[0,0,1]。那么三者是相互獨立的。也就是正交的。
可以這么理解,比如某個物體的分類為70%為貓,20%為狗,10%為豬。那么就有輸出向量為[0.7,0.2,0.1],這個向量可以理解為在One-Hot編碼構成的向量空間中的一個具體值,那么在計算loss的時候,將該值和其groundtruth對應的向量進行比對。在訓練中,如果該物體真的為貓,那么其groundtruth就是[1,0,0],loss應該抑制后兩個概率而增加第一位的概率。
例如這里假設一種loss計算 L o s s = ( G r o u n d T r u t h ? 0.5 ) ? P r e d i c t Loss=(GroundTruth-0.5)\cdot Predict Loss=(GroundTruth?0.5)?Predict就能夠得到一個分數,這個分數的提升就代表著第一類的預測得分增大和后兩項的減小。
One-Hot的缺點
當分類數量很大的時候,由于要保證各個分類的正交性,會產生維度爆炸的問題。