作者:
JayLou婁傑
,本文首發於我的公眾號《
高能AI
》,大家一定要關注哦~
文字分類的一個大型“真香現場”來了:昨天JayJay的推文《
超強文字半監督MixText
》中告訴大家不要浪費沒有標註過的資料,但還是需要標註資料的!但今天介紹的paper,文字分類居然不需要任何標註資料啦!哇,真香!
當前的文字分類任務需要利用眾多標註資料,標註成本是昂貴的。而半監督文字分類雖然減少了對標註資料的依賴,但還是需要領域專家手動進行標註,特別是在類別數目很大的情況下。
試想一下,我們人類是如何對新聞文字進行分類的?其實,我們不要任何標註樣本,只需要利用和分類類別相關的少數單詞就可以啦,這些單詞也就是我們常說的關鍵詞。
BUT!我們之前獲取分類關鍵詞的方式,大多還是需要人工標註資料、或者人工積累關鍵詞的;而就算積累了某些關鍵詞,關鍵詞在不同上下文中也會代表不同類別。
那麼,有沒有一種方式,可以
讓文字分類不再需要任何標註資料呢
?
本文JayJay就介紹一篇來自「伊利諾伊大學香檳分校韓家煒老師課題組」的EMNLP20論文《
Text Classification Using Label Names Only: A Language Model Self-Training Approach
》。
這篇論文的最大亮點就是:
不需要任何標註資料,只需利用標籤名稱就在四個分類資料上獲得了近90%的準確率!
為此,論文提出一種
LOTClass
模型,即
L
abel-name-
O
nly
T
ext
Class
ification,
LOTClass
模型的主要亮點有:
不需要任何標註資料,只需要標籤名稱!
只依賴預訓練語言模型(
LM
),不需要其他依賴!
提出了
類別指示詞彙獲取方法
和
基於上下文的單詞類別預測任務
,經過如此訓練的LM進一步對未標註語料進行自訓練後,可以很好泛化!
在四個分類資料集上,
LOTClass明顯優於各弱監督模型
,並具有與強半監督和監督模型相當的效能。
論文下載:
https://
arxiv。org/pdf/2010。0724
5。pdf
程式碼開源:
https://
github。com/yumeng5/LOTC
lass
本文的組織結構為:
LOTClass總體流程
LOTClass
將BERT作為其backbone模型,其總體實施流程分為以下三個步驟:
標籤名稱替換
:利用並理解標籤名稱,透過MLM生成類別詞彙;
類別預測
:透過MLM獲取類別指示詞彙集合,並構建基於上下文的單詞類別預測任務,訓練LM模型;
自訓練
:基於上述LM模型,進一步對未標註語料進行自訓練後,以更好泛化!
下面我們就詳細介紹上述過程。
第一步:標籤名稱替換
在做文字分類的時候,我們可以根據
標籤名稱
聯想到與之相關聯的其他關鍵詞,這些關鍵詞代表系統類別。當然,這就需要我們從一個蘊含常識的模型去理解每個標籤的語義。很明顯,BERT等預訓練模型就是一個首選!
論文采取的方法很直接:對於含標籤名稱的文字,透過MLM來預測其可以替換的其他詞彙。
如上圖,展示了AG新聞語料中,體育新聞在不同的上下文中,標籤名稱“sports”透過MLM預測出的可以替換「sports」的詞彙。
具體地,每一個
標籤名稱位置
透過MLM預測TOP50最相似的替換詞,然後對於每一個類別的
標籤名稱
(Label Name)根據詞頻大小、結合停用詞共選取TOP-100,最終構建
型別詞彙表
(Category Vocabulary)。
透過上述方式找出了AG新聞語料每一個
類別-標籤名稱
對應的
類別詞彙表
,如上圖所示。
第二步:類別預測
像人類如何進行分類一樣,一種直接的方法是:利用上述得到的
型別詞彙表
,然後統計語料中類別詞彙出現的次數。但這種方式存在2個缺陷:
不同詞彙在不同的上下文中代表不同意思,不是所有在語料中出現的
型別詞彙
都指示該型別。在第一幅圖中,我們就可以清晰發現:單詞「sports」在第2個句子並不代表體育主題。
型別詞彙表
的覆蓋範圍有限:在特定上下文中,某些詞彙與類別關鍵字具有相似的含義,但不包含在類別詞彙表中。
為了解決上述缺陷,論文構建了一個新的
MCP任務
——
基於遮蔽的類別預測任務
(Masked Category Prediction,
MCP
),如下圖所示:
MCP任務共分為兩步:
獲取類別指示詞
:上述已經提到,
類別詞彙表中
不同的詞彙在不同上下文會指代不同類別。論文建立了一種查詢詞彙指示類別的方法(如上圖左邊所示):對於當前詞彙,首先透過BERT的MLM任務預測當前詞彙可替代的TOP50相似詞,然後TOP50相似詞與每個
類別詞彙表
進行比對,如果有超過20個詞在當前
類別詞彙表
中,則選取
當前詞彙
作為該類別下的「
類別指示詞
」。
進行遮蔽類別預測
:透過上一步,遍歷語料中的每一個詞彙,我們就可得到
類別指示詞
集合和詞彙所對應的標籤。對於
類別指示詞
集合中每一個單詞,我們將其替換為「MASK」然後對當前位置進行標籤分類訓練。
值得注意的是:MASK類別指示詞進行類別預測至關重要,因為這會迫使模型根據單詞上下文來推斷類別,而不是簡單地記住無上下文的類別關鍵字。透過MCP任務,BERT將更好編碼類別判斷資訊。
第三步:自訓練
論文將透過MCP任務訓練好的BERT模型,又對未標註語料進行了自訓練。這樣做的原因為:
仍有大規模語料未被MCP任務利用,畢竟不是每一個語料樣本含有類別指示詞。
MCP任務進行類別預測不是在「CLS」位置,「CLS」位置更利於編碼全域性資訊並進行分類任務。
論文采取的自訓練方式很簡單,如上圖所示,每50個batch透過軟標籤方式更新一次標籤類別。
LOTClass表現如何?
為了驗證LOTClass的效果,論文在4個分類資料集上與監督、半監督和弱監督進行了對比。
對於弱監督方法,則將整個訓練集作為無標註資料;對於半監督方法,每個類別選舉10個樣本作為標註資料;對於監督方法,則全部訓練集就是標註資料。
如上圖所示,
沒有自訓練的LOTClass方法就超過了一眾弱監督方法
,而利用自訓練方法後LOTClass甚至在AG-News上可以與半監督學習的SOTA——谷歌提出的UDA相媲美了,與有監督的char-CNN方法也相差不多啦!自訓練self-trainng為何如此強大?我們將在接下來的推文中會進一步介紹。
也許你還會問:
LOTClass相當於使用多少標註資料呢
?
如上圖,論文給出了答案,那就是:
LOTClass效果相當於 每個類別使用48個標註文件的有監督BERT模型
。
總結與展望:利用標籤名稱,真香!
首先對本文總結一下:本文提出的LOTClass模型僅僅利用標籤名稱,無需任務標註資料!在四個分類資料上獲得了近90%的準確率,與相關半監督、有監督方法相媲美!LOTClass模型總體實施流程分三個步驟:
標籤名稱替換
,
MASK類別預測
,
自訓練
。
本文提出的LOTClass模型只是基於BERT,並沒有採取更NB的LM模型,每個類別最多使用3個單詞作為標籤名稱,沒有依賴其他工具(如回譯方式)。我們可以預測:隨著LM模型的升級,資料增強技術的使用,指標效能會更好!
利用標籤名稱,我們是不是還可以暢想一些“真香現場”呢?例如:
應用於NER任務
:發現實體類別下的更多指示詞,如「PERSON」類別;嗯嗯,再好好想象怎麼把那套MCP任務嵌入到NER任務中吧。
與半監督學習更好協作
:1)沒有標註資料時,可以透過LOTClass構建初始標註資料再進行半監督流程;2)將MCP任務設為半監督任務的輔助任務。
JayJay不說再見,歡迎關注我的公眾號《
高能AI
》,那裡是首發哦~(圖片不全,可直接到微信搜一搜高能AI)