更好的閱讀體驗請?zhí)D(zhuǎn)至模型增強(2) 從label下手
上篇Knowledge Distillation (2): distilling knowledge of bert中我們提到,模型壓縮時一個很重要的知識是soft labels,
并且提出了一種簡單的方式:自蒸餾(self-distillation),而從label 的角度來看,可以看作是一種label augmentation,即構(gòu)造了一個新的label,為模型新增了一個任務(wù),通過新任務(wù)的學(xué)習(xí),來提高模型對原來任務(wù)的性能。本文就label augmentation 繼續(xù)腦洞。
構(gòu)造新label
構(gòu)造新label,其實本質(zhì)上是構(gòu)造一個與當(dāng)前任務(wù)相關(guān)的新的任務(wù),而對應(yīng)的label則是通過當(dāng)前樣本通過某種方式獲得,獲得的label至少要比隨機好,否則只會幫倒忙。
自監(jiān)督
構(gòu)造新label,我們可以借鑒自監(jiān)督的方式,如Mask Language Model,AutoRegressive,而BERT中已使用來MLM,UniLM中也告訴我們增加Seq2Seq的AR 任務(wù)對NLU任務(wù)提高不顯著,不過今年的論文Don't Stop Pretraining: Adapt Language Models to Domains and Tasks 實驗證明了進一步預(yù)訓(xùn)練是能進一步提升下游任務(wù)的性能。而當(dāng)前任務(wù)是文本分類,MLM也許不是很合適,所以Seq2Seq 的方式可以嘗試。
具體的,我們讓模型學(xué)習(xí)目標(biāo)類別的同時,希望模型能同時生成樣本的描述字段(或者人為給定的某種相關(guān)性短語),即利用類別對應(yīng)描述字段構(gòu)造一個seq2seq任務(wù)。
相似性
對于同一個類別的樣本,他們必然有某種相似性,至少比與其他類別的樣本更相似。而何如構(gòu)造樣本呢?
一種簡單的方式是對每個樣本都從類當(dāng)中抽取一個樣本與他組成一對,然后讓每個<code>i</code>樣本與<code>i+1</code>樣本相似。這種方式由于每次樣本都是shuffle 的,只要讓batch size 小于label number,一個batch 內(nèi)同時出現(xiàn)多個同一類別的樣本概率就會很小。
既然在構(gòu)造seq2seq任務(wù)時,我們使用來label對應(yīng)的描述,此時我們也可以繼續(xù)嘗試使用:每個樣本構(gòu)造一個新的樣本,新樣本由label對應(yīng)描述與label id組成。
實驗結(jié)果
兩組實驗結(jié)果如下:
可以看到,對于構(gòu)造seq2seq 任務(wù),其結(jié)果與直接fine-tuning 結(jié)果基本一致,這也符合預(yù)期。而構(gòu)造相似性任務(wù),其結(jié)果直接fine-tuning 結(jié)果相比反而更差了。原因可能是樣本不均衡,所以同一batch 內(nèi)有較高概率出現(xiàn)同一類別的樣本,同時通過讓樣本與同一樣本相似來間接相似,這種方式可能有些曲折了,不過最根本的原因應(yīng)該還是batch 內(nèi)同一類別樣本的出現(xiàn)干擾了學(xué)習(xí)。
具體實驗代碼可以查閱classification_ifytek_auxiliary_seq2seq_task 和classification_ifytek_with_similarity
總結(jié)
本文只是由于之前實驗想到的嘗試對label 做增強來實現(xiàn)模型增強的嘗試,最后兩組實驗都沒取得什么好的結(jié)果。這也符合論文How to Fine-Tune BERT for Text Classification?給出的結(jié)論。