作者 | 胡玥團隊
編輯 | 陳大鑫
國際語義評測研討會(International Workshop on Semantic Evaluation, SemEval)是由ACL下屬的SIGLEX主辦,是全球範圍內影響力最強、規模最大、參賽人數最多的自然語言語義評測競賽。
在本屆SemEval-2020國際語義評測大賽中,中國科學院信息工程研究所胡玥老師帶領的參賽團隊雛鷹團隊(系統名:III-ENLP-NUT)(團隊成員:邢璐茜、謝玉強、彭偉)在Task4: Commonsense Validation and Explanation (常識驗證與解釋, 子任務A-常識驗證及子任務B-常識解釋選擇上均取得了Top-3的好成績。
https://competitions.codalab.org/competitions/21080
論文連結:https://arxiv.org/abs/2007.00924
以下胡玥團隊將為大家帶來詳細的大賽分享。
1
任務介紹&分析
任務介紹
SemEval-2020 常識驗證與解釋任務由西湖大學博士生王存翔、 SUTD博士生梁帥龍、西湖大學張嶽教授和Queen’s University 朱曉丹教授共同舉辦。
該賽題進一步劃分為三個子任務,分別是
a) Commonsense Validation,
b) Commonsense Explanation(Multi-Choice),
c) Commonsense Explanation(Generation)
子任務A: Commonsense Validation
常識驗證子任務中,輸入為兩個有相似結構的陳述,要求系統判斷出哪個陳述是符合常識的,哪個陳述相對不符合常識。評價指標採用準確率。
子任務B: Commonsense Explanation (Multi-Choice)
常識解釋選擇子任務中,輸入為子任務A中不符合常識的錯誤陳述,以及三個可能為不符合常識陳述的解釋選項,要求系統從候選選項集合中,選出最能夠解釋不符合常識陳述出錯的原因。評價指標採用準確率。
子任務C: Commonsense Explanation (Generation)
常識解釋生成子任務中,輸入同樣為子任務A中不符合常識的錯誤陳述,要求系統 成可以解釋不符合常識陳述的原因。評價指標採用文本生成的評價指標BLEU以及人工評價。
任務分析
子任務A的目標是檢驗模型是否具有區分違反常識的自然語言陳述的能力。子任務A的主要挑戰在於,違反常識的陳述在句法層面通常是符合語言學結構的,但是在語義層面上,其含義是不符合通常的常識知識,考驗模型所具備的常識知識。
子任務B的目標是通過選擇合適的解釋的方式,檢驗模型是否真正地理解了一個陳述為什麼是違反常識的。子任務B的挑戰在於,儘管所有的候選解釋都與違反常識陳述的內容有關,但是有些候選項並不包含解釋不符合常識的主要原因,反而由於在內容上存在關聯,會分散模型的判斷能力。
近期一些工作表明,預訓練語言模型除了在語言理解上具有很好的性能之外,通過在大規模語料上進行學習,其內部已經習得了某些常識知識。因此,我們不僅僅將預訓練語言模型看做上下文編碼器,用以產生句子的表示,同時,我們還把預訓練語 模型看做知識存儲器,希望在問答過程中可以隱式地利用預訓練語言模型提供常識知識。
針對上述挑戰,我們從以下兩個主要指導意圖出發,以多選型問答的式設計兩個 任務的解決方法:
(1)意圖1:如何「喚醒」並利用預訓練語言模型內部的隱式知識來幫助完成常識驗證和解釋任務?
(2)意圖2:豐富違反常識陳述的上下文是否能夠/如何幫助系統更好地選擇正確的解釋?
針對第一點,我們設計了一種基於提示模板(prompt template)的方法,用於重構子任務輸入以適用於問答任務。
針對第二點,我們為子任務B構建了一個提示問題(prompt question),並且利 額外的信息對其進行擴展,以提供對比信息,幫助模型能夠定位到造成違反常識的原因。
此外,我們還探索了基於預訓練語言模型打分的方法來完成常識驗證子任務,並探索了預訓練語言模型內部隱含的常識知識能夠在多大程度上幫助常識驗證子任務。
2
摘要&介紹
摘要
本文介紹了針對SemEval Task4的前兩個子任務的系統:常識驗證和解釋。為了闡明判斷的意圖並注入對比信息以供選擇,我們提出了帶有模板的輸入重建策略。具體來說,我們將子任務形式化為多項問題,並使用提示模板構造輸入,然後,將最終回答預測視為子任務的結果。實驗結果表明,與基準系統相比,我們的方法具有顯著的性能。我們的方法在前兩個子任務的兩個正式測試集中都獲得了第三名,其準確度分別為96.4和94.3。
介紹
自然語言理解(NLU)要求系統不僅能夠弄清文本的語義,而且能夠在現實世界的常識知識的約束下理解文本。識別無意義的自然語言陳述,並產生對無意義的文本的解釋的能力是實現對自然語言理解的基礎。SemEval-2020任務4提供了結構良好的評估任務,旨在評估基於常識驗證和解釋的系統能力。
常識驗證和解釋(ComVE)任務分為三個子任務:驗證、解釋選擇、解釋生成。
我們主要關注並參與前兩個子任務。第一個子任務(subtaskA)的目標是檢查系統區分區別於常識的自然語言語句(即,無意義/錯誤語句)的能力。第二個子任務(subtaskB)的目標是測試系統是否可以正確理解造成反事實的原因。在子任務A中,區分無意義的陳述所面臨的挑戰在於,這種陳述通常在句法層面上符合語言結構,但其含義卻不符合語義層面上的一般常識。在子任務B中,為虛假陳述選擇適當的解釋的困難在於,儘管候選解釋與虛假陳述的內容相關,但它們可能不包含解釋虛假陳述的主要原因,並且會分散系統的注意力。
為了解決上述挑戰,我們首先將兩個子任務形式化為一種多選問答(QA)任務。此外,我們將PLM用作上下文編碼器來生成句子的表示形式,還通過兩階段的預訓練將PLM視為知識存儲,可以在回答問題時隱式提供常識知識。
為了應對前面提到的挑戰,我們設計了多選QA方式解決兩個子任務的方法,具有以下兩個指導意圖:
(a)如何喚醒和利用PLM的隱性知識進行常識驗證和解釋 。
(b)上下文的擴展將如何幫助系統為錯誤陳述選擇正確的解釋。
對於第一點,我們探索了一種基於模板的方法來重建編碼器的輸入。
在子任務A中,我們設計了一個提示性問題,並將此子任務轉換為多項選擇QA樣式格式,其中將語句用作候選答案。
在子任務B中,我們將帶有提示模板的錯誤陳述重新格式化,比如A陳述是反事實的,是因為B解釋。提示模板旨在激活預訓練模型內部的常識知識,並且可以將其視為查詢以檢索PLM中的常識知識。另外,提示模板豐富了PLM的輸入,以明確表達子任務的意圖。
對於第二點,我們建議在子任務B中用更多上下文擴展prompt question,帶有更多文本信息,比如正確和錯誤陳述的對比信息。
3
方法
任務定義 :5個元素 $$分別表示兩個陳述和三個解釋。$$ 一個是真實事實。一個是反事實。$O^i$ 只有一個是正確的解釋原因。
我們把兩個子任務轉成多選問題,包含一個PLM的編碼器和一個任務確定的分類層。對於每一個問題答案對,我們可以得到下面的計算公式。inp,表示的是經過重構的輸入 。$C^i$表示的是陳述的First Token,即[CLS]。擁有打分更高的候選答案將會被視為最後的預測。
Sense-Making 陳述驗證方法
在第1個子任務中,模型要求能夠去選擇一個反事實的陳述。我們把這個子任務轉成多選的qa問題。其中問題是我們人工構造的一個prompt question。
這個prompt question有兩個功能:
第一,他能夠去檢索(激活)預訓練語言模型內部的常識知識;
第二,扮演一個潛在問題的角色,用有意義的陳述來回答。
因此我們直接構造了一個啟發式的prompt question,比如:If the followingstatement is in common sense?
我們認為這種方式,從語義角度來說,能夠包含子任務的背後的意圖(驗證常識).
所以對每一個樣例,我們都能夠去構造一個這樣子的問題和陳述對。然後分別取每一個陳述的cls向量,作為分類層的輸入,得到最後的結果。除此之外,考慮到長度的限制以及計算效率,我們用另一個方式去結合問題和陳述。比如:[CLS] If 「 Si 」 is in common sense? [SEP].
解釋選擇方法
對於第二個來說系統需要從三個候選當中去選擇最合理的解釋。這也是一個很直覺的多選任務,但是we argue:錯誤的陳述從語法上來說是一個完全正確的自然語言的句子,如果直接把這個錯誤的陳述和每一個候選解釋連接起來,可能會干擾模型的表現。也就是說模型非常容易去關注到陳述和解釋之間的相似性,而不是我們所需要的因果關係。基於上述考慮,我們會構造一個prompt template,為了能夠讓模型去理解作為待回答的問題假陳述。
因此我們構造的模板如下:[CLS] Sf is against common sense because Oj [SEP] .下劃線會被這個候選的解釋去替代。
然而如果僅僅是使用這種錯誤的事實信息是不足夠的。他會干擾模型發現在錯誤事實和候選解釋間的因果關係的能力。我們對數據進行了觀察,發現 true statement經常會和false statement,共享同一個主題。另外true statement的內容是in come sense的。所以我們重新利用上真實陳述的信息,可以與錯誤的事實形成了一個對比的信息。因此我們又構造了如下的模板:
[CLS] If St is in common sense. [SEP] Sf is against common sense because Oj [SEP]
4
實驗&結果
具體的實驗設置大家可以移步論文,這裡就不作贅述了。下圖是我們對兩個子任務構造的模板:
主實驗
我們在兩個子任務上進行了實驗。其中omcs是指我們用額外的常識語料對模型進行二階段訓練。P和C表示對應的模板。在子任務一上,我們發現通過增加模板信息能夠使模型效果提升,通過額外的語料去預訓練語言模型,能夠達到一個更好的效果,但是兩個模板在子任務一上面的表現並不是很明顯,我們認為這個原因是因為這兩個模板帶來的效果是一致的,即使他們的表現形式有所不同。
對於第2個子任務來說,我們的模型通過增加P和增加P+C,模型的效果都在提升,說明這兩個模板構造獲得的語義信息也是有所差異的。和我們的假設一致,通過增加對比信息,模型的效果能夠達到最好。
5
討論
探索PLM中的常識知識
我們想要去探究預訓練語言模型當中是否真的隱含了常識知識。因此我們進行如下的操作:對每一個陳述中的token順序的mask,然後能夠得到每一個token的概率值。所有的token概率值乘起來得到這個陳述的概率。因此我們能夠去獲得真實事實和錯誤事實的打分。如果模型足夠理想的話,那麼真實事實的打分肯定是大於錯誤事實的。如果模型把真實事實的打分,誤判成小於錯誤事實的打分,那麼error+1。因此我們可以計算一個準確率,最後我們發現:
RoBERTaLarge 達到79.5%的準確率,RoBERTaOMCS 保持了86.3%的準確率。
子任務A上提問模板效果
表徵RoBERTa的原始輸入格式
我們在任務a上做了一些case study。
對於第1個例子來說,增加模板能夠使得模型都判斷準確。說明模板能夠去對模型有一定的暗示作用。
對於第2個例子來說,第1個模板任然不奏效,但是第2個模板提供了一個更好的hint。
對於第3個例子來說,所有的模型都做錯了。有可能是模型自己的問題,語料當中的偏置或者是TV這個詞出現的詞頻等等。
總之,模板能夠幫助模型去理解這個任務中的一些對象,但是在數據集裡面仍然有一些還未被解決的問題。
同時我們在任務b上也做了一些case study的展示,我們發現通過增加p+c這個模板,能夠對大部分的數據都預判正確,說明這個模板給模型帶來的信息還是比較豐富的,比如說顯式給出因果關係,以及真實事實和錯誤事實的對比關係。
除此之外,我們還嘗試了數據增強,因為我們發現數據中的錯誤事實部分是對真實事實進行主語替換,詞位置順序改變等方式,但是增加了部分數據加入訓練發現效果並沒有帶來很大的提升,原因可能是因為模型的效果已經達到了96%+,在通過增加部分數據,效果難以有明顯的提升。
團隊介紹
中科院信息工程研究所雛鷹團隊主要研究方向包括智能對話、機器翻譯、閱讀理解、跨媒體智能分析等。在ACL,AAAI 、IJCAI、TMM等頂級會議及期刊發表論文70餘篇。團隊指導老師為胡玥教授,中國科學院信息工程研究所研究員/博士生導師,主要研究方向為人工智慧、自然語言處理。
引用
[1] Luxi Xing, Yuqiang Xie, Yue Hu, Wei Peng. IIE-NLP-NUT at SemEval-2020 Task 4: Guiding PLM with Prompt Template Reconstruction Strategy for ComVE, SemEval 2020.
[2] Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, and Veselin Stoyanov. 2019. Roberta: A robustly optimized BERT pretraining approach. CoRR
[3] Shuailong Wang, Cunxiang andLiang, Yili Jin, Yilong Wang, Xiaodan Zhu, and Yue Zhang. 2020. SemEval-2020 task 4: Commonsense validation and explanation. In Proceedings of The 14th International Workshop on Semantic Evaluation. Association for Computational Linguistics
[4] Cunxiang Wang, Shuailong Liang, Yue Zhang, Xiaonan Li, and Tian Gao. 2019c. Does it make sense? and why? a pilot study for sense making and explanation. In Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics, pages 4020–4026, Florence, Italy, July. Association for Computational Linguistics.