[Coling2018]SGM: Sequence Geneatin Model for Multi-Label Classificatin
這篇文章是Coling2018年的best paper, 因為之前解決multi-label問題都是用分類的方法,本文提供了一種新思路,用生成的方式解決該問題。覺得還是挺新穎的,記錄一下。
一:任務介紹
Multi-label classification(MLC) is to assign multiple labels to each instance in the dataset
= (, , …, ) 為句子長度為m個詞的句子序列, = {, , … , } 是語料中出現過的所有標籤。針對句子有n個標籤,n個標籤的集合為 且有 。其實就是資料集中的每個例項都可以有多個標籤。舉個例子就是:一個電影,既可以是懸疑片也可以是犯罪片,標籤之間可以共存的,與 single-label classification的區別是,例項只能有一個標籤,標籤之間是互斥的
二:以往的multi-label的做法
多標籤學習演算法分為兩大類:
1)改造資料適應演算法
2)改造演算法適應資料
以改造資料為例的三種做法
(1)二分類用L個分類器,分別對應L個標籤,進行訓練。
多個獨立的二分類問題,比如一共有m個labels, 針對每個label 進行0/1判斷,如果是0,說明該label是instance的一個標籤,否則不是該例項的標籤。例子:一部電影的標籤集合Y = {懸疑片,喜劇片,犯罪片,科幻片} ,那對針對一部電影的標籤其實就是訓練4個二值分類器,缺點很明顯,無法利用標籤之間的關聯性
(2)標籤排序+二分類利用“成對比較”(pairwise comparison),獲得L(L-1)/2個分類器,然後利用投票,得到標籤的排序。接著,利用二分類,補充標籤排序的投票結果,提高準確性。
(3)隨機k標籤從L個標籤隨機取得k個標籤,重複n次,獲得n個分類器。這個過程有點類似隨機森林。然後利用多類分類器(multi-class,與multi-label是有區別的),訓練資料,最後通過投票,如果對於某一標籤,其實際獲得的投票數佔到最大可能的投票數一半以上,那麼就認為當前例項屬於該標籤。
三:本文做法:
- 本文考慮的兩點:(1) the correlations between labels,例子:一個電影如果是懸疑片,那麼是犯罪片的可能性很大,是喜劇片的可能性就會很小。之前的研究工作忽視了這種情況,本文解決此問題的方法是預測當前label時將上一個輸出的概率分佈作為當前的輸入。 (2) different parts of the text can contribute differently to predicting different labels,例子:w5w6w9, 紅色字型部分對預測該序列是的的貢獻很大,藍色字型對預測為的貢獻很大,針對這個問題,本文用了attention mechanism解決該問題。
本文的框架圖如下:
注意到公式 (7) 我覺得是不正確的,應該把改成正確的寫法如下:
-
本文中涉及到的處理細節:
(1)本文是將多分類任務作為一個序列生成問題,生成的序列既是樣本的類別,如果生成的序列長度為3,則該樣本的類別個數就是3。
(2)在標籤序列的前後端分別新增兩個特殊的字元 " bos " 和" eos ", 例如訓練集中一個樣本的類別標籤是, 新增前後標籤後的序列是boseos, 其中已經排過序。
(3)training data中label sequence的處理
例子:對一本小說的描述文字,類別是:懸疑,犯罪,科幻,會生成以下幾個序列,到底應該選擇哪個正確作為gold sequence呢。
bos懸疑喜劇科幻eos
bos喜劇科幻懸疑eos
bos科幻喜劇懸疑eos
bos科幻懸疑喜劇eos
bos懸疑科幻喜劇eos
對樣本的類別標籤進行排序,按照類別標籤在訓練集中出現的頻率排序,出現次數比較多的標籤排在前面 -
然後本文還提到一個概念:exposure bias, 我查了資料後解釋如下:
sequence-to-sequence框架的目標序列中,當前時刻t的輸入時上一時刻t-1的輸出,如果t-1時刻生成的label是錯誤的,那麼後續生成的輸出也是錯誤的,或者是不可信的。由於某一時刻的輸出錯誤導致的偏差,隨著序列長度增加,偏差會越來越大。另外本文提到如果exposure bias出現在所有的預測路徑中,那麼beam search不能根本性的解決exposure bias問題。本文給出了一個解決方案解決此問題:那就是y 是(t-1)時刻softmax之後k個label的概率分佈, 將此分佈經過轉換後作為t時刻的一個輸入,而不是將(t-1)時刻中概率最大的那個label作為t時刻的輸入。 -
global embedding
-
encode and decode