孫 瑜,顏 航,邱錫鵬,王 定,牟小峰,黃萱菁
(1.復(fù)旦大學(xué) 計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,上海 200433;2. 美的集團(tuán)AI創(chuàng)新中心,廣東 佛山 528311)
大規(guī)模語言模型(Large Language Models, LLMs),如GPT-3系列[1-3],由于其不依賴下游數(shù)據(jù)微調(diào)即可取得較好的性能表現(xiàn)[4-5],在自然語言處理(Natural Language Processing, NLP)社區(qū)引起了熱烈討論。具體而言,大規(guī)模語言模型只需要使用適當(dāng)?shù)奶崾?Prompt),就可以在零樣本(Zero-shot)設(shè)定下取得不錯的性能[4,6];對于少樣本(few-shot)問題,大規(guī)模語言模型可以利用上下文學(xué)習(xí)(In-context Learning, ICL)[1,7]或者思維鏈(Chain-of-Thought, COT)[8]提示來提高性能。
盡管過去的文獻(xiàn)[1,5]已經(jīng)證明了大規(guī)模語言模型在自由生成任務(wù)和多項(xiàng)選擇任務(wù)中表現(xiàn)十分出色,但他們在結(jié)構(gòu)化抽取任務(wù),如命名實(shí)體識別(Named Entity Recognition, NER)中仍然面臨挑戰(zhàn)[9]。目前,沒有工作對大規(guī)模語言模型在命名實(shí)體識別上的能力進(jìn)行全面的研究,因此,本文設(shè)計(jì)了一系列實(shí)驗(yàn),深入研究了InstructGPT在命名實(shí)體識別任務(wù)上的表現(xiàn)及面臨的挑戰(zhàn)。具體地,本文主要回答了下面兩個問題:
(1) InstructGPT在不同設(shè)定和不同領(lǐng)域上表現(xiàn)得怎么樣?為了回答這個問題,本文分別在生物醫(yī)學(xué)領(lǐng)域和通用領(lǐng)域上,進(jìn)行了零樣本學(xué)習(xí)和少樣本學(xué)習(xí)。其中,通用領(lǐng)域在中英文的常規(guī)數(shù)據(jù)集和英文的嵌套數(shù)據(jù)集上都進(jìn)行了實(shí)驗(yàn)。為了增加可信度,本文沿用了之前工作[5]中采用的提示作為基準(zhǔn)來解決零樣本的命名實(shí)體識別任務(wù)。除此之外,由于抽取實(shí)體本質(zhì)上是結(jié)構(gòu)化抽取任務(wù),模型的輸出需要滿足一定的格式才能從中成功地解析出實(shí)體。為了實(shí)現(xiàn)這個要求,本文設(shè)計(jì)了一個結(jié)構(gòu)化提示,從而指導(dǎo)InstructGPT生成格式化的文本。零樣本場景下兩種提示的例子如圖1所示。在少樣本設(shè)定下,本文探索了上下文學(xué)習(xí)和思維鏈兩種方法。上下文學(xué)習(xí)時,本文沿用了之前廣泛使用的提示方法[9]。目前的思維鏈方法主要在推理任務(wù)中使用,本文是第一個將該方法引入到命名實(shí)體識別任務(wù)中的。少樣本場景下的兩種提示的例子如圖2所示。結(jié)果顯示,InstructGPT無論在生物醫(yī)學(xué)領(lǐng)域還是通用領(lǐng)域的數(shù)據(jù)上的表現(xiàn),都和微調(diào)模型的表現(xiàn)有巨大的差距。其中,在零樣本命名實(shí)體識別任務(wù)上,InstructGPT僅能達(dá)到微調(diào)模型性能的11%到56%,在少樣本命名實(shí)體識別上,InstructGPT的性能最多達(dá)到72%。
圖2 少樣本命名實(shí)體識別提示的例子
(2) 為什么InstructGPT在命名實(shí)體識別任務(wù)上表現(xiàn)得不理想?InstructGPT在很多生成式的任務(wù)上的表現(xiàn)與微調(diào)模型性能相近,甚至更好。然而,InstructGPT卻在命名實(shí)體識別上沒有達(dá)到預(yù)期效果。為了探究阻礙InstructGPT成功抽取實(shí)體的原因,本文從兩個方面來仔細(xì)評估了模型的輸出: 無效生成和虛假預(yù)測。無效生成包括輸出無法成功匹配解析格式的“格式無效”,和輸出的實(shí)體片段不在輸入句子中的“片段無效”。結(jié)果表明,10%~70%的輸出句子存在無效生成的問題,嚴(yán)重影響了解析過程。零樣本場景給出更詳細(xì)的指令或者少樣本場景增加示例的個數(shù)可以有效減少“格式無效”。然而,“片段無效”仍是一個亟需解決的問題。此外,無效性可能會直接導(dǎo)致生成的句子解析失敗,從而不能識別預(yù)測成功的實(shí)體。本文稱這種情況為虛假預(yù)測。虛假預(yù)測除了存在導(dǎo)致性能偏低的“虛假錯誤預(yù)測”,還存在導(dǎo)致性能偏高的“虛假正確預(yù)測”。當(dāng)無效性問題嚴(yán)重時,“虛假正確預(yù)測”的數(shù)量甚至增加到40%。未來的工作在保證預(yù)測正確性的前提下,仍需從根本上提升InstructGPT等大模型抽取實(shí)體的能力。除此之外,針對嵌套命名實(shí)體識別任務(wù),本文還統(tǒng)計(jì)了InstructGPT生成的實(shí)體中嵌套實(shí)體的比例,即實(shí)體嵌套率,發(fā)現(xiàn)其遠(yuǎn)低于數(shù)據(jù)集中的比例。并且,抽取嵌套實(shí)體的正確率也不足一半。這說明大模型在處理嵌套實(shí)體方面還是面臨挑戰(zhàn)的。
總的來說,本文的貢獻(xiàn)主要體現(xiàn)在以下個四方面:
(1) 本文首次詳細(xì)探究了InstructGPT在命名實(shí)體識別任務(wù)上的表現(xiàn),覆蓋了生物醫(yī)學(xué)領(lǐng)域和通用領(lǐng)域、常規(guī)場景和嵌套場景的數(shù)據(jù),并在零樣本和少樣本設(shè)定上都進(jìn)行了實(shí)驗(yàn)。本文提供的實(shí)驗(yàn)結(jié)果可以作為之后研究的基準(zhǔn)。
(2) 首次提出將思維鏈應(yīng)用到命名實(shí)體識別任務(wù)上,并為生物醫(yī)學(xué)領(lǐng)域和通用領(lǐng)域的數(shù)據(jù)設(shè)計(jì)了不同形式的思維鏈,并對其性能進(jìn)行了測試。
(3) 本文從兩個指標(biāo)出發(fā),對InstructGPT的輸出進(jìn)行了錯誤分析,發(fā)現(xiàn)了輸出的無效性是阻礙InstructGPT性能提升的重要因素。通過分析無效生成問題導(dǎo)致的虛假預(yù)測問題,本文發(fā)現(xiàn),解決無效生成問題并不一定會提升InstructGPT在命名實(shí)體識別上的性能。未來工作可以針對本文列舉的無效生成類型,首先保證模型生成的正確性,其次設(shè)計(jì)更好的抽取實(shí)體的方法。
(4) 首次針對性地研究了InstructGPT在嵌套命名實(shí)體識別任務(wù)上的表現(xiàn),發(fā)現(xiàn)InstructGPT的實(shí)體嵌套率和嵌套正確率較低。通過增加上下文示例的數(shù)量可以一定程度上增加InstructGPT生成嵌套實(shí)體的比例和識別的正確率。
命名實(shí)體識別作為一個基本的結(jié)構(gòu)化抽取任務(wù),旨在從原始文本中抽取實(shí)體片段,并將它們分類到預(yù)定義的類型中。例如,“復(fù)旦大學(xué)是上海市的一所綜合性大學(xué)。”中,“復(fù)旦大學(xué)”是組織類別的實(shí)體,“上海市”是地點(diǎn)類別的實(shí)體。本文為了提升效率,InstructGPT需要一次性從句子中抽取出所有類型的實(shí)體片段并分類。即,上面句子的輸出應(yīng)該為“組織: 復(fù)旦大學(xué);地點(diǎn): 上海市”。最后,模型的原始輸出被解析成結(jié)構(gòu)化的實(shí)體,從而進(jìn)行評測。
為了充分研究InstructGPT在命名實(shí)體識別任務(wù)中的表現(xiàn),本節(jié)詳細(xì)描述了在不同設(shè)定和領(lǐng)域中提示的設(shè)計(jì)。
零樣本學(xué)習(xí)時,本文使用的提示由3個部分構(gòu)成: 任務(wù)指令、候選句子、指示詞。如圖1所示,本文為零樣本命名實(shí)體識別設(shè)計(jì)了兩種提示。圖1中從上到下的示例分別來自生物醫(yī)學(xué)領(lǐng)域、英文通用領(lǐng)域和中文通用領(lǐng)域。
2.1.1 原始提示
作為基準(zhǔn),本文沿用了之前工作的提示,其中任務(wù)指令是關(guān)于命名實(shí)體任務(wù)的描述,并給出需要抽取的實(shí)體類別。在抽取可能包含嵌套實(shí)體的句子的時候,本文在任務(wù)指令后面添加了“Notice that there may exist nested entities.”。候選句子由“Sentence:”/“句子: ”拼接待抽取的句子。指示符是“Entity:”/“實(shí)體: ”。原始提示的示例如圖1(a)所示。
2.1.2 結(jié)構(gòu)化提示
正如第1章所討論的,InstructGPT在其生成格式方面展現(xiàn)出了相當(dāng)大的靈活性。因此,設(shè)計(jì)提示來指導(dǎo)InstructGPT生成理想的格式化輸出對于實(shí)現(xiàn)有效的解析至關(guān)重要。因此,本文修改了任務(wù)指令部分,添加了輸出格式的詳細(xì)指令。中英文關(guān)于輸出格式的描述有所不同。其余兩個部分與原始提示一致。如圖1(b)所示,結(jié)構(gòu)化指令部分用下劃線標(biāo)出。
少樣本學(xué)習(xí)時,本文使用的提示由四個部分構(gòu)成: 任務(wù)指令、示范(Demonstration)、候選句子、指示詞。除了新增的示范部分,其他部分都與零樣本學(xué)習(xí)的原始提示相同。如圖2所示,本文使用了兩種常見的大模型少樣本學(xué)習(xí)方法,即上下文學(xué)習(xí)和思維鏈。不同方法的改變只存在于示范部分。圖2中從上到下的示例分別來自生物醫(yī)學(xué)領(lǐng)域、英文通用領(lǐng)域和中文通用領(lǐng)域,并只拼接了一個示范作為例子。
2.2.1 上下文學(xué)習(xí)
受到之前工作的啟發(fā)[5],本文設(shè)計(jì)的示范部分由幾個完整訓(xùn)練示例組成,即訓(xùn)練示例構(gòu)成的候選句子、指示詞以及模型輸出。其中訓(xùn)練示例的輸出應(yīng)與最終期望的模型輸出具有相同的格式。圖2(a)給出了三種情況下的上下文學(xué)習(xí)輸入輸出的例子。
2.2.2 思維鏈
與上下文學(xué)習(xí)不同,思維鏈[8]的示范部分由幾個推理鏈組成。其中每個推理鏈都包括了一系列中間推理步驟,即原理(Rationale)和答案。本文是第一個將思維鏈提示應(yīng)用到命名實(shí)體識別上的研究,并為不同領(lǐng)域的數(shù)據(jù)設(shè)計(jì)了不同的推理鏈。如圖2(b)所示,推理鏈部分用下劃線標(biāo)出。
對于生物醫(yī)學(xué)領(lǐng)域,本文首先從維基百科檢索出實(shí)體的條目頁面,并選擇定義句子(通常在文檔開頭)作為推理鏈。如果該實(shí)體沒有條目,則隨機(jī)選擇一個包含該實(shí)體的句子。之后,在推理鏈后拼接“Therefore”開頭的結(jié)論作為答案部分。對于通用領(lǐng)域,本文受到了triggerNER[10]的啟發(fā)。triggerNER是通過選擇特定的單詞和短語作為解釋性標(biāo)注來識別實(shí)體。對于CoNLL03數(shù)據(jù)集,本文直接使用triggerNER的標(biāo)注;對于其他通用領(lǐng)域數(shù)據(jù)集,本文使用該技術(shù)原理,人工標(biāo)注了解釋性單詞和短語。之后,將這些解釋性單詞和短語用自然語言描述,作為推理鏈;用“Therefore/因此”開頭的結(jié)論作為答案。
本章節(jié)首先介紹了本文使用的9個數(shù)據(jù)集,然后展示并分析討論了實(shí)驗(yàn)結(jié)果,來分別回答前面提出的兩個問題。
本文在三個生物醫(yī)學(xué)領(lǐng)域、四個常規(guī)通用領(lǐng)域和兩個嵌套通用領(lǐng)域的命名實(shí)體識別數(shù)據(jù)集上進(jìn)行了實(shí)驗(yàn)。沿用過去的工作,本文只在1 000條測試數(shù)據(jù)上評估InstructGPT的表現(xiàn),如果測試集數(shù)據(jù)少于1 000條,則使用全部測試集。每個實(shí)驗(yàn)使用相同部分的子數(shù)據(jù)集。
3.1.1 生物醫(yī)學(xué)領(lǐng)域數(shù)據(jù)集
本文選擇了BLURB基準(zhǔn)數(shù)據(jù)集[11]中的三個數(shù)據(jù)集。其中生物創(chuàng)新V化學(xué)-疾病關(guān)系語料庫(BioCreative V Chemical-Disease Relation corpus)[12]包含了PubMed摘要中標(biāo)注為疾病(BC5CDR-disease)和化學(xué)(BC5CDR-chem)實(shí)體的句子,生物創(chuàng)造II基因提及(Biocreative II Gene Mention, BC2GM)[13]數(shù)據(jù)集則包含了PubMed摘要中的基因標(biāo)注。
3.1.2 通用領(lǐng)域數(shù)據(jù)集
本文選擇了四個常用的通用領(lǐng)域的常規(guī)命名實(shí)體識別數(shù)據(jù)集,其中,兩個是英文,兩個是中文。對于英文數(shù)據(jù)集,本文使用了CoNLL03[14]數(shù)據(jù)集和OntoNotes5[15]數(shù)據(jù)集,其中OntoNotes5數(shù)據(jù)集本文只保留了非數(shù)字的實(shí)體類別;對于中文數(shù)據(jù)集,本文使用了MSRA[16]數(shù)據(jù)集和OntoNotes4[17]數(shù)據(jù)集。除此之外,本文還選擇了兩個常用的英文嵌套命名實(shí)體識別數(shù)據(jù)集,分別是ACE04[18]和ACE05[19]。
本節(jié)的實(shí)驗(yàn)旨在探究InstructGPT在低資源場景下解決命名實(shí)體識別任務(wù)的能力。表1展示了生物醫(yī)學(xué)領(lǐng)域數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果,表2和表3分別展示了通用領(lǐng)域常規(guī)實(shí)體和嵌套實(shí)體數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果。少樣本學(xué)習(xí)時,本文分別在拼接1個、5個和10個示例的情況下測試。每個結(jié)果都是5次實(shí)驗(yàn)結(jié)果的平均值,下標(biāo)表示標(biāo)準(zhǔn)差(例如,76.811表示76.8±1.1)。
表1 生物醫(yī)學(xué)領(lǐng)域數(shù)據(jù)的主要結(jié)果 (單位: %)
表2 通用領(lǐng)域數(shù)據(jù)的主要結(jié)果 (單位: %)
表3 通用領(lǐng)域嵌套實(shí)體的主要結(jié)果 (單位: %)
3.2.1 生物醫(yī)學(xué)領(lǐng)域
在生物醫(yī)學(xué)領(lǐng)域,本文對比了微調(diào)BioBERT[20]預(yù)訓(xùn)練模型的結(jié)果。零樣本學(xué)習(xí)時,InstructGPT在生物醫(yī)學(xué)領(lǐng)域數(shù)據(jù)集上能達(dá)到41%~61%微調(diào)模型的表現(xiàn)。本文發(fā)現(xiàn)結(jié)構(gòu)化提示對零樣本學(xué)習(xí)似乎沒有影響,甚至?xí)膊『突瘜W(xué)類別實(shí)體的提取產(chǎn)生負(fù)面影響。
在少樣本學(xué)習(xí)時,InstructGPT在少樣本的生物醫(yī)學(xué)領(lǐng)域的數(shù)據(jù)上的表現(xiàn)達(dá)到了51%~80%微調(diào)模型的能力。增加示例數(shù)量(從1個到10個)在上下文學(xué)習(xí)和思維鏈方法中都有益于F1的提高,分別平均有+10.3和+41.6的增長。但是,僅使用一個示例時,思維鏈方法的F1相較于上下文學(xué)習(xí)平均下降了25.2。這是由于思維鏈方法的生成中,原理部分的結(jié)構(gòu)比較復(fù)雜,InstructGPT難以保證有效輸出,導(dǎo)致了嚴(yán)重的解析失敗問題,從而表現(xiàn)不佳。一旦示例數(shù)量增加,InstructGPT在生物醫(yī)學(xué)領(lǐng)域數(shù)據(jù)集上使用思維鏈的性能優(yōu)于只使用上下文學(xué)習(xí)。
3.2.2 通用領(lǐng)域
在通用領(lǐng)域的常規(guī)命名實(shí)體識別數(shù)據(jù)集上,本文對比了微調(diào)RoBERTa[21]預(yù)訓(xùn)練模型的結(jié)果。在通用領(lǐng)域的嵌套命名實(shí)體識別數(shù)據(jù)集上,本文對比了微調(diào)BERT[22]預(yù)訓(xùn)練模型的結(jié)果。由于該篇工作沒有匯報(bào)完整的實(shí)驗(yàn)結(jié)果,因此我們也只在表格中展示了F1。在零樣本常規(guī)實(shí)體的抽取上,InstructGPT大概能達(dá)到20%~56%微調(diào)模型的性能;在嵌套命名實(shí)體識別數(shù)據(jù)上大概能達(dá)到20%~29%微調(diào)模型的性能。另外,本文發(fā)現(xiàn),在常規(guī)實(shí)體的抽取上使用結(jié)構(gòu)化提示可以顯著提高性能,F1平均提高了8.7。這意味著通過修改提示指導(dǎo)InstructGPT生成更加格式化的輸出對于通用領(lǐng)域?qū)嶓w識別是有效的。嵌套實(shí)體抽取中使用結(jié)構(gòu)化提示反而一定程度上損害了性能。
在少樣本學(xué)習(xí)時,隨著上下文示例數(shù)量的增加,在常規(guī)命名實(shí)體識別任務(wù)上,上下文學(xué)習(xí)和思維鏈的性能分別平均提高了14.4和24.8;在嵌套命名實(shí)體識別任務(wù)上,則分別提高了11.9和15.5。對于通用領(lǐng)域常規(guī)實(shí)體的提取,實(shí)驗(yàn)發(fā)現(xiàn)思維鏈在常規(guī)實(shí)體抽取上的用處不大。其原因可能是實(shí)體觸發(fā)詞與實(shí)體本身之間沒有強(qiáng)烈的因果關(guān)系,導(dǎo)致不能激發(fā)模型潛在的推理能力。并且由于思維鏈的輸出結(jié)構(gòu)更加復(fù)雜,反而會一定程度上損害模型的表現(xiàn)。值得注意的是,在每個設(shè)置中,OntoNotes5的性能明顯低于其他數(shù)據(jù)集。這是由于OntoNotes5有11個類別,遠(yuǎn)遠(yuǎn)多于其他數(shù)據(jù)集的3、4個類別。InstructGPT在解決很多類別的分類時,也面臨了巨大的挑戰(zhàn)。思維鏈方法運(yùn)用在嵌套實(shí)體中可以一定程度上提升性能,這可能是由于ACE04和ACE05數(shù)據(jù)集中有很多指代詞被標(biāo)注為實(shí)體。思維鏈的使用幫助InstructGPT利用上下文的邏輯來抽取實(shí)體。
總體而言,與微調(diào)模型相比,實(shí)驗(yàn)發(fā)現(xiàn)InstructGPT在每個命名實(shí)體識別數(shù)據(jù)集上的表現(xiàn)都不盡人意。具體來說,InstructGPT只能通過零樣本提示實(shí)現(xiàn)11%~56%的性能。即使添加了示例樣本,InstructGPT的F1最多也只能達(dá)到72%。通過之前的觀察,本文建議在解決通用領(lǐng)域的命名實(shí)體識別問題時,可以使用結(jié)構(gòu)化提示來提升最終的性能。面對少樣本問題時,思維鏈提示在生物醫(yī)學(xué)領(lǐng)域更有可能表現(xiàn)良好;而對于通用領(lǐng)域的少樣本學(xué)習(xí),上下文學(xué)習(xí)足以勝任。
正如前文所述,盡管在許多設(shè)定下進(jìn)行了嘗試,InstructGPT的結(jié)果與微調(diào)模型之間仍存在顯著差距。本節(jié)對輸出文本進(jìn)行了詳細(xì)的分析,發(fā)現(xiàn)了導(dǎo)致結(jié)果不理想的一個重要原因是無效生成。這種無效性問題還會導(dǎo)致虛假預(yù)測問題,使得目前獲得的結(jié)果不完全準(zhǔn)確。在嵌套命名實(shí)體識別時,本文發(fā)現(xiàn)InstructGPT的嵌套實(shí)體識別率偏低,說明在識別嵌套的實(shí)體上還面臨挑戰(zhàn)。
3.3.1 無效生成
由于命名實(shí)體識別任務(wù)本質(zhì)上是一個結(jié)構(gòu)化抽取任務(wù),因此最終目的是得到結(jié)構(gòu)化的實(shí)體。要將InstructGPT輸出的非結(jié)構(gòu)化文本解析成結(jié)構(gòu)化的實(shí)體,其生成的輸出必須是格式化的,才能成功地匹配解析?;谶@個特性,本文引入了“格式無效”這一指標(biāo),表示模型輸出的格式與期望格式不符。主要體現(xiàn)在解析階段無法區(qū)分不同實(shí)體類型之間的實(shí)體,或者無法區(qū)分類別詞和實(shí)體。例如,圖3中的(1)就是“格式無效”的一個例子。此外,命名實(shí)體識別任務(wù)要求抽取的實(shí)體片段必須完全屬于原始句子。由于實(shí)體有各種表達(dá)方式,InstructGPT可能會生成該實(shí)體的其他形式,從而導(dǎo)致匹配解析失敗。此外,單數(shù)和復(fù)數(shù)的使用不一致也會導(dǎo)致此問題。本文為此定義了“片段無效”指標(biāo)來記錄不符合該要求的實(shí)體片段的數(shù)量。例如,圖3中(2)就是“片段無效”的一個例子。
除此之外,本文還引入了“無效句子”,來記錄具有任何以上兩種類型無效性的句子的數(shù)量。三種無效性的結(jié)果如圖4所示。在每個子圖中,“格式無效”和“片段無效”的單位都是片段數(shù)量,基于左邊的Y軸,而“無效句子”的單位是句子數(shù)量,基于右邊的Y軸。值得注意的是,生物醫(yī)學(xué)領(lǐng)域數(shù)據(jù)集的“格式無效”在零樣本學(xué)習(xí)和上下文學(xué)習(xí)時始終為0。這是由于生物醫(yī)學(xué)領(lǐng)域的數(shù)據(jù)集都只有一個實(shí)體類型,解析過程中不需要格式匹配來區(qū)分不同實(shí)體類型。
圖4 無效生成的統(tǒng)計(jì)數(shù)據(jù)圖
總的來說,無效生成問題有三個值得注意的結(jié)論: (1) 在零樣本學(xué)習(xí)時添加結(jié)構(gòu)化提示或者在少樣本學(xué)習(xí)時增加示例數(shù)量都有助于提高輸出格式的正確性。從圖3中可以看出,增加結(jié)構(gòu)化提示后,“格式無效”平均減少了34個;將示例數(shù)量從1個增加到10個,“格式無效”在上下文學(xué)習(xí)中平均減少了42個,在思維鏈上平均減少了536個。(2) 使用思維鏈方法時,如果只拼接一個示例,InstructGPT很難模仿復(fù)雜的推理過程。如圖4所示,每個數(shù)據(jù)集在只使用一個示例的思維鏈方法中,都有相當(dāng)多的“格式無效”,達(dá)到了600到900個片段。增加示例的數(shù)量可以顯著緩解這個問題,如可以將無效的片段數(shù)降低到個位數(shù)。(3) “片段無效”問題更具挑戰(zhàn)性,并且使用現(xiàn)有的大模型學(xué)習(xí)方法難以解決。通過提示或者示例引導(dǎo)InstructGPT生成格式化的輸出,幾乎可以將“格式無效”降至零;但幾乎每個數(shù)據(jù)集的每個場景中,“片段無效”都超過了200個。InstructGPT在中文數(shù)據(jù)集上的“片段無效”問題尤為嚴(yán)重。
3.3.2 虛假預(yù)測
上一節(jié)描述的無效生成問題可能會導(dǎo)致InstructGPT的輸出面臨解析失敗的問題。解析失敗會導(dǎo)致預(yù)測正確的實(shí)體沒有被解析出來,即判別為預(yù)測錯誤的句子實(shí)際是正確的,使最終性能偏低,本文稱之為“虛假錯誤預(yù)測”。直覺上,設(shè)計(jì)更好的提示或者更好的解析方法可以緩解無效生成的問題,進(jìn)而減少“虛假錯誤預(yù)測”,從而得到更好的性能。然而,通過收集InstructGPT存在無效生成的句子,本文發(fā)現(xiàn),解析失敗還會使一些預(yù)測錯誤的實(shí)體躲過與目標(biāo)實(shí)體匹配的過程,使得預(yù)測錯誤的句子被錯誤判別為正確預(yù)測,使最終性能偏高,本文稱之為“虛假正確預(yù)測”。本文將這兩種情況統(tǒng)稱為虛假預(yù)測。
存在“虛假錯誤預(yù)測”的句子,一旦模型的輸出被更好地解析,就可能糾正這些虛假錯誤,性能就可以進(jìn)一步提高。從表2、表3和圖4中可以看出,零樣本中增加結(jié)構(gòu)化提示或者少樣本中增加樣本數(shù)量時,“格式無效”的數(shù)量減少,F1也相應(yīng)地有所提升。
“虛假正確預(yù)測”的統(tǒng)計(jì)結(jié)果見圖5,每個子圖的單位都是句子數(shù)量,每個柱體的高度是正確預(yù)測的數(shù)量,包括“真實(shí)正確”(實(shí)心部分)和“虛假正確”(斜線部分)。如果InstructGPT預(yù)測正確并且輸出的句子不存在無效生成問題,則表示該測試用例是真實(shí)正確的?!罢鎸?shí)正確”部分表明,添加結(jié)構(gòu)化提示比僅使用一個示例更有用,同時添加的示例越多,真實(shí)正確的數(shù)量也越多,表示模型能力越好。如果InstructGPT預(yù)測正確但是輸出句子存在無效生成,則認(rèn)為該測試用例是虛假正確的。實(shí)驗(yàn)表明,原始提示和使用一個樣本的思維鏈方法均面臨了嚴(yán)重的“虛假正確”問題。正如3.3.1節(jié)描述的,這兩種情形下,InstructGPT的輸出存在很多“格式無效”問題。這個問題可以通過添加結(jié)構(gòu)化提示和增加示例數(shù)量緩解。
總之解決InstructGPT生成的無效性并不能保證最終結(jié)果的提高。如果解決的“虛假錯誤預(yù)測”問題多于“虛假正確問題”,則最終性能會提升;反之,性能會下降。因此,為了從根本上提升InstructGPT在命名實(shí)體識別任務(wù)上的表現(xiàn),未來工作首先應(yīng)該解決虛假預(yù)測的問題,保證最終的性能是真實(shí)的。阻礙性能真實(shí)性的主要問題之一是無效生成問題。減少輸出格式與期望格式不匹配的“格式無效”問題的一個主要方法是使用結(jié)構(gòu)化提示或添加更多示例。如何確保模型輸出的片段有效,仍是InstructGPT在這種結(jié)構(gòu)化抽取任務(wù)上的瓶頸。未來的工作可以更多地關(guān)注提升大規(guī)模語言模型在片段定位上的能力。
3.3.3 嵌套實(shí)體識別率
在嵌套命名實(shí)體識別場景下,實(shí)體之間可能存在嵌套關(guān)系,即一個實(shí)體包含了其他實(shí)體。本文統(tǒng)計(jì)了各個實(shí)驗(yàn)設(shè)定下,InstructGPT抽取的嵌套實(shí)體數(shù)、抽取正確的實(shí)體數(shù)和總的實(shí)體數(shù)。為了公平對比,還計(jì)算了嵌套正確率=抽取正確的嵌套實(shí)體數(shù)量/嵌套實(shí)體數(shù)量,實(shí)體嵌套率=嵌套實(shí)體數(shù)量/總的實(shí)體數(shù)量。表4對比了上述統(tǒng)計(jì)數(shù)據(jù)與測試集中實(shí)際的數(shù)量。
表4 嵌套實(shí)體識別率統(tǒng)計(jì)
本文發(fā)現(xiàn),InstructGPT生成的實(shí)體嵌套率遠(yuǎn)遠(yuǎn)低于實(shí)際的比例,最多只能達(dá)到5%,這說明InstructGPT還是更傾向于預(yù)測常規(guī)的實(shí)體。而預(yù)測出來的嵌套實(shí)體中,模型也通常只能做對不足50%,這說明定位到正確的嵌套實(shí)體位置對于InstructGPT來說還是一項(xiàng)重大的挑戰(zhàn)。除此之外,上下文學(xué)習(xí)的場景下,InstructGPT傾向于生成更多的嵌套實(shí)體,本文推測通過添加存在嵌套實(shí)體的示例,可以挖掘模型識別嵌套實(shí)體的能力,而這比用指令指導(dǎo)InstructGPT生成嵌套實(shí)體更有用。而思維鏈提示中復(fù)雜的推理句子,讓InstructGPT模糊了嵌套實(shí)體的位置,更注重抽取需要推理的代詞實(shí)體。另外,增加上下文示例的數(shù)量可以一定程度上增加嵌套正確率。
近些年,大規(guī)模語言模型[1,4,6,23]如雨后春筍般涌現(xiàn)。他們龐大的模型規(guī)模帶來了強(qiáng)大的能力,尤其是在零樣本學(xué)習(xí)和少樣本學(xué)習(xí)上展現(xiàn)了驚人的效果。在解決零樣本任務(wù)時,大規(guī)模語言模型僅需要適當(dāng)?shù)奶崾揪湍茉诤芏嗳蝿?wù)上達(dá)到和微調(diào)模型同樣的效果[5]。在解決少樣本任務(wù)時,大規(guī)模語言模型僅通過上下文學(xué)習(xí)便表現(xiàn)出令人驚嘆的泛化能力[1]。一些先前的工作[8,24]探索了思維鏈提示,即利用推理鏈進(jìn)一步激發(fā)大規(guī)模語言模型的推理能力。在他們之中,GPT-3系列[1-3]是最受關(guān)注的模型。在這個系列中,InstructGPT[3]引入了來自人類反饋的強(qiáng)化學(xué)習(xí)(Reinforcement Learning from Human Feedback, RLHF),是第一個與用戶對齊的模型。因此,本文選擇探究InstructGPT的能力。
使用大規(guī)模語言模型解決自然語言處理任務(wù)中的零樣本學(xué)習(xí)和少樣本學(xué)習(xí)時,主要有兩種方法。其一,一些工作[25-27]使用大規(guī)模語言模型來標(biāo)注沒有標(biāo)簽的數(shù)據(jù),并使用這些偽標(biāo)簽對小規(guī)模預(yù)訓(xùn)練語言模型(Pre-trained Language Models, PLMs)進(jìn)行微調(diào)。然而,命名實(shí)體識別是一項(xiàng)詞元級別的標(biāo)注任務(wù),InstructGPT很難直接對句子中的實(shí)體片段進(jìn)行標(biāo)注。其二,一些研究[5,28]直接應(yīng)用大規(guī)模語言模型進(jìn)行推理。本文也采用這種方法直接評估模型的表現(xiàn)。之前也有一些工作[9,28]評估了這種方式下命名實(shí)體識別任務(wù)的性能,但他們只在特定領(lǐng)域進(jìn)行了少樣本的上下文學(xué)習(xí)。目前,還沒有工作全面地研究InstructGPT在各種領(lǐng)域的命名實(shí)體識別上各種設(shè)定下的性能和輸出的分析。本文對命名實(shí)體識別的性能和面臨的挑戰(zhàn)進(jìn)行了詳細(xì)分析。
本文對InstructGPT在命名實(shí)體識別任務(wù)中的表現(xiàn)進(jìn)行了全面研究,實(shí)驗(yàn)的數(shù)據(jù)集覆蓋了生物醫(yī)學(xué)領(lǐng)域和通用領(lǐng)域,其中通用領(lǐng)域還考慮了中英文常規(guī)數(shù)據(jù)集和英文嵌套數(shù)據(jù)集。本文分別在零樣本學(xué)習(xí)和少樣本學(xué)習(xí)中各采用了兩種提示,來評估InstructGPT的表現(xiàn)。實(shí)驗(yàn)發(fā)現(xiàn),InstructGPT在命名實(shí)體識別中的表現(xiàn)并不理想,離微調(diào)小模型還有很大差距。經(jīng)過實(shí)驗(yàn)統(tǒng)計(jì)分析,這主要是由于輸出中存在“格式無效”和“片段無效”問題,使得解析過程失敗。為了減少無效性問題,本文建議使用結(jié)構(gòu)化提示或增加示例樣例的數(shù)量來幫助InstructGPT克服“格式無效”的問題。除此之外,解決“片段無效”也是至關(guān)重要的,并且是未來使用大規(guī)模語言模型解決結(jié)構(gòu)化抽取的重點(diǎn)研究方向。本文發(fā)現(xiàn)生成無效導(dǎo)致的虛假預(yù)測問題,不僅可能使結(jié)果偏低,也可能導(dǎo)致結(jié)果偏高。因此,未來工作仍需要從其他思路來進(jìn)一步提升InstructGPT抽取實(shí)體的能力。對于更加復(fù)雜的嵌套實(shí)體來說,InstructGPT也面臨了很大的挑戰(zhàn)。InstructGPT的識別實(shí)體的嵌套率遠(yuǎn)低于數(shù)據(jù)集中本來的比例。因此,如何使得大模型識別更多的嵌套實(shí)體也是未來工作的一大難點(diǎn)。此外,本文是第一個在命名實(shí)體識別任務(wù)中實(shí)現(xiàn)思維鏈提示的研究。實(shí)驗(yàn)觀察到,相比通用領(lǐng)域,思維鏈在生物醫(yī)學(xué)領(lǐng)域中更有效。并且,使用思維鏈提示需要足夠數(shù)量的示例以避免嚴(yán)重的“格式無效”問題??傊?本文探究了使用InstructGPT在命名實(shí)體識別任務(wù)中存在的限制和潛在的改進(jìn)方法。希望本文的發(fā)現(xiàn)能為未來的大規(guī)模語言模型研究提供有價(jià)值的見解。