从易到难,针对复杂问题的无监督式问题分解方法
論文標(biāo)題:
Unsupervised Question Decomposition for Question Answering
論文作者:
Ethan Perez (FAIR,NYU), Patrick Lewis (FAIR,UCL), Wen-tau Yih (FAIR), Kyunghyun Cho (FAIR,NYU), Douwe Kiela (FAIR)
論文鏈接:
https://arxiv.org/abs/2002.09758
代碼鏈接:
https://github.com/facebookresearch/UnsupervisedDecomposition
問(wèn)答(QA)任務(wù)常常包含了很多難以直接回答的復(fù)雜問(wèn)題,而這些問(wèn)題一般需要搜尋多段文本才能找出答案。
本文提出一種無(wú)監(jiān)督的問(wèn)題分解方法:把復(fù)雜問(wèn)題分解成若干簡(jiǎn)單問(wèn)題,然后把這些簡(jiǎn)單問(wèn)題的答案作為上下文提供給復(fù)雜問(wèn)題,從而幫助模型回答復(fù)雜問(wèn)題。
使用這種策略,我們能夠在多跳問(wèn)答數(shù)據(jù)集HotPotQA上實(shí)現(xiàn)顯著效果,尤其對(duì)于領(lǐng)域外的問(wèn)題十分奏效。
問(wèn)答中的復(fù)雜問(wèn)題
針對(duì)問(wèn)答系統(tǒng)的研究已經(jīng)有了多年歷史,在近些年,各類數(shù)據(jù)集的出現(xiàn)對(duì)問(wèn)答系統(tǒng)的要求越來(lái)越高。
如數(shù)據(jù)集HotPotQA就要求系統(tǒng)能夠在多段不連續(xù)的文本中尋找線索,并且按照邏輯順序把這些線索組織起來(lái)形成答案。
這種需要多次答案“跳躍”的問(wèn)答形式就稱為“多跳問(wèn)答”(Multi-Hop QA),或者簡(jiǎn)單地稱為復(fù)雜問(wèn)題。
模型直接回答這些問(wèn)題往往不現(xiàn)實(shí),但一個(gè)簡(jiǎn)單的想法是,可以把這個(gè)復(fù)雜問(wèn)題分解成若干模型能夠回答的簡(jiǎn)單的子問(wèn)題,然后再把這些子問(wèn)題及其答案作為上下文提供給模型,再去回答復(fù)雜問(wèn)題,這樣就可以大大降低直接回答復(fù)雜問(wèn)題的難度。
比如下圖是一個(gè)例子,要回答復(fù)雜問(wèn)題,我們先從中拆分出兩個(gè)簡(jiǎn)單問(wèn)題(或“單跳問(wèn)答”),回答之后再回答復(fù)雜問(wèn)題本身,就容易得多。
那么,現(xiàn)在的問(wèn)題是,怎么得到簡(jiǎn)單的子問(wèn)題。本文采用了一種無(wú)監(jiān)督的問(wèn)題分解方式:(1)首先以抽取的方式構(gòu)建一個(gè)“偽分解”數(shù)據(jù)集,(2)利用構(gòu)建的“偽分解”數(shù)據(jù)集和原來(lái)的復(fù)雜問(wèn)題數(shù)據(jù)集訓(xùn)練一個(gè)序列到序列模型,(3)使用序列到序列模型生成子問(wèn)題。以上問(wèn)題分解步驟完全是無(wú)監(jiān)督的,因而避免了大量的人工標(biāo)注。
最后,本文在HotPotQA上測(cè)試了該方法的效果,并取得了顯著效果。總的來(lái)說(shuō),本文貢獻(xiàn)如下:
提出一種完全無(wú)監(jiān)督的問(wèn)題分解方法,可以有效地把復(fù)雜問(wèn)題分解為若干簡(jiǎn)單的子問(wèn)題;
在HotPotQA的實(shí)驗(yàn)上表明,這種方法已經(jīng)非常接近強(qiáng)監(jiān)督的方法;
本方法尤其能夠在各種類型的復(fù)雜問(wèn)題都取得很好的結(jié)果,表明此方法的通用性較強(qiáng)。
無(wú)監(jiān)督問(wèn)題分解
問(wèn)答任務(wù)是,給定問(wèn)題和若干段文本,模型要去找到答案,即最大化概率。
而問(wèn)題分解就是,找到和相關(guān)的個(gè)子問(wèn)題,并得到它們的答案,模型現(xiàn)在要基于以上所有信息去最大化答案的概率。
所謂問(wèn)題分解,指的就是復(fù)雜問(wèn)題到子問(wèn)題集的一個(gè)映射:,其中是從簡(jiǎn)單問(wèn)題數(shù)據(jù)集中得到的一個(gè)問(wèn)題。我們首先需要構(gòu)造這樣的映射對(duì),然后學(xué)習(xí)這個(gè)映射,最后應(yīng)用它。
Step1: 偽分解構(gòu)造
假設(shè)我們現(xiàn)在有兩個(gè)數(shù)據(jù)集:復(fù)雜問(wèn)題數(shù)據(jù)集(本文使用HotPotQA中的所有問(wèn)題作為)和簡(jiǎn)單問(wèn)題數(shù)據(jù)集(使用SQuAD2的所有問(wèn)題作為初始的)。
為了進(jìn)一步擴(kuò)大這兩個(gè)數(shù)據(jù)集的大小,我們從Common Crawl中挖掘更多的問(wèn)題補(bǔ)充和,最終得到約2.4M句復(fù)雜問(wèn)題,10.1M句簡(jiǎn)單問(wèn)題。
另一方面,因?yàn)槲覀儧](méi)有標(biāo)注好的對(duì),所以我們想要先構(gòu)造出這樣的問(wèn)題對(duì),然后在此之上學(xué)習(xí)映射。這種構(gòu)造我們稱為“偽分解”構(gòu)造。
具體來(lái)說(shuō),我們對(duì)每個(gè)復(fù)雜問(wèn)題,從中選取個(gè)簡(jiǎn)單問(wèn)題作為偽分解,這些選取的簡(jiǎn)單問(wèn)題需要盡量滿足兩個(gè)標(biāo)準(zhǔn):和相似,相互不同。這兩個(gè)標(biāo)注可以統(tǒng)一為下述公式:
下面給出兩種抽取子問(wèn)題的策略(本文設(shè)):
相似度抽取:使用余弦值改寫(xiě)上述公式為(其中為單位句向量,用fastText得到);
隨機(jī)抽取:隨機(jī)中中抽取個(gè)簡(jiǎn)單問(wèn)題作為。
在抽取了若干子問(wèn)題后,由于其中包含了很多噪聲,所以我們還把其中沒(méi)在中出現(xiàn)的實(shí)體都隨機(jī)替換為中同類型的一個(gè)實(shí)體(如果存在)。如此一來(lái),我們就得到了很多偽分解對(duì)。
Step2: 問(wèn)題分解映射學(xué)習(xí)
在上述得到偽分解對(duì)之后,我們就要去學(xué)習(xí)分解映射,我們有以下學(xué)習(xí)策略:
不學(xué)習(xí)(No Learning),直接使用抽取得到的作為復(fù)雜問(wèn)題的子問(wèn)題;
序列到序列(Seq2Seq),把所有的拼接起來(lái)作為目標(biāo)文本,學(xué)習(xí)一個(gè)的序列到序列模型;
無(wú)監(jiān)督序列到序列(USeq2Seq),不直接從中學(xué)習(xí),而是用各種無(wú)監(jiān)督學(xué)習(xí)手段去學(xué)習(xí)。
對(duì)Seq2Seq和USeq2Seq,我們首先在上用MLM的方法預(yù)訓(xùn)練一個(gè)XLM去初始化,然后用上述偽分解對(duì)訓(xùn)練。
對(duì)Seq2Seq,直接用對(duì)訓(xùn)練;對(duì)USeq2Seq,用去噪和反譯的方法訓(xùn)練。對(duì)去噪,把中字符隨機(jī)掩碼、交換、丟棄,得到,然后訓(xùn)練。對(duì)反譯,分別用生成一個(gè)和用生成,然后去優(yōu)化。
Step3: 如何使用
在學(xué)習(xí)了映射之后,我們就可以針對(duì)每個(gè)復(fù)雜問(wèn)題,得到它的分解后的子問(wèn)題,然后用一個(gè)簡(jiǎn)單的QA模型找到每個(gè)子問(wèn)題的答案,再把這些問(wèn)題和對(duì)應(yīng)的答案拼接起來(lái),和原來(lái)的復(fù)雜問(wèn)題、給定的上下文一道,送入最后的QA模型,得到復(fù)雜問(wèn)題的答案即可。
具體地,我們使用RoBERTa(Large)和BERT(Base)作為簡(jiǎn)單問(wèn)答模型,并且也使用了模型集成。類似地,對(duì)回答復(fù)雜問(wèn)題我們也用同樣的模型。
實(shí)驗(yàn)
我們?cè)跀?shù)據(jù)集HotPotQA上實(shí)驗(yàn),測(cè)評(píng)指標(biāo)有F1和EM,其他實(shí)驗(yàn)設(shè)置詳見(jiàn)原文。
下表是實(shí)驗(yàn)結(jié)果,第一列是分解學(xué)習(xí)方法,第二列是分解構(gòu)造方法。可以看到,和基線模型比較,在原始版本(Orig)上得到3F1的提升,在多跳(MultiHop)和領(lǐng)域外(OOD)版本上,得到10F1的提升,并且還能實(shí)現(xiàn)強(qiáng)監(jiān)督模型DecompRC的效果。
在測(cè)試集上,本方法能接近當(dāng)前最佳的強(qiáng)監(jiān)督(額外的監(jiān)督信號(hào),知道哪些句子能回答問(wèn)題)模型SAE和HGN。在后面的實(shí)驗(yàn)中,我們使用Useq2seq+fastText的方法。
下面我們想要知道提供怎樣的上下文信息可以使模型更好。我們有幾種選擇:(1)簡(jiǎn)單的答案段(span);(2)答案所在的一整句話(sentence);(3)隨機(jī)實(shí)體。
下表是實(shí)驗(yàn)結(jié)果,可以看到,相比提供子問(wèn)題,子答案的選擇更為關(guān)鍵。其中,提供一整句話而非僅僅是答案本身可以大幅提高效果,這說(shuō)明,充足的額外的上下文對(duì)模型至關(guān)重要。
接下來(lái)我們探究子問(wèn)題和子答案對(duì)最終結(jié)果的影響。如下圖所示,左圖是使用beam search生成的子問(wèn)題的置信度對(duì)最終結(jié)果的影響,右圖是子答案置信度對(duì)最終結(jié)果的影響。可以看到,置信度越大的子問(wèn)題或子答案能最大化提升最終的結(jié)果。
最后來(lái)看看具體分解的子問(wèn)題及其得到的答案的例子,如下表所示。可以看到,盡管有些子問(wèn)題語(yǔ)法不通,但這并不妨礙簡(jiǎn)單模型找到相關(guān)答案,并為復(fù)雜模型提供有效的信息。
小結(jié)
本文提出了一種無(wú)監(jiān)督式的“問(wèn)題分解-分解學(xué)習(xí)-分解應(yīng)用”的將復(fù)雜問(wèn)題分解為簡(jiǎn)單問(wèn)題從而提供豐富上下文信息的問(wèn)答范式,在HotPotQA上能夠接近當(dāng)前最佳的強(qiáng)監(jiān)督模型,并通過(guò)一系列分析實(shí)驗(yàn)驗(yàn)證了此方法的有效性。
這種方法的本質(zhì)是為模型提供更多的上下文信息,非常類似我們推出的一系列工作——將各種任務(wù)歸納到閱讀理解框架下。
實(shí)際上這種想法也是很直觀的:人類也無(wú)法只從一句話中推出很多信息,總是需要各種各樣的背景信息作為支撐。從這個(gè)觀點(diǎn)看,未來(lái)拓展模型能夠處理的文本長(zhǎng)度也許會(huì)是一種趨勢(shì)。
????
現(xiàn)在,在「知乎」也能找到我們了
進(jìn)入知乎首頁(yè)搜索「PaperWeekly」
點(diǎn)擊「關(guān)注」訂閱我們的專欄吧
關(guān)于PaperWeekly
PaperWeekly 是一個(gè)推薦、解讀、討論、報(bào)道人工智能前沿論文成果的學(xué)術(shù)平臺(tái)。如果你研究或從事 AI 領(lǐng)域,歡迎在公眾號(hào)后臺(tái)點(diǎn)擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結(jié)
以上是生活随笔為你收集整理的从易到难,针对复杂问题的无监督式问题分解方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何正确使用电动烤蔬菜机?
- 下一篇: 爱思唯尔云论坛:疫情挑战下的大数据与人工