最近遇到給個標籤問題,就是給一個 object 打個多個標籤,網上查了很多資料。發現百度沒搜索出什麼,後來是到知網上找到一些靠譜的資料,然後在 Google 一下。現在總結下多標籤問題。
多標籤方法大致可以分為兩類,分別是問題轉換和算法改造。
先描述下問題:
先介紹問題轉換方法.
問題轉換方法
第一個大類是基於標記轉換方法。
第一個是 Binary Relevance (BR)。
根據標籤我們將數據重新組成正負樣本,針對每個類別標籤,我們分別訓練基分類器,整體複雜度 q × O(C) ,其中 O(C) 為基礎分類算法的複雜度,因此, BR 算法針對標記數量 q 比較小的情況下適用。但是在很場景中,標記是有樹狀的層次的關聯的。對於這種情況, BR 就沒有考慮到這些標記之間的關聯性。
第二個是 Classier Chain(CC)。
針對 BR 中標籤關聯性的問題,CC 中它將這些基分類器 Cj , j = 1 … q 串聯起來形成一條鏈,前一個基分類器的輸出作為下一個基分類器的輸入。
第二大類是基於樣本實例轉換方法
第一個是創新新的標記 (Label-Powerset)。
這樣做的代價是標記的數量就會增加,並且一些標記只有很少的實例,但是 LP 的 優點是考慮到了標記之間的關聯性。
第二個是分解多標記
上面圖中的意思是我們可以將訓練數據多次使用,叫做cross-training,即我們將上圖中 E1 既當做訓練 y2 類別是正樣本,也當做訓練 y3 樣本時候的正樣本,感覺跟 Binary Relevance (BR) 算法是一個意思。
算法改造方法
算法改造算法針對特殊的算法改造而來, 主要介紹兩個,可以具體參考 #adapted-algorithms 。
神經網絡
此處介紹下論文 Multi-Label Neural Networks with Applications to
Functional Genomics and Text Categorization,一種神經網絡算法。
其實就是簡單的深度網絡:
但是需要注意的是我們的 loss 函數的選取,假設我們選擇
那相當於只是考慮了單個標籤值,0 or 1,沒有考慮不同標籤之間相關性,所以我們將 loss 改為如下:
上面 k 是有標籤的下標,而 l 是沒有標籤的下標,我們考量了有標籤的值其意義大於沒有標籤的值。
最後我們在介紹一篇新出的神經網絡的模型,論文 Learning Deep Latent Spaces for Multi-Label Classication
其模型如下:
其中 Fx,Fe,Fd 分別是 3 個 dnn,分別代表 特徵提取,標籤 encode,隱向量 decode,而 loss 函數有兩部分組成:
其中 embedding loss 為:
output loss 為:
可以看到這個跟 Multi-Label Neural Networks with Applications to
Functional Genomics and Text Categorization 中的 loss 函數是一樣的。
如果對這篇論文還有不理解的,非常幸運的是網上有論文的實現,見 C2AE-Multilabel-Classification.
總結
本文對多標籤問題簡單做了個介紹,想起現在圖片分類,視頻內容識別等場景好多都是多標籤問題,有時間再繼續深入了解的。
你的鼓勵是我繼續寫下去的動力,期待我們共同進步。
參考
多標記分類方法比較 徐兆桂
Learning Deep Latent Spaces for Multi-Label Classication
Multi-label machine learning and its application to semantic scene classicatio