恕我直言,很多小样本学习的工作就是不切实际的
文 | ????????????????
編 | 小軼
以前的小樣本學習(Few-shot Learning),是需要用一個巨大的訓練集訓練的。測試時只給出 n-way k-shot,在這 N * k 個樣本上學習并預測。我第一次看到這種任務設定的時候真是非常失望:這和現實情況的需求也相差太遠了!真實場景下的小樣本學習,哪有大量的訓練數據呢?
從 GPT3 開始,學術界開啟了一個新的小樣本風潮。借助預訓練模型,人們只給出幾條或幾十條樣本作為訓練集,用小小訓練集進行 finetune。看到這些工作,我覺得這樣才是真正的小樣本學習!
最近有一些工作也在這種任務設定下取得了不錯的進展。所謂prompt,就是結合具體場景,設計新的 finetune 任務形式,從而將與當前任務相關的提示信息(prompt)引入模型,以此更好地利用預訓練模型的結構與先驗知識。我們大名鼎鼎的 GPT 系列就是這么干的。比如我們拿 GPT3 做 QA 的 finetune,直接喂給他一串“Question:問題內容 Answer:”,剩下的答案部分就讓 GPT3 自己填完。
賣萌屋之前還推送過其中一個工作(剛剛被評為 NAACL 的最佳短文!詳見這里)。這篇工作表明,基于 prompt 的方法能在幾分之一的訓練數據下,達到傳統 finetune 的訓練結果。
但!是!這樣的任務設定就是真正的小樣本學習了嗎?今天這篇 NYU、facebook、CIFAR 三巨頭一起帶來的文章直接 打臉了所有人:以上任務設定也還不是真正的小樣本學習!由于給出了一個巨大的驗證集,因此人們用這個驗證集挑選最好的 prompt、用它調參,這也是不切合實際的!真正的小樣本學習,訓練集驗證集都要小!
另外,本文還在真正的小樣本學習任務設定下,評測了挑選 prompt、調參的效果,實驗發現,我們對模型小樣本學習的能力還是過于樂觀了????????
論文題目:
True Few-Shot Learning with Language Models
論文鏈接:
http://arxiv-download.xixiaoyao.cn/pdf/2105.11447v1.pdf
代碼地址:
https://github.com/ethanjperez/true_few_shot
Arxiv訪問慢的小伙伴也可以在 【夕小瑤的賣萌屋】訂閱號后臺回復關鍵詞 【0616】 下載論文PDF~
真正的小樣本學習
可能大家被我上面說的各種“小樣本學習”的情景搞暈了,為了清楚,我們可以總結成這樣的一張表:
表中列舉了四種情況:
Data-Rich Supervised 表示傳統有大量數據的有監督學習。
Multi-Distribution Few-Shot 表示原始的小樣本學習情景,即在大量 n-way k-shot 上進行訓練。由于每個 task 都包含不同的數據分布,因此這相當于在不同的分布中訓練,在新的分布中使用模型。
Tuned Few-Shot 表示從 GPT3 開始的,用 prompt 的方式對預訓練模型微調。
True Few-Shot 就是本文提出的啦!
本文認為,對于小樣本學習,既不應該有其它分布的數據輔助、也不應該有很多訓練數據,更不應該有很多驗證集的數據。因為這些數據全都是需要標注的!
那還能調參嘛?
界定了真正的小樣本學習,作者就想:之前那些 prompt 的方法用了大量驗證集信息來調整超參、選擇最好的 prompt。他們對性能的提升其實都來自驗證集中蘊含的信息。那么,在沒有驗證集的情況下(對!作者為了更好的比較,就只留少量樣本的訓練集),該怎么調參呢?作者給了兩個方法:
k 折交叉驗證:將數據集分為 k 個部分,用其中 k-1 個部分作為訓練集,剩下的一個部分作為驗證集。在后面的實驗中,這種方法被稱作 CV(cross validation)。
類似在線學習的交叉驗證:將數據集分為 k 個部分,第 1 輪用第 1 部分訓練,第 2 部分驗證,第 i 輪用前 i 部分訓練,第 i+1 部分驗證。在后面的實驗中,這種方法被稱作 MDL(minimum description lengthm),因為其本質上遵循的是最小描述長度準則。
另外,作者還給出一個交叉驗證的準則:即在訓練和驗證集之間,樣本 loss 的差距要盡可能小。
實驗和分析
作者使用以上兩種交叉驗證方法,在 LAMA[1] 數據集上,對基于 prompt 的模型[2]進行了實驗。LAMA 是一個評測語言模型的數據集,它給出一句話,讓語言模型提取這句話在知識圖譜中對應的三元組。
首先,是對不同 prompt 的對比:
實驗發現,無論是在多大參數量的模型上,基于兩種方法選擇 prompt(圖中藍色粉色),都要比隨機挑選 prompt (圖中黃色)的效果好,但選出的 prompt 效果還是遠不如最好的 prompt(圖中綠色)。
如果把隨機選擇 prompt 作為基線,最好的 prompt 作為上界,那么兩種交叉驗證帶來的性能提升便如下圖所示:
在理想的驗證集里,我們是能挑選出最好的 prompt 的,因此最好的 prompt 就代表了在理想的巨量驗證集中挑選 prompt 最好的結果。從上圖可以看出,在沒有驗證集時,作者提出的兩個交叉驗證方法只能帶來理想驗證集帶來的大約 25% 的性能增益。因此,沒了大量數據作為驗證集,的確也就不能有很好的交叉驗證效果了。
另外,作者還對“在驗證集上調參”這件事進行了實驗。模型中有兩個參數是需要調整的,一個是 epoch 數量,另一個是輸入文本中被 mask 掉的 token 的比例。這里的評測使用 SuperGLUE 的任務,其中包含文本蘊含、閱讀理解等等和理解相關的任務。實驗結果如下圖所示:
這里發現,用兩種交叉驗證在小驗證集上調參,其結果和隨機參數差不多,甚至總體上看還更差一點!甚至在 MultiRC 上,調參出來的結果與最壞的一組參數表現差不多,表明在小驗證集上調參,并不一定就能穩定提升性能。這結果太讓人失望了,不過作者不死心,還進行了一個有意思的實驗:
有多少數據之后,才一定能通過調參,得到一組比隨機更好的參數呢?上面這張圖是在 WiC 任務上,使用 k 折交叉驗證來調參,橫軸代表總的訓練樣本數量,縱軸是模型性能,灰色的區域是 16 組不同參數的模型性能區間。實驗發現,到了 2000 多個樣本時,調參才是確定有效的!
總結
這篇文章表明,在真正的小樣本情境下,模型選擇做的還不太好。為此,作者對未來的小樣本學習給出了以下建議:
在寫文章的時候,同時注明模型選擇的原則,以及所有超參數和嘗試的 prompts。
將驗證集的數量也歸入小樣本學習的“數據量”里。
當有大量樣本作為驗證集的時候,先不要用!先在測試集直接得到結果、做消融實驗,等所有試驗完成后,最后再引入驗證集。這樣避免實驗結果使用驗證集大量樣本的信息。
不要使用前人工作中的超參數,只在這少量樣本中重新調參。
最嚴格的一種方式是,在設計評測任務時,只給出小小的訓練集和小小的驗證集,真正評分的測試集不給出,只能在線評測。
這篇文章說了真正的小樣本學習,自然地,就延伸出來一個問題:在零樣本學習(Zero-shot Learning)的情境下,還能進行調參嗎?還能挑選模型嗎?
個人感覺,似乎不行了。
萌屋作者:????????????????
在北大讀研,目前做信息抽取,對低資源、圖網絡都非常感興趣。希望大家在賣萌屋玩得開心 ヾ(=・ω・=)o
作品推薦
老板讓我用少量樣本 finetune 模型,我還有救嗎?急急急,在線等!
谷歌:CNN擊敗Transformer,有望成為預訓練界新霸主!LeCun卻沉默了...
中文BERT上分新技巧,多粒度信息來幫忙
尋求報道、約稿、文案投放:
添加微信xixiaoyao-1,備注“商務合作”后臺回復關鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺回復關鍵詞【頂會】
獲取ACL、CIKM等各大頂會論文集!
?
[1].Fabio Petroni, et al., "Language models as knowledge bases?", EMNLP 2019, http://arxiv-download.xixiaoyao.cn/pdf/1909.01066v2.pdf
[2].Derek Tam, et al., "Improving and simplifying pattern exploiting training.", http://arxiv-download.xixiaoyao.cn/pdf/2103.11955.pdf
總結
以上是生活随笔為你收集整理的恕我直言,很多小样本学习的工作就是不切实际的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Attention模型:我的注意力跟你们
- 下一篇: 谷歌、CMU发文:别压榨单模型了!集成+