iT邦幫忙

2021 iThome 鐵人賽

DAY 9
1
AI & Data

[自然語言處理NLP]BERT系列Model的應用、訓練技巧與實戰系列 第 9

【Day 9】預訓練任務大改:Splinter在QA任務上的成功嘗試

BERT系列的預訓練模型一個個出,RoBERTa、XLNet、DeBERTa等等一個比一個更能打,刷新著自然語言理解的GLUE榜單。這些都是通用型的預訓練語言模型,在所有任務上都有較好的表現(或至少相較之前的SOTA)。但是在具體完成任務時,我們的目標通常相對單純,往往不需要一個全能的模型,只要能完成我的特定類型任務就好,例如很常見的QA任務。

那麼有沒有什麼專門為了特定任務而預訓練的模型呢?今天就介紹一個剛發佈不久的Splinter模型,專為QA而生,效果優於RoBERTa、SpanBERT等之前的SOTA,在小樣本的訓練上更是特別優秀。

Splinter:span-level pointer

Splinter的貢獻主要有兩點:

  • 提出了一個全新的進行span選擇的預訓練方式
  • 一個問題回答層:將問題和文本(包含答案的段落)的表示串接在一起

其中第一點是重點,也是它成功的原因。主要思想是去模擬人們在進行問題回答時的思考方式。

通常面對一個閱讀理解的問答問題是,我們最先會閱讀題目,然後在頭腦中記住問題中出現的一些重要短語。例如一個問題是「伊麗莎白女王進入過哪所大學就讀?」這個題目中的「伊麗莎白女王」、「大學」、「就讀」、「進入」都有可能成為我們記住的重要短語。然後,我們會帶著這樣的問題去看文章,迅速找到包含這些重要短語的片段。然後再在這些短語「附近」尋找問題的答案。

也就是說,我們其實經過了一個「問題」->「拆解」->「短語」->「檢索」->「片段」->「答案」的過程。Splinter提出的預訓練任務正是在模擬這個過程中的短語檢索過程:

https://ithelp.ithome.com.tw/upload/images/20210912/20127672zSKBMTIIcx.jpg

左邊的圖是原始文檔,右邊則是送入Splinter進行預訓練時的文檔,經過了段落MASK。哪些段落被MASK起來成為[QUESTION],讓模型去猜呢?是那些在文本中重複出現的片段被隨機MASK了,但會留下一個片段讓模型能夠去選擇。模型的學習目標就是透過上下文去重新定位到被MASK起來的文本是什麼。這部分Splinter的作法與傳統BERT的克漏字,完全重建被遮蓋的字詞的方式不同。Splinter是使用一個特殊的question-aware span selection (QASS) 層,只使用[QUESTION]的表示來「選擇」答案片段。這就非常相似於SQuAD等擷取式問答的工作方式。

而這個訓練好的[QUESTION] token也可以被用來進行微調。方法也很簡單,只要在問題的後面接一個[QUESTION],模型就可以做微調的工作了,例如下圖這樣。

https://ithelp.ithome.com.tw/upload/images/20210912/20127672ZcgyURAj99.jpg

Splinter的出色效果

SPlinter方法其實不難,但是巧妙,而效果則是實打實的。也不用多說,我們直接來看論文中的結果就好(根據本人親測,效果屬實)。

首先是Few shot learning,極小樣本情況下,Splinter力壓效果拔群:

https://ithelp.ithome.com.tw/upload/images/20210912/20127672TEfCb02nMq.jpg

而在完整的資料集上進行Fine-tune,效果也不差:

https://ithelp.ithome.com.tw/upload/images/20210912/201276728D2AQw3ccs.jpg

完整實驗結果可看下圖:

https://ithelp.ithome.com.tw/upload/images/20210912/20127672KAEWROJIBV.jpg

參考

Ram, O., Kirstain, Y., Berant, J., Globerson, A., & Levy, O. (2021). Few-shot question answering by pretraining span selection. arXiv preprint arXiv:2101.00438.


上一篇
【Day 8】Adaptation!適應!讓BERT更好地過渡到下游任務!
系列文
[自然語言處理NLP]BERT系列Model的應用、訓練技巧與實戰9
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言