逐次提示分解復(fù)雜問(wèn)題(EMNLP2022) 原創(chuàng) 精華
?摘要:回答需要做出潛在決策的復(fù)雜問(wèn)題是一項(xiàng)具有挑戰(zhàn)性的任務(wù),特別是在監(jiān)督數(shù)據(jù)有限的情況下。最近的研究利用大型語(yǔ)言模型(LM)的能力,通過(guò)在單次推理過(guò)程中演示如何輸出中間推理步驟,以少量示例解決復(fù)雜問(wèn)題。我們提出了“逐次提示”方法,通過(guò)迭代將復(fù)雜任務(wù)分解為簡(jiǎn)單任務(wù),逐步解決,直到得到最終答案。逐次提示將復(fù)雜問(wèn)題分解的監(jiān)督與簡(jiǎn)單問(wèn)題回答的監(jiān)督解耦,使我們能夠(1)在每個(gè)推理步驟有多次機(jī)會(huì)查詢上下文示例,(2)獨(dú)立于問(wèn)題回答來(lái)學(xué)習(xí)問(wèn)題分解,包括使用合成數(shù)據(jù),以及(3)在大型語(yǔ)言模型表現(xiàn)不佳的推理步驟中使用定制組件。通常情況下,中間監(jiān)督是人工編寫的,這可能會(huì)導(dǎo)致高昂的成本。我們介紹了一種生成合成數(shù)據(jù)集的方法,可以用于引導(dǎo)模型分解和回答中間問(wèn)題。我們的最佳模型(使用逐次提示)在DROP數(shù)據(jù)集的少量示例版本上與最先進(jìn)的模型相比,絕對(duì)F1得分提高了約5%。
(注釋:這篇論文提出了一種叫做“逐次提示”(Successive Prompting)的方法,用來(lái)解決復(fù)雜的問(wèn)題。想象一下,你在做一道難題,這道題需要你先解決一系列的小問(wèn)題才能最終得到答案。逐次提示的方法就像是在解難題時(shí),每一步都問(wèn)自己一個(gè)簡(jiǎn)單的問(wèn)題,回答了這個(gè)簡(jiǎn)單的問(wèn)題后,再繼續(xù)問(wèn)下一個(gè),直到最終解決整個(gè)難題。
傳統(tǒng)的方法可能會(huì)試圖直接解決這個(gè)復(fù)雜問(wèn)題,但這往往很難,而且可能會(huì)出錯(cuò)。逐次提示的方法則是先把復(fù)雜問(wèn)題分解成多個(gè)簡(jiǎn)單的小問(wèn)題,一個(gè)一個(gè)地解決,這樣更容易得到正確的答案。
舉個(gè)例子:
假設(shè)你正在看一場(chǎng)足球比賽,有人問(wèn)你:“誰(shuí)在上半場(chǎng)踢了最遠(yuǎn)的射門?” 這其實(shí)是一個(gè)復(fù)雜的問(wèn)題,因?yàn)槟悴粌H需要知道所有的射門距離,還要找出其中最遠(yuǎn)的那一個(gè),并且確定是誰(shuí)踢的。
用逐次提示的方法,你會(huì)這樣一步步來(lái)解決這個(gè)問(wèn)題:
1. 第一步:找出所有射門的距離
你先問(wèn)自己:“上半場(chǎng)有哪些射門?” 然后你發(fā)現(xiàn),有三個(gè)射門分別是12碼、42碼和33碼。
2. 第二步:找出最遠(yuǎn)的射門
接下來(lái),你問(wèn)自己:“這三個(gè)射門中哪個(gè)最遠(yuǎn)?” 答案是42碼。
3. 第三步:確定是誰(shuí)踢的最遠(yuǎn)射門
然后,你再問(wèn):“是誰(shuí)踢的42碼的射門?” 答案是Matt Bryant。
4. 最后一步:得出最終答案
你現(xiàn)在已經(jīng)知道了所有必要的信息,所以你得出了最終答案:“在上半場(chǎng)踢了最遠(yuǎn)射門的人是Matt Bryant?!?/p>
這個(gè)例子展示了逐次提示如何通過(guò)分解問(wèn)題,將一個(gè)復(fù)雜問(wèn)題一步步解決,直到得到正確的答案。)
1 引言
諸如HotpotQA (Yang et al., 2018) 和 DROP (Dua et al., 2019) 等組合閱讀理解數(shù)據(jù)集激發(fā)了一系列模型架構(gòu),這些架構(gòu)旨在通過(guò)從最終答案中進(jìn)行弱監(jiān)督學(xué)習(xí)來(lái)回答復(fù)雜問(wèn)題。最近的一個(gè)研究方向是利用大型語(yǔ)言模型(LM)的能力,通過(guò)在回答復(fù)雜問(wèn)題之前生成潛在的推理步驟,僅需少量示例即可解決組合任務(wù)(Wei et al., 2022; Nye et al., 2021; Karpas et al., 2022)。給定一個(gè)復(fù)雜的問(wèn)題,這種方法首先從一個(gè)(問(wèn)題、推理、答案)三元組數(shù)據(jù)集中找到最近的訓(xùn)練示例,然后將它們拼接起來(lái)以創(chuàng)建用于LM的輸入。然后,使用大型語(yǔ)言模型對(duì)該輸入進(jìn)行提示,以生成所需的中間推理步驟,同時(shí)在一次運(yùn)行中回答復(fù)雜問(wèn)題。
盡管這種方法很有前景,但它放棄了該任務(wù)的許多現(xiàn)有方法的優(yōu)勢(shì)(Khot et al., 2021; Karpas et al., 2022),因?yàn)樗鼘?wèn)題分解的監(jiān)督與執(zhí)行中間步驟的監(jiān)督耦合在一起。此外,其非模塊化特性使其無(wú)法在LM表現(xiàn)不佳的情況下使用替代的符號(hào)推理引擎。此外,模型僅接觸到基于復(fù)雜問(wèn)題近似度選擇的一組上下文示例,而這些示例可能不包含針對(duì)所需中間步驟的最佳監(jiān)督。
我們提出了“逐次提示”,通過(guò)這種方法,我們將復(fù)雜問(wèn)題逐步分解為下一個(gè)簡(jiǎn)單問(wèn)題進(jìn)行回答,然后重復(fù)該過(guò)程,直到回答完復(fù)雜問(wèn)題(圖1)。這些步驟中的每一步都通過(guò)對(duì)LM的獨(dú)立查詢來(lái)完成。由于分解和回答步驟是分開執(zhí)行的,我們可以將每個(gè)步驟的監(jiān)督解耦,從而帶來(lái)兩個(gè)主要好處。首先,在進(jìn)行上下文學(xué)習(xí)時(shí),我們有多次機(jī)會(huì)選擇不同的上下文示例,這些示例可以針對(duì)所執(zhí)行的特定分解或回答步驟量身定制,而不是僅基于復(fù)雜問(wèn)題選擇一組示例。其次,在微調(diào)(無(wú)論是否使用上下文示例(Chen et al., 2022))時(shí),我們可以獨(dú)立提供每個(gè)步驟的訓(xùn)練示例,因此模型只需學(xué)習(xí)執(zhí)行一個(gè)步驟。
圖1:逐次提示在DROP示例上的問(wèn)題分解和問(wèn)題回答階段的分解示例。模型在預(yù)測(cè)要詢問(wèn)的簡(jiǎn)單問(wèn)題和回答簡(jiǎn)單問(wèn)題之間迭代。
(注釋:圖1展示了逐次提示(Successive Prompting)方法在復(fù)雜問(wèn)題解答中的運(yùn)作原理。通過(guò)這個(gè)圖,我們可以理解逐次提示是如何將一個(gè)復(fù)雜問(wèn)題分解成一系列更簡(jiǎn)單的問(wèn)題,并逐步解決,直到獲得最終答案。以下是該圖片所表達(dá)原理的詳細(xì)講解:
圖1中的步驟解析:
1. 復(fù)雜問(wèn)題的提出:
圖中展示的復(fù)雜問(wèn)題是:“誰(shuí)在上半場(chǎng)踢了最遠(yuǎn)的射門?” 這類問(wèn)題通常涉及多個(gè)子問(wèn)題,并且直接回答可能很困難。
2. 問(wèn)題分解(Question Decomposition, QD):
使用逐次提示方法,模型首先會(huì)將這個(gè)復(fù)雜問(wèn)題分解為更簡(jiǎn)單的子問(wèn)題。例如,第一個(gè)子問(wèn)題是:“上半場(chǎng)有哪些射門?” 這是一個(gè)較簡(jiǎn)單的問(wèn)題,可以直接從給定的上下文中找到答案。
3. 回答簡(jiǎn)單問(wèn)題(Question Answering, QA):
對(duì)于每個(gè)分解后的簡(jiǎn)單問(wèn)題,模型會(huì)提供一個(gè)回答。例如,“上半場(chǎng)的射門分別是12碼、42碼和33碼?!?這個(gè)回答成為下一步操作的基礎(chǔ)。
4. 進(jìn)一步分解:
之后,模型會(huì)繼續(xù)根據(jù)之前的答案分解出下一個(gè)簡(jiǎn)單問(wèn)題,例如:“在12碼、42碼和33碼中,哪一個(gè)是最大的?” 這個(gè)問(wèn)題又更進(jìn)一步,將原始復(fù)雜問(wèn)題簡(jiǎn)化為可以直接處理的內(nèi)容。
5. 回答最終問(wèn)題:
模型最終通過(guò)回答“誰(shuí)踢了42碼的射門?”得出了答案——“Matt Bryant”。這時(shí)模型判斷已經(jīng)沒有更多的問(wèn)題需要提出,因此輸出最終答案。
圖1中的關(guān)鍵原理:
- 逐步分解與解決:
逐次提示的核心思想是通過(guò)迭代分解復(fù)雜問(wèn)題,將其逐步轉(zhuǎn)化為多個(gè)可以獨(dú)立解決的簡(jiǎn)單問(wèn)題。每一步的分解和回答都是獨(dú)立執(zhí)行的,這使得模型能夠在每個(gè)步驟中利用不同的上下文信息,從而提高復(fù)雜問(wèn)題的解答準(zhǔn)確性。
- 獨(dú)立的監(jiān)督與解耦:
通過(guò)將問(wèn)題分解和問(wèn)題回答的監(jiān)督解耦,模型能夠分別學(xué)習(xí)每個(gè)步驟的最佳解決方式。這意味著即使某些復(fù)雜問(wèn)題的子問(wèn)題非常相似,模型也能夠根據(jù)具體的任務(wù)在每一步選擇最相關(guān)的上下文示例進(jìn)行學(xué)習(xí)和回答。
- 模塊化與可插拔組件:
由于分解和回答步驟是分開的,這種方法允許在需要時(shí)使用專門設(shè)計(jì)的子模塊。例如,對(duì)于某些簡(jiǎn)單問(wèn)題,符號(hào)推理引擎可能比語(yǔ)言模型更有效,這樣的組件可以在逐次提示的框架下被利用。)
這種解耦還使我們能夠謹(jǐn)慎地將合成數(shù)據(jù)注入到學(xué)習(xí)過(guò)程中,例如幫助模型回答它以前無(wú)法回答的特定類型的簡(jiǎn)單問(wèn)題,或幫助模型分解它以前不知道如何分解的新推理組合。由于這些步驟是獨(dú)立的,我們可以隔離模型的失敗并開發(fā)合成方法來(lái)彌補(bǔ)這些不足。它還允許我們?cè)谶m當(dāng)?shù)臅r(shí)候,用其他專門設(shè)計(jì)的組件替換LM,以執(zhí)行符號(hào)推理(Khot et al., 2021; Segal et al., 2020; Jin et al., 2021)。
我們使用DROP數(shù)據(jù)集的少量示例變體(Dua et al., 2019)演示了逐次提示的效用,選擇了300個(gè)示例進(jìn)行訓(xùn)練(無(wú)論是微調(diào)還是上下文示例選擇)。這300個(gè)示例手動(dòng)標(biāo)注了簡(jiǎn)單的問(wèn)答對(duì)作為分解。我們發(fā)現(xiàn),在這種少量示例環(huán)境下,所有模型的表現(xiàn)都相當(dāng)?shù)?,因此我們開發(fā)了一個(gè)合成數(shù)據(jù)生成器,它從半結(jié)構(gòu)化的維基百科表格中生成復(fù)雜問(wèn)題及其分解(Yoran et al., 2021)。這些合成數(shù)據(jù)不僅提供了復(fù)雜問(wèn)題的監(jiān)督,還提供了中間步驟的監(jiān)督。我們將這些數(shù)據(jù)與來(lái)自DROP的300個(gè)(復(fù)雜)訓(xùn)練示例及其分解進(jìn)行整合。在這種少量示例環(huán)境中,我們表現(xiàn)最好的逐次提示模型與同等監(jiān)督下的最先進(jìn)模型相比,F(xiàn)1分?jǐn)?shù)提高了約5%。
2 分解復(fù)雜問(wèn)題
組合性閱讀理解的目標(biāo)是通過(guò)潛在的順序決策 z = z_1, z_2, ..., z_s 來(lái)回答在上下文段落 p 中給定的復(fù)雜問(wèn)題 q(合稱為 x),以得出最終答案 y。許多模型已經(jīng)被提出用來(lái)實(shí)現(xiàn)這一目標(biāo),并且這些模型在監(jiān)督和可解釋性方面有不同的程度。在像Chain-of-Thought (CoT, Wei et al., 2022) 這樣的提示方法中,潛在步驟是被監(jiān)督的、可解釋的句子;在其他模型中,這些潛在步驟可能是一個(gè)程序(Gupta et al., 2020; Chen et al., 2020),甚至只是模型中的(無(wú)監(jiān)督的)隱藏狀態(tài)(Segal et al., 2020; Andor et al., 2019)。
我們專注于那些采用上下文示例并生成離散的、語(yǔ)言編碼的 z 的模型,CoT是其中的主要代表。我們將CoT的一般形式表示為,給定輸入 x、語(yǔ)言模型編碼器 L 和從查詢索引 I 中獲得的 N 個(gè)上下文示例——每個(gè)示例都包含一個(gè)包含復(fù)雜問(wèn)題的段落 x_n、潛在步驟 z_n 和最終答案 y_n 這一三元組:
2.1 逐次提示
在逐次提示中,我們將每個(gè)潛在步驟表示為一對(duì)簡(jiǎn)單的問(wèn)題和答案 z_k = (q_k, a_k)(見圖1中的示例問(wèn)答對(duì)),這與CoT中將每個(gè)潛在步驟表示為陳述句不同。此外,CoT只查詢索引 I 來(lái)獲取上下文示例,并僅提示語(yǔ)言模型 L 一次來(lái)生成輸出。然而,在逐次提示中,我們將 z 分解為多個(gè)問(wèn)題和回答步驟,這使得我們有許多機(jī)會(huì)提示 L,并可能使用不同的、更適合每個(gè)步驟的上下文示例來(lái)生成簡(jiǎn)單問(wèn)題。這也使我們能夠在給定中間狀態(tài) z_k 的情況下重新編碼上下文,這在需要長(zhǎng)鏈引用的某些問(wèn)題中非常有用(例如,圖3中的排序計(jì)數(shù)示例)。我們可以將逐次提示的一般形式寫為:
在這個(gè)一般形式中有三種模型輸出:中間問(wèn)題 q_k、中間答案 a_k 和最終答案 y。我們將第一種輸出類型稱為問(wèn)題分解(QD),第二種稱為問(wèn)題回答(QA)。我們將最終答案預(yù)測(cè)視為問(wèn)題分解的一種特殊情況,其中模型決定不再需要進(jìn)一步分解,并輸出最終答案,因此我們?cè)趩?wèn)題分解和問(wèn)題回答之間迭代交替,直到模型終止。
2.2 訓(xùn)練范式
我們迄今為止描述的逐次提示是在僅提供上下文示例的情況下進(jìn)行的,因此不進(jìn)行模型訓(xùn)練。然而,逐次提示也可以與模型微調(diào)相結(jié)合,在這種情況下,每個(gè)中間輸出都被視為 L 的訓(xùn)練示例。在本節(jié)中,我們首先描述了如何在每個(gè)步驟選擇上下文示例,然后詳細(xì)說(shuō)明如何使用這些示例進(jìn)行模型微調(diào)。
上下文學(xué)習(xí)
在上下文學(xué)習(xí)中,一小部分訓(xùn)練示例直接作為提示提供給大型語(yǔ)言模型,然后再進(jìn)行測(cè)試輸入。這些示例是根據(jù)它們與測(cè)試輸入的相似性從索引中選擇的。對(duì)于逐次提示,我們創(chuàng)建了兩個(gè)索引:I_D 用于查找與問(wèn)題分解(QD)相關(guān)的示例,I_A 用于查找與問(wèn)題回答(QA)相關(guān)的示例。索引 I_D 包含在每一步 k 的部分分解鏈,用于展示如何為每個(gè)復(fù)雜問(wèn)題生成下一個(gè)問(wèn)題。索引 I_A 包含訓(xùn)練數(shù)據(jù)中所有復(fù)雜問(wèn)題的所有簡(jiǎn)單問(wèn)答對(duì)。
在QD階段,索引 I_D 會(huì)根據(jù)復(fù)雜的測(cè)試問(wèn)題 q 和當(dāng)前的步驟編號(hào) k 進(jìn)行查詢,以選擇與生成下一步問(wèn)題相關(guān)的演示。在QA階段,索引 I_A 會(huì)根據(jù)在QD階段生成的簡(jiǎn)單問(wèn)題 q_k 進(jìn)行查詢,以選擇相關(guān)的簡(jiǎn)單問(wèn)答對(duì)。圖2展示了在每個(gè)步驟如何逐步執(zhí)行上下文學(xué)習(xí),直到QD輸出特殊短語(yǔ)“沒有更多問(wèn)題需要問(wèn)”,并給出最終答案。
逐次提示允許QA階段訪問(wèn)從復(fù)雜問(wèn)題中派生的簡(jiǎn)單問(wèn)題,這些問(wèn)題本來(lái)不會(huì)被Chain-of-Thought提示檢索到,因?yàn)閺谋砻嫔峡此鼈兣c留出的復(fù)雜問(wèn)題不相似,盡管它們共享相似的子問(wèn)題。
圖2:使用上下文學(xué)習(xí)的逐次提示示例。用于監(jiān)督和回答復(fù)雜問(wèn)題的選擇示例,以及預(yù)置上下文段落(為簡(jiǎn)化說(shuō)明省略)由模型編碼,以在問(wèn)題分解(QD)和問(wèn)題回答(QA)階段生成問(wèn)題和答案。在微調(diào)期間,僅以獨(dú)立同分布(i.i.d.)的方式使用訓(xùn)練監(jiān)督來(lái)學(xué)習(xí)QD和QA模型。
(注釋:圖2展示了逐次提示(Successive Prompting)方法如何通過(guò)上下文學(xué)習(xí)來(lái)逐步分解和回答復(fù)雜問(wèn)題的具體操作過(guò)程。這張圖通過(guò)具體示例,說(shuō)明了在上下文學(xué)習(xí)和模型微調(diào)中的逐次提示是如何工作的。以下是圖2所表達(dá)原理的詳細(xì)講解:
圖2中的步驟解析:
1. 復(fù)雜問(wèn)題的提出:
逐次提示方法首先接收一個(gè)復(fù)雜問(wèn)題,并且還會(huì)預(yù)置相關(guān)的上下文段落(在圖示中為了簡(jiǎn)化說(shuō)明,這些段落被省略)。復(fù)雜問(wèn)題可能涉及多個(gè)子任務(wù)或步驟,無(wú)法通過(guò)一次查詢直接回答。
2. 問(wèn)題分解階段(Question Decomposition, QD):
在這個(gè)階段,模型會(huì)根據(jù)當(dāng)前的復(fù)雜問(wèn)題選擇相關(guān)的上下文示例,并生成第一個(gè)簡(jiǎn)單問(wèn)題。例如,假設(shè)復(fù)雜問(wèn)題是“巴斯的第二次射門比第一次長(zhǎng)多少碼?”模型可能首先提出一個(gè)簡(jiǎn)單問(wèn)題:“巴斯的第二次射門是多少碼?”這是整個(gè)解答過(guò)程中的第一個(gè)子問(wèn)題。
3. 回答簡(jiǎn)單問(wèn)題(Question Answering, QA):
一旦模型生成了簡(jiǎn)單問(wèn)題,它會(huì)進(jìn)一步利用相關(guān)的上下文信息,生成該簡(jiǎn)單問(wèn)題的答案。在這個(gè)例子中,答案可能是“39碼”。這個(gè)回答會(huì)成為下一步操作的基礎(chǔ)。
4. 迭代分解與解答:
在生成并回答了第一個(gè)簡(jiǎn)單問(wèn)題后,模型會(huì)繼續(xù)進(jìn)行下一輪的分解和解答。例如,在確定了第二次射門是39碼之后,模型會(huì)生成下一個(gè)問(wèn)題:“巴斯的第一次射門是多少碼?”并回答它。這個(gè)過(guò)程不斷迭代,直到所有簡(jiǎn)單問(wèn)題被解答,最終復(fù)雜問(wèn)題被完全解決。
5. 最終答案的生成:
當(dāng)模型認(rèn)為沒有更多問(wèn)題需要提出時(shí),它會(huì)結(jié)合之前的所有答案,生成最終答案。例如,當(dāng)模型得出第一次射門是28碼時(shí),它會(huì)計(jì)算出差值(39碼-28碼=11碼),并將其作為最終答案。
圖2中的關(guān)鍵原理:
- 逐步迭代解答:
逐次提示的核心思想是通過(guò)迭代步驟逐步解答問(wèn)題。在每一個(gè)步驟中,模型僅處理一個(gè)簡(jiǎn)單的問(wèn)題,而不是試圖直接解決整個(gè)復(fù)雜問(wèn)題。這種方法允許模型在每一步利用新的上下文信息,從而提高解答的準(zhǔn)確性。
- 上下文學(xué)習(xí)中的示例選擇:
在問(wèn)題分解和問(wèn)題回答的每個(gè)階段,模型都會(huì)查詢一個(gè)索引來(lái)選擇最相關(guān)的上下文示例。這些示例并不是一開始就固定的,而是根據(jù)每個(gè)簡(jiǎn)單問(wèn)題動(dòng)態(tài)選擇的。這種靈活性使得模型可以更好地適應(yīng)具體問(wèn)題的分解和解答需求。
- 獨(dú)立同分布的監(jiān)督(i.i.d.):
在模型微調(diào)期間,問(wèn)題分解(QD)和問(wèn)題回答(QA)的學(xué)習(xí)是分開進(jìn)行的,并且是以獨(dú)立同分布的方式進(jìn)行監(jiān)督的。這意味著模型在每個(gè)步驟都僅關(guān)注當(dāng)前步驟的任務(wù),而不需要考慮全局的復(fù)雜性。
總結(jié):
圖2的原理展示了逐次提示方法在上下文學(xué)習(xí)和模型微調(diào)中的操作流程。通過(guò)將復(fù)雜問(wèn)題分解為多個(gè)簡(jiǎn)單問(wèn)題,并在每個(gè)階段動(dòng)態(tài)選擇相關(guān)示例進(jìn)行學(xué)習(xí),模型能夠更準(zhǔn)確地逐步解答復(fù)雜問(wèn)題。)
模型微調(diào)
在模型微調(diào)中,我們使用基于T5(Raffel et al., 2020)的序列到序列模型。這些模型通常使用控制代碼在多任務(wù)設(shè)置中訓(xùn)練,以在QD和QA任務(wù)之間切換,并共享模型參數(shù)。我們采用并擴(kuò)展了文本模塊化網(wǎng)絡(luò)(TMNs,Khot et al., 2021)中引入的控制代碼,用于訓(xùn)練我們的合成數(shù)據(jù)。TMNs在其可處理的操作類型方面有所限制,因?yàn)樗鼈儫o(wú)法處理超出一階推理的問(wèn)題。我們使用合成生成的數(shù)據(jù),允許我們處理DROP中更高階推理問(wèn)題。因?yàn)槲覀冋谖⒄{(diào)模型,所以我們可以使用特殊的標(biāo)記來(lái)表示問(wèn)題分解和其他分隔符,而不是圖2中顯示的自然語(yǔ)言提示,盡管內(nèi)容相同。每個(gè)步驟使用的特定標(biāo)記列在附錄A中。
專用模塊
逐次提示還允許我們使用專門的子模塊來(lái)解決不同的QA任務(wù),因?yàn)槲覀儾辉僖远说蕉说姆绞綀?zhí)行QD和QA任務(wù)。像計(jì)數(shù)、差異、排序等算術(shù)運(yùn)算對(duì)語(yǔ)言模型來(lái)說(shuō)可能很有挑戰(zhàn)性。因此,我們遵循Khot等人(2021年)的做法,構(gòu)建了一個(gè)簡(jiǎn)單的數(shù)學(xué)子模塊用于QA,它解析生成的簡(jiǎn)單問(wèn)題的符號(hào)運(yùn)算類型及其參數(shù),然后以確定的方式執(zhí)行它們。如果生成的簡(jiǎn)單問(wèn)題無(wú)法解析為數(shù)學(xué)運(yùn)算,我們會(huì)應(yīng)用語(yǔ)言模型來(lái)解決它。
3 合成數(shù)據(jù)集
任何提示大型語(yǔ)言模型(LM)生成中間推理步驟來(lái)回答復(fù)雜問(wèn)題的方法都需要一定量的這些推理步驟的監(jiān)督數(shù)據(jù)。這類標(biāo)注可能非常昂貴,并且通常需要專家知識(shí)。之前的工作通常依賴于少量手工編寫的示例分解。我們發(fā)現(xiàn),對(duì)于像DROP這樣復(fù)雜多樣的數(shù)據(jù)集,這樣的小規(guī)模集合會(huì)導(dǎo)致模型表現(xiàn)非常差,即使對(duì)于大型模型也是如此。
為了緩解這些數(shù)據(jù)問(wèn)題,我們提出了一種方法,使用易于解析的半結(jié)構(gòu)化數(shù)據(jù)來(lái)合成生成復(fù)雜問(wèn)題及其分解。我們展示了如何使用這些領(lǐng)域外的合成數(shù)據(jù)來(lái)啟動(dòng)模型的學(xué)習(xí)過(guò)程,以便它在使用有限的領(lǐng)域內(nèi)監(jiān)督數(shù)據(jù)進(jìn)行微調(diào)時(shí)表現(xiàn)得更好。
生成過(guò)程:受到Y(jié)oran等人(2021年)的啟發(fā),我們使用了來(lái)自英文維基百科的半結(jié)構(gòu)化數(shù)據(jù)表格,這些數(shù)據(jù)表格非常豐富。我們采用精心設(shè)計(jì)的模板,將表格中的行轉(zhuǎn)換為段落,并使用單列標(biāo)題來(lái)創(chuàng)建一階簡(jiǎn)單問(wèn)題,使用多列組合來(lái)生成更高階的復(fù)雜問(wèn)題。我們?yōu)?0種簡(jiǎn)單操作生成了數(shù)據(jù):計(jì)數(shù)(COUNT)、前k項(xiàng)(TOP(k))、后k項(xiàng)(BOTTOM(k))、過(guò)濾(FILTER)、求和(SUM)、比較(COMPARISON)、差異(DIFFERENCE)、否定(NEGATION)、收集(GATHER)和交集(INTERSECTION)。
我們?cè)诳赡艿那闆r下生成了一階操作的更高階組合。圖3展示了使用表1作為上下文的幾個(gè)簡(jiǎn)單操作的更高階組合示例。完整的所有分解列表見附錄A。根據(jù)模型的不同,我們使用算術(shù)操作的符號(hào)或自然語(yǔ)言版本。如果我們使用的是LM來(lái)執(zhí)行算術(shù)操作,我們會(huì)輸出自然語(yǔ)言;如果我們使用的是單獨(dú)的符號(hào)推理引擎,我們會(huì)輸出符號(hào)操作。我們總共生成了大約141K個(gè)復(fù)雜問(wèn)題,這些問(wèn)題生成了525K個(gè)用于問(wèn)題分解(QD)的示例和257K個(gè)用于問(wèn)題回答(QA)的示例。詳見附錄A的更多數(shù)據(jù)集統(tǒng)計(jì)信息。
4 實(shí)驗(yàn)與結(jié)果
DROP數(shù)據(jù)集包含多種推理組合,這些組合的分布并不均勻。為了公平地表示DROP示例,我們首先使用在QQP數(shù)據(jù)集(Reimers和Gurevych, 2019)上訓(xùn)練的句子嵌入方法對(duì)這些示例進(jìn)行嵌入。然后,我們使用余弦相似性為每個(gè)訓(xùn)練示例找到最接近的50個(gè)鄰居問(wèn)題。每個(gè)訓(xùn)練問(wèn)題與其鄰居之間的連接圖被用來(lái)通過(guò)頂點(diǎn)覆蓋算法獲得300個(gè)問(wèn)題,這些問(wèn)題覆蓋了大多數(shù)訓(xùn)練數(shù)據(jù)。我們手動(dòng)標(biāo)注了這300個(gè)示例,使用與我們的合成數(shù)據(jù)相同的格式分解成問(wèn)答對(duì)(見圖3)。對(duì)于合成示例,由于我們已經(jīng)知道推理類型,因此我們從每種推理類型中均勻抽樣示例進(jìn)行演示。
4.1 上下文學(xué)習(xí)
設(shè)置
我們使用帶有基于QQP的句子嵌入(Reimers和Gurevych, 2019)的Faiss索引來(lái)索引所有問(wèn)題。我們使用GPT-J(6B)模型,這是我們可以用包含6個(gè)上下文示例的提示進(jìn)行使用的最大公開可用模型。
結(jié)果
在表2中,我們比較了不帶任何提示的語(yǔ)言模型(標(biāo)準(zhǔn)方法)、帶有鏈?zhǔn)剿季S提示(CoT)和逐次提示的性能。我們觀察到,當(dāng)只有合成數(shù)據(jù)可用時(shí),逐次提示比CoT提高了3.5%的F1分?jǐn)?shù),而當(dāng)有合成數(shù)據(jù)和DROP的300個(gè)注釋時(shí),逐次提示的F1分?jǐn)?shù)提高了4.3%。在開發(fā)集上的最佳逐次提示版本(合成+DROP)在測(cè)試集上的F1分?jǐn)?shù)為30.6%。我們還進(jìn)行了一個(gè)消融實(shí)驗(yàn),將符號(hào)計(jì)算器替換為語(yǔ)言模型,結(jié)果發(fā)現(xiàn)性能下降了1.5%的F1分?jǐn)?shù)。這進(jìn)一步表明,模塊化方法優(yōu)于試圖解決所有任務(wù)的單一模型。
4.2 模型微調(diào)
設(shè)置
我們使用基于T5的序列到序列模型,這是UnifiedQA(Khashabi et al., 2020)的大型版本,并以多任務(wù)方式訓(xùn)練了共享的問(wèn)題分解(QD)和回答模型(QA)。我們使用附錄A中描述的格式來(lái)提示UnifiedQA。對(duì)于符號(hào)問(wèn)題,我們使用一個(gè)簡(jiǎn)單的計(jì)算器,它解析生成問(wèn)題中的運(yùn)算符和參數(shù),并對(duì)檢測(cè)到的參數(shù)執(zhí)行離散運(yùn)算。
為了防止模型學(xué)習(xí)錯(cuò)誤的步驟,我們使用對(duì)比估計(jì)(Smith和Eisner, 2005)。特別是,我們首先訓(xùn)練模型兩個(gè)周期,通過(guò)交叉熵?fù)p失生成輸出序列(簡(jiǎn)單問(wèn)題或答案)。然后我們繼續(xù)訓(xùn)練,添加一個(gè)輔助損失項(xiàng),這一損失項(xiàng)增加生成正確子答案的中間子問(wèn)題的可能性,而減少生成錯(cuò)誤子答案的可能性(Dua et al., 2021)。我們?cè)诿恳徊阶疃嗖蓸?個(gè)負(fù)樣本。我們使用HuggingFace的transformers庫(kù)來(lái)訓(xùn)練我們的模型,學(xué)習(xí)率為5e-5,最大輸入長(zhǎng)度為768。
由于維基百科中的上下文表格類型不同,合成數(shù)據(jù)集在不同推理類型中的分布不均勻。為了使不同推理類型的問(wèn)題有一個(gè)平衡的表示,我們采用動(dòng)態(tài)采樣策略(Gottumukkala等,2020),即在每個(gè)周期開始時(shí),從所有推理類型中選擇80,000個(gè)實(shí)例,按其在上一周期中的表現(xiàn)下降比例分配實(shí)例數(shù)量。對(duì)于第一個(gè)周期,我們按照每種推理類型的原始大小進(jìn)行采樣。在推理期間,我們使用大小為5的束搜索來(lái)生成分解,在QD和QA階段之間切換,直到QD達(dá)到分解結(jié)束標(biāo)記“EOQ”或達(dá)到我們?cè)O(shè)置的最大步驟數(shù)(10步)。
基線模型
我們與多種符號(hào)和非符號(hào)模型進(jìn)行了比較。作為非符號(hào)基線模型,我們使用了UnifiedQA(Khashabi等,2020),該模型在大量現(xiàn)有問(wèn)答數(shù)據(jù)集上進(jìn)行了預(yù)訓(xùn)練,還包括了在合成生成的組合QA對(duì)上預(yù)訓(xùn)練的PReasM模型(Yoran等,2021)。我們還包括了一個(gè)帶有符號(hào)組件的基線模型,TASE(Segal等,2020)。該模型(以及類似的其他模型,如Jin等,2021;Andor等,2019)能夠執(zhí)行連續(xù)和離散運(yùn)算的組合,這是DROP所必需的。TASE無(wú)需以特定語(yǔ)法表達(dá)分解,并且可以處理自然語(yǔ)言。我們選擇了這個(gè)模型,因?yàn)樗谕暾腄ROP數(shù)據(jù)集上接近最先進(jìn)的性能,并且有公開的代碼。
結(jié)果
在表3中,我們使用DROP開發(fā)集比較了在三種設(shè)置下不同符號(hào)和非符號(hào)模型的表現(xiàn):(1)不使用DROP的任何訓(xùn)練數(shù)據(jù)(0-shot),(2)僅使用300個(gè)DROP示例中的問(wèn)答監(jiān)督,和(3)同時(shí)使用300個(gè)DROP示例的問(wèn)答監(jiān)督和分解。在這些設(shè)置中的每一個(gè)中,我們可以選擇是否使用我們生成的合成數(shù)據(jù)進(jìn)行訓(xùn)練。
我們觀察到,領(lǐng)域外合成數(shù)據(jù)普遍提高了模型性能,而這種提高在TASE模型中最為顯著,接近20%的絕對(duì)提升。在沒有合成數(shù)據(jù)的情況下,PReasM是表現(xiàn)最好的基線模型,但在有合成數(shù)據(jù)時(shí),TASE超過(guò)了PReasM。此外,毫無(wú)疑問(wèn),從0-shot到復(fù)雜QA對(duì),再到分解的監(jiān)督量增加,模型表現(xiàn)也普遍提高。
最終,我們的方法,即結(jié)合符號(hào)推理引擎的微調(diào)逐次提示模型,取得了最佳表現(xiàn),與具有類似監(jiān)督的最先進(jìn)模型相比(即TASE+合成數(shù)據(jù)加分解),F(xiàn)1分?jǐn)?shù)提高了5.4。在我們最終的最佳模型(帶分解的逐次提示)的測(cè)試集中,我們觀察到F1分?jǐn)?shù)為50.2,超過(guò)了具有類似監(jiān)督的最先進(jìn)模型(45.1 F1)5.1%。
總的來(lái)說(shuō),學(xué)會(huì)將復(fù)雜問(wèn)題分解為簡(jiǎn)單QA對(duì)的方法在處理新領(lǐng)域的復(fù)雜問(wèn)題時(shí)適應(yīng)性很好,即使在沒有領(lǐng)域內(nèi)分解監(jiān)督(帶分解的逐次提示:51.3 F1)或僅有少量復(fù)雜QA監(jiān)督(沒有任何分解)的情況下也是如此。如果我們僅有有限的復(fù)雜QA監(jiān)督(沒有任何分解),則不可解釋的符號(hào)模型表現(xiàn)最好(TASE + 合成數(shù)據(jù)沒有分解:44.1)。這有兩個(gè)原因。首先,這類模型可以捕獲領(lǐng)域特定的答案先驗(yàn),這可能導(dǎo)致不錯(cuò)的留出集表現(xiàn)(Dua等,2020;Agrawal等,2018)。其次,根據(jù)上下文,有時(shí)將復(fù)雜問(wèn)題分解為QA對(duì)并不容易。
4.3 上下文學(xué)習(xí)與微調(diào)的比較
為了理解逐次提示方法在上下文學(xué)習(xí)和微調(diào)之間的性能差距,我們對(duì)QD和QA模塊分別進(jìn)行了上下文學(xué)習(xí)和微調(diào)的消融實(shí)驗(yàn)。我們發(fā)現(xiàn),在回答結(jié)果為列表的簡(jiǎn)單問(wèn)題時(shí),上下文學(xué)習(xí)表現(xiàn)較差——這對(duì)于DROP數(shù)據(jù)集尤其重要,因?yàn)榉?hào)聚合通常應(yīng)用于答案列表。當(dāng)使用經(jīng)過(guò)微調(diào)的QA模型時(shí),我們看到與上下文QD模型相比,F(xiàn)1分?jǐn)?shù)提高了約10%。此外,由于最終答案的表現(xiàn)依賴于QA模型的表現(xiàn),因此除非QA模型能夠處理QD模型生成的分解,否則使用更好的QD模型(微調(diào)的)對(duì)整體表現(xiàn)的提升不大。
4.4 定性示例
為了評(píng)估分解后的問(wèn)答對(duì)的正確性,我們手動(dòng)分析了在開發(fā)集上使用上下文學(xué)習(xí)(僅DROP)和模型微調(diào)(少量樣本)生成的部分預(yù)測(cè)結(jié)果。我們通過(guò)隨機(jī)抽取50個(gè)正確的預(yù)測(cè)來(lái)確定不正確的分解結(jié)果在何種情況下仍能產(chǎn)生正確的答案。我們觀察到,QD階段的準(zhǔn)確率為上下文學(xué)習(xí)88%,微調(diào)模型為96%。分解錯(cuò)誤的主要原因是分解后的問(wèn)題與原始問(wèn)題相同。例如,“誰(shuí)踢了最長(zhǎng)的射門?”有時(shí)可以在不分解問(wèn)題的情況下直接回答,如果段落中只提到了一次射門的話。
我們還抽取了50個(gè)錯(cuò)誤的預(yù)測(cè),以確定上下文學(xué)習(xí)和微調(diào)設(shè)置下預(yù)測(cè)錯(cuò)誤的原因。我們發(fā)現(xiàn),最終預(yù)測(cè)錯(cuò)誤主要有三類原因:錯(cuò)誤的QA模型預(yù)測(cè)、錯(cuò)誤的下一個(gè)問(wèn)題預(yù)測(cè)(QD)以及超出范圍的推理類型。對(duì)于上下文學(xué)習(xí)和微調(diào)模型,QA模型對(duì)簡(jiǎn)單問(wèn)題輸出錯(cuò)誤答案的比例分別為40%和22%。第二類錯(cuò)誤,由于分解不正確導(dǎo)致的,在上下文學(xué)習(xí)和微調(diào)設(shè)置下分別占30%。最后一類錯(cuò)誤,由于合成生成的注釋未覆蓋的組合問(wèn)題,在上下文學(xué)習(xí)和微調(diào)設(shè)置下分別占28%和46%。
在圖4中,我們展示了一些正確和錯(cuò)誤的預(yù)測(cè),并指出了逐次提示方法的優(yōu)點(diǎn)和缺點(diǎn)。逐次提示的主要優(yōu)點(diǎn)是通過(guò)分解問(wèn)題,我們能夠?yàn)镼A模型提供更好的監(jiān)督。因此,在回答“上半場(chǎng)雙方共踢了多少次射門?”時(shí),它能夠正確識(shí)別出上半場(chǎng)的射門,而不是像CoT那樣返回整個(gè)比賽的射門次數(shù)。
逐次提示相對(duì)于微調(diào)模型(無(wú)論使用何種提示方式)的一個(gè)局限性是,示例的選擇僅基于問(wèn)題本身,而忽略了上下文。例如,DROP中有“百分比上有多少人不是德國(guó)人?”這樣的問(wèn)題,我們首先需要回答“百分比上有多少人是德國(guó)人?”,然后進(jìn)行取反操作(即從100中減去)。單詞“不是”會(huì)影響示例查找,選擇涉及否定的分解,即使問(wèn)題本身需要的是不同的操作。
逐次提示的另一個(gè)局限性是,有時(shí)難以分解問(wèn)題,尤其是當(dāng)問(wèn)題涉及從段落中進(jìn)行隱含推理時(shí)。例如,對(duì)于“韓國(guó)移民首先從哪一個(gè)港口出發(fā),是仁川港還是韋拉克魯斯港?”來(lái)說(shuō),從句子“之后他們乘火車前往韋拉克魯斯港”中顯式定義比較風(fēng)格的分解是困難的。
5 相關(guān)工作
提示方法
提示作為測(cè)試大型語(yǔ)言模型(LM)推理能力的一種方法被引入(Brown et al., 2020)。在隨后的工作中(Schick, 2022;Chowdhery等, 2022;Marasovi?等, 2021),提示技術(shù)被用作監(jiān)督模型決策的一種機(jī)制,通過(guò)提供少量示例作為條件上下文來(lái)引導(dǎo)其對(duì)未見過(guò)的樣本進(jìn)行預(yù)測(cè)。諸如鏈?zhǔn)剿季S推理(Chain-of-Thought reasoning, Wei等, 2022;Zelikman等, 2022)等工作,尤其專注于組合性問(wèn)題,在這些工作中,它們提供了推理鏈作為演示。在同期的工作中,最少到最多提示(Least-to-Most prompting, Zhou等, 2022)與我們的觀點(diǎn)相似,即將問(wèn)題分解為子問(wèn)題。然而,在逐次提示中,問(wèn)題分解和回答階段是交替進(jìn)行的,而不是像“最少到最多”那樣先將問(wèn)題分解成子問(wèn)題,然后按順序執(zhí)行。在我們的方法中,下一個(gè)問(wèn)題的預(yù)測(cè)可以訪問(wèn)之前已回答的子問(wèn)題,這在需要長(zhǎng)鏈引用的問(wèn)題中非常有用。其他同時(shí)期的工作(Press等, 2022;Khot等, 2022)使用了非常大的語(yǔ)言模型(其規(guī)模是我們使用的模型的兩倍多),并展示了更好的少樣本泛化能力。像Perez等人(2021年)的工作展示了擁有合適的上下文示例對(duì)下游任務(wù)表現(xiàn)的重要性,進(jìn)而促使了學(xué)習(xí)檢索相關(guān)上下文示例的工作(Rubin等, 2021)。
非符號(hào)方法
大多數(shù)非符號(hào)方法是基于大量問(wèn)答數(shù)據(jù)訓(xùn)練的序列到序列模型(Khashabi等, 2020;Yoran等, 2021)。
符號(hào)方法
神經(jīng)模塊網(wǎng)絡(luò)等方法將復(fù)雜問(wèn)題解析為預(yù)先設(shè)定的語(yǔ)法,并學(xué)習(xí)神經(jīng)組件來(lái)處理符號(hào)數(shù)學(xué)運(yùn)算(Gupta等, 2020;Chen等, 2020;Nye等, 2021),這些組件會(huì)被遞歸執(zhí)行。在DROP數(shù)據(jù)集上,最先進(jìn)的模型使用了BERT-based上下文模型與一個(gè)計(jì)算器相結(jié)合,這個(gè)計(jì)算器執(zhí)行離散運(yùn)算(Andor等, 2019;Segal等, 2020;Hu等, 2019)。類似于文本模塊化網(wǎng)絡(luò)(TMNs, Khot等, 2021)和MRKL(Karpas等, 2022)的工作與我們的方法最為接近。然而,它們?cè)谀軌蚧卮鸬暮?jiǎn)單問(wèn)題類型(僅限單跨度)和能夠執(zhí)行的推理復(fù)雜度(僅限一階)方面有所限制。此外,TMNs使用一個(gè)分類器來(lái)對(duì)生成的鏈模塊進(jìn)行評(píng)分并過(guò)濾掉不正確的問(wèn)題分解,而我們使用對(duì)比估計(jì)來(lái)學(xué)習(xí)更好的問(wèn)題分解器,因此不需要鏈評(píng)分器。
6 結(jié)論
我們提出了一種逐次分解復(fù)雜問(wèn)題為簡(jiǎn)單問(wèn)答對(duì)的方法,這種方法允許模塊化的QD和QA系統(tǒng)可以獨(dú)立進(jìn)行訓(xùn)練和查詢。在進(jìn)行上下文學(xué)習(xí)時(shí),我們展示了逐次提示比鏈?zhǔn)剿季S提示提高了4.6%的F1分?jǐn)?shù)。當(dāng)僅用一個(gè)能夠處理列表類型問(wèn)題的微調(diào)QA模塊替換上下文QA模塊時(shí),我們進(jìn)一步將整體表現(xiàn)提高了9.5%的F1分?jǐn)?shù)。我們認(rèn)為,將任務(wù)分解并分配給最合適的模型,無(wú)論是大型語(yǔ)言模型還是量身定制的組件,都比試圖讓一個(gè)大型語(yǔ)言模型獨(dú)立解決整個(gè)任務(wù)更為有效。逐次提示展示了這種分解和分配任務(wù)的一種實(shí)現(xiàn)方式。
局限性
我們提出了一種通過(guò)迭代查找并填充信息需求來(lái)分解復(fù)雜問(wèn)題為可解釋的簡(jiǎn)單問(wèn)答對(duì)的方法。這種執(zhí)行復(fù)雜任務(wù)的概念非常通用,但我們僅展示了在一個(gè)特定環(huán)境下的一個(gè)具體版本的適用性。在更廣泛地應(yīng)用逐次提示時(shí)可能會(huì)面臨許多挑戰(zhàn)。最大的挑戰(zhàn)是,這種方法至少需要一些分解數(shù)據(jù),而這些數(shù)據(jù)可能難以甚至不可能獲得。有些復(fù)雜問(wèn)題并不容易被分解,而某些領(lǐng)域可能很難為其編寫合成數(shù)據(jù)生成器。我們能夠生成覆蓋DROP大多數(shù)推理類型的合成數(shù)據(jù),但其他類型的復(fù)雜問(wèn)題可能不在我們的生成器覆蓋范圍內(nèi)(例如,涉及常識(shí)或因果推理的問(wèn)題)。
選擇分解的粒度也是一個(gè)重要的難點(diǎn)。如果一個(gè)大型預(yù)訓(xùn)練模型可以直接回答“巴斯的第二次射門是多少碼?”這樣的復(fù)雜問(wèn)題,我們應(yīng)當(dāng)讓模型直接回答,而不是試圖進(jìn)一步分解它。因此,分解的合適粒度取決于基礎(chǔ)模型的能力,而這些能力隨著更新和更大的預(yù)訓(xùn)練模型的推出而迅速變化。有可能未來(lái)的模型版本不再需要分解來(lái)回答我們合成數(shù)據(jù)生成器覆蓋的復(fù)雜問(wèn)題,這將使我們的生成器過(guò)時(shí)。然而,預(yù)訓(xùn)練模型在不久的將來(lái)可能仍無(wú)法處理所有復(fù)雜場(chǎng)景,因此逐次提示和生成合成數(shù)據(jù)以彌補(bǔ)推理差距的想法仍應(yīng)具有適用性,即使我們的具體應(yīng)用可能變得過(guò)時(shí)。
此外,這種方法也增加了回答復(fù)雜問(wèn)題的計(jì)算要求,因?yàn)樗辉僦粚?duì)一個(gè)大型語(yǔ)言模型發(fā)出一次查詢,而是多次查詢才能回答一個(gè)問(wèn)題。
?
本文轉(zhuǎn)載自公眾號(hào)AIRoobt ,作者:AIRoobt
