多標籤分類要用什麼損失函式?

時間 2021-06-01 13:28:01

1樓:readzw

多標籤分類輸出是乙個序列,標籤間存在共生。

一種方式是採用二分類交叉熵,既每個類別都是乙個二分類,輸出是乙個類別數量長度的01序列,tensorflow可用sigmoid cross entropy

一種方法是用seq2seq解碼,把輸出做成label的標籤序列,那每一時刻都解碼輸出都是乙個多類分類,用softmax cross entropy

2樓:溪亭日暮

在機器學習或者深度學習中,分類問題是乙個最常見的任務,分類問題一般又分為:二分類任務多分類任務多標籤分類任務

二分類任務:輸出只有0和1兩個類別;

多分類任務:一般指的是輸出只有乙個標籤,類別之間是互斥的關係;

多標籤分類任務:輸出的結果是多標籤,類別之間可能互斥也可能有依賴、包含等關係。

在面對不同的分類問題的時候,選擇的loss function也不一樣,二分類和多標籤分類通常使用sigmoid函式而多分類則一般使用softmax函式,可見下表。

\ 分類問題名稱 & 輸出層使用啟用函式 & 對應的損失函式\\

\ 二分類 & & \\

\ 多分類& & \\

\ 多標籤分類& & \\ \

\ \\

多標籤分類問題和一般的多分類問題不僅僅在損失函式的區別上,同時難度也要提公升一大層次,多標籤分類的難點主要體現在:

類標數量不確定,有些樣本可能只有乙個類標,有些樣本的類標可能高達幾十甚至上百個。

類標之間相互依賴,例如包含藍天類標的樣本很大概率上包含白雲,如何解決類標之間的依賴性問題也是一大難點。

多標籤的訓練集比較難以獲取,並且標註的工作量也更大。

輸出空間複雜度高,例如10個類別的單標籤分類,輸出空間為10,但是10個類別的多標籤分類輸出空間為 ,指數級別的複雜度導致多標籤的難度大大提公升。

在實際的操作中,如果我們使用PyTorch做多標籤分類的任務,可以如下:

import

torchm=

torch.nn

.Sigmoid

()# 啟用函式

loss

=torch.nn

.BCELoss

()# loss函式

input

=torch

.autograd

.Variable

(torch

.randn(3

),requires_grad

=True

)target

=torch

.autograd

.Variable

(torch

.FloatTensor(3

).random_(2

))output

=loss(m

(input

),target

)output

.backward

()Keras的通常寫法如下:

import

keras

model

=Sequential

()model

.add

(Conv2D

(input_shape=(

1,300,

300),

padding

='same'

,filters=64

,kernel_size=(

300,

5)))

model

.add

(Activation

('relu'

))model

.add

(MaxPooling2D

(pool_size=(

1,2),

padding

='same'

))model

.add

(Flatten

())model

.add

(Dense

(1024

))model

.add

(Activation

('relu'

))model

.add

(Dense

(478

))model

.add

(Activation

('sigmoid'

))model

.compile

(optimizer

=Adam(lr

=1e-4

),loss

='binary_crossentropy'

,metrics=[

'precision'

,'accuracy'

])model

.fit

()溪亭日暮:彙編 | 我的AI 技術回答

3樓:王華

如圖損失函式和啟用函式選擇:

至於評價指標也得自己定義,看你需求了,如果是想要百分百多標籤對應,那就用正確率,如果是比如三個標籤對兩個標籤也要看,比如漢明損失。

第二個問題就不用問了吧,自己編寫個概率卡閾值是0還是1的函式就行了。

多標籤分類該選BCEWithLogitsLoss還是MultiLabelSoftMarginLoss?

天一神水 1 BCEloss是可以處理多標籤的,官方文件BCEWithLogitsLoss中描述說 In the case of multi label classification the loss can be described as 2 按照PyTorch中文件的定義來說,兩個函式是一致的,...

神經網路多標籤分類?

1.神經網路的輸入 隨機生成的資料。每次生成的資料量需要是一樣的,假設每個樣本有K個資料。2.神經網路的輸出 從幾十根天線裡選擇的幾根天線。假設總共有m根天線,某乙個樣本是要選擇其中的1,3,7根天線的話,我們就可以用乙個m個元素的向量來表示,其中第1,3,7個元素的值是1,其他的元素值都是0.3....

softmax如何作用與多標籤分類?

Jinghao Zhou 話說最近有很多任務作比如circle loss DR loss顯式或隱式地從metric learning做ranking的角度來推廣softmax函式,這種理解最早在N pair loss lifted structued loss出現為 其中第三個連等參考運用了對 和 ...