北京郵電大學(xué)最新研究:使用提示工程解決大模型記憶問題
北京郵電大學(xué)的研究者發(fā)現(xiàn)了一個(gè)免訓(xùn)練的提示技巧,能讓大型語言模型在多輪對(duì)話中的推理時(shí)間減少73.1%,令牌(tokens)消耗減少59.4%,同時(shí)問答準(zhǔn)確率還提升了14.1%。

大模型記性差,聊得越久越糊涂
大型語言模型有個(gè)軟肋,就是記性不太好,尤其是在連續(xù)進(jìn)行多輪對(duì)話的時(shí)候。
你可以把它想象成一個(gè)記憶力只有七秒的魚,聊著聊著,就忘了你們最開始在聊什么。它更傾向于記住最近聽到的幾句話,對(duì)早先的信息則印象模糊。這在學(xué)術(shù)上被稱為“遺忘現(xiàn)象”或“近因偏見”。
這個(gè)毛病很要命。因?yàn)楹芏鄰?fù)雜的任務(wù),比如分析一份長長的報(bào)告、當(dāng)一個(gè)智能客服、或者做一個(gè)需要多步驟推理的問答,都需要模型能記住并整合貫穿整個(gè)對(duì)話的所有信息。如果它聊到后面忘了前面,那最終的結(jié)論就很可能跑偏,甚至得出完全錯(cuò)誤的答案。
為了搞清楚這個(gè)問題到底有多嚴(yán)重,北京郵電大學(xué)人工智能學(xué)院的研究者設(shè)計(jì)了兩個(gè)非常直接的實(shí)驗(yàn)。
他們用了一個(gè)叫HotpotQA的公開數(shù)據(jù)集,這個(gè)數(shù)據(jù)集的特點(diǎn)是需要模型閱讀好幾段文字,然后綜合里面的信息才能回答一個(gè)問題。
第一個(gè)實(shí)驗(yàn)是測(cè)試對(duì)話長度的影響。研究者把需要模型閱讀的10個(gè)段落,分別打包成1輪、5輪和10輪對(duì)話發(fā)給模型。也就是說,要么一口氣把所有材料都給它,要么分5次給,要么分10次給。在每一輪,都要求模型篩選出對(duì)回答問題有用的關(guān)鍵句子。
結(jié)果怎么樣呢?

F1分?jǐn)?shù)(一個(gè)衡量準(zhǔn)確率的指標(biāo))隨著對(duì)話輪數(shù)的增加,穩(wěn)定地往下掉。對(duì)話輪次越多,模型表現(xiàn)越差。有趣的是,模型規(guī)模越大,這種性能下降反而越明顯。這說明,雖然更大的模型在單次理解能力上更強(qiáng),但它們同樣沒能解決在多輪對(duì)話中記住歷史上下文這個(gè)根本性的挑戰(zhàn)。
第二個(gè)實(shí)驗(yàn)更進(jìn)一步,直接去戳模型的痛點(diǎn):信息的位置到底有多大影響?
研究者們把回答問題最關(guān)鍵的那個(gè)段落,有時(shí)候放在第一輪對(duì)話就告訴模型,有時(shí)候則藏到最后一輪才給它。
結(jié)果戲劇性地出現(xiàn)了。

當(dāng)關(guān)鍵信息出現(xiàn)在最后一輪時(shí),模型的性能得分要高得多。這幾乎是無可辯駁的證據(jù),證明了模型存在嚴(yán)重的“近因偏見”。它就是更偏愛眼前的信息,對(duì)那些“陳年舊事”則不太上心。
目前主流的多輪對(duì)話方式存在兩個(gè)大問題:第一,模型會(huì)忘記早期的輸入;第二,模型很難把不同輪次的信息有效地整合起來進(jìn)行思考。
不聊歷史,只更新狀態(tài)
傳統(tǒng)的對(duì)話方式,就像我們用微信聊天一樣,新的信息不斷附加在舊的聊天記錄后面,整個(gè)歷史記錄越來越長。這對(duì)計(jì)算機(jī)來說負(fù)擔(dān)很重,因?yàn)槟P兔恳惠喍家讶繗v史記錄再讀一遍,既浪費(fèi)時(shí)間又消耗計(jì)算資源。

研究者提出的新策略叫“狀態(tài)更新多輪對(duì)話策略”,這個(gè)方法非常巧妙,它不需要重新訓(xùn)練模型,僅僅通過改變給模型提問的方式(也就是提示工程)就解決了問題。
它的核心思想是:別再讓模型背著越來越重的歷史包袱前進(jìn)了。
在每一輪對(duì)話結(jié)束后,我們不保留完整的對(duì)話歷史,而是提煉出一個(gè)“當(dāng)前狀態(tài)”,這個(gè)狀態(tài)只包含到目前為止所有對(duì)解決問題有用的關(guān)鍵信息。下一輪對(duì)話開始時(shí),我們只需要把新的材料和這個(gè)濃縮后的“當(dāng)前狀態(tài)”一起交給模型就行了。
這個(gè)策略主要靠三個(gè)技術(shù)組件實(shí)現(xiàn)。
第一個(gè)叫“狀態(tài)重構(gòu)”(State Reconstruction, SR)。它的作用就是減負(fù)。每一輪對(duì)話,輸入給模型的信息長度基本是固定的,不會(huì)隨著對(duì)話輪數(shù)的增加而無限膨脹。因?yàn)樗牟皇侨苛奶煊涗?,而是“新的段落”加上“上一輪提煉出的關(guān)鍵信息”。
第二個(gè)叫“歷史提醒”(History Reminder, HR)。這是整個(gè)策略的點(diǎn)睛之筆。通過一個(gè)名為“先前選擇”的機(jī)制,在每一輪都非常明確地把上一輪篩選出的關(guān)鍵句子再次展示給模型。這就像一個(gè)秘書在旁邊不停地提醒老板:“老板,別忘了,我們上次開會(huì)的核心結(jié)論是這些”。這種方式強(qiáng)制模型必須關(guān)注并整合所有跨越時(shí)間線的關(guān)鍵信息,從而有效對(duì)抗遺忘。
第三個(gè)是“XML結(jié)構(gòu)化輸出”。為了讓上面兩個(gè)機(jī)制能自動(dòng)化地運(yùn)轉(zhuǎn)起來,模型每次的輸出都必須是標(biāo)準(zhǔn)、規(guī)范的。研究者要求模型把所有找到的關(guān)鍵句子,都用一個(gè)<info>...</info>這樣的XML標(biāo)簽包裹起來。這樣,程序就能非常輕松準(zhǔn)確地解析出上一輪的結(jié)果,然后用于構(gòu)建下一輪的輸入。

整個(gè)對(duì)話流程是這樣運(yùn)作的:
首先,研究者給模型設(shè)定一個(gè)全局規(guī)則,這個(gè)規(guī)則在所有對(duì)話輪次中都一樣,寫在系統(tǒng)提示(SYSTEM Prompt)里:
SYSTEM: You are helping to find supporting sentences...
Format your response with <info>...</info>tags. Each response should contain ALL supporting sentences (previous + new ones).這個(gè)提示告訴了模型兩件核心任務(wù):第一,你的回答必須用<info>標(biāo)簽包起來。第二,你每次回答,都必須包含之前所有輪次找到的關(guān)鍵句,再加上當(dāng)前輪次新找到的關(guān)鍵句,是一個(gè)累積的過程。
對(duì)話開始。
第一輪,用戶提出問題,并給出第一段上下文。
USER: Question: ...Context: {passage 1}
USER: Question: ...
Context: {passage 1}模型閱讀后,會(huì)輸出它認(rèn)為的關(guān)鍵句子,并用<info>標(biāo)簽包好。
從第二輪開始,“狀態(tài)更新”的魔法就啟動(dòng)了。用戶會(huì)輸入新的文本段落,同時(shí),把上一輪模型輸出的<info>標(biāo)簽里的內(nèi)容,作為“先前選擇”的歷史提醒,一起發(fā)給模型。
USER:
Question: ...
New Context : {passage k}
USER: Previously selected: {supporting sentences from turn k-1}程序在每一輪結(jié)束后,自動(dòng)解析模型輸出的關(guān)鍵句子,然后填充到下一輪的“先前選擇”字段里。這個(gè)過程循環(huán)往復(fù),直到所有段落都處理完畢。
模型真的記憶變好了嗎?
研究者在三個(gè)公開數(shù)據(jù)集上進(jìn)行了全面的測(cè)試,分別是HotpotQA、2WikiMultiHopQA和QASC。前兩個(gè)是需要多跳推理的問答數(shù)據(jù)集,非??简?yàn)?zāi)P驼闲畔⒌哪芰Α?/span>
實(shí)驗(yàn)用的模型是Qwen2.5-Instruct系列。
他們把傳統(tǒng)的線性歷史連接方法作為“基線”,用來和新的“狀態(tài)更新”策略進(jìn)行對(duì)比。
首先看性能。

在所有三個(gè)數(shù)據(jù)集上,基線方法的性能都隨著對(duì)話輪數(shù)的增加而急劇下降,就像我們前面實(shí)驗(yàn)看到的那樣。而狀態(tài)更新策略的表現(xiàn)則非常穩(wěn)健,幾乎不受對(duì)話長度的影響。在10輪對(duì)話的場(chǎng)景下,新方法的Word F1分?jǐn)?shù)平均提高了大約10%,由大型語言模型評(píng)估的Info Score(信息分?jǐn)?shù))更是增加了超過1.5分。這證明它確實(shí)有效地整合了歷史信息,克服了遺忘問題。
再來看效率,這可以說是最驚人的部分。
表1:主要結(jié)果和消融研究。我們的方法在有效性(Info/QA分?jǐn)?shù))和效率(時(shí)間/令牌)方面均優(yōu)于基線。消融研究證明了HR和SR組件的必要性。(↑:越高越好,↓:越低越好)

在5輪對(duì)話中,新方法將總令牌消耗減少了59.4%,推理時(shí)間更是減少了73.1%。這意味著過去需要花費(fèi)100塊錢和1分鐘才能完成的任務(wù),現(xiàn)在只需要花40塊錢和不到20秒就能搞定。這個(gè)效率提升是巨大的,因?yàn)樗苊饬嗣恳惠喍贾貜?fù)處理冗長的歷史記錄。
研究者還測(cè)試了新方法在不同尺寸模型上的普適性。

結(jié)果顯示,無論是30億參數(shù)的小模型,還是140億參數(shù)的大模型,狀態(tài)更新策略都穩(wěn)定地優(yōu)于傳統(tǒng)方法。這說明這個(gè)策略的改進(jìn)是根本性的,不是碰巧在某個(gè)特定設(shè)置下才有效。
更重要的是,這種高效的信息過濾能力,直接轉(zhuǎn)化為了下游任務(wù)的更優(yōu)表現(xiàn)。在篩選出關(guān)鍵信息后,模型最終回答問題的得分(QA Score)也比基線方法高出了14.1%。這證明了通過狀態(tài)更新保留下來的信息,不僅緊湊高效,而且對(duì)于完成復(fù)雜的推理任務(wù)極具價(jià)值。
為了驗(yàn)證這個(gè)策略設(shè)計(jì)的合理性,研究者還做了消融研究,也就是把策略的核心組件一個(gè)個(gè)拿掉,看看會(huì)發(fā)生什么。
當(dāng)把“狀態(tài)重構(gòu)”(SR)模塊去掉后(無SR),整個(gè)系統(tǒng)的效率瞬間掉到和基線差不多的水平,證明了SR在壓縮上下文、提升效率方面的核心作用。
而當(dāng)把“歷史提醒”(HR)模塊去掉后(無HR),性能則出現(xiàn)了災(zāi)難性的下滑,信息分?jǐn)?shù)從6.91暴跌至3.74,問答分?jǐn)?shù)也從7.22降到了4.68。這個(gè)結(jié)果強(qiáng)有力地證明了,歷史提醒機(jī)制才是跨輪次推理和上下文理解的基石。
結(jié)論很明確:狀態(tài)重構(gòu)(SR)保證了效率,歷史提醒(HR)驅(qū)動(dòng)了性能,兩個(gè)組件缺一不可。
應(yīng)用前景廣闊
任何需要和用戶進(jìn)行長時(shí)間、多輪次交流的系統(tǒng),都能從中受益。
比如智能客服。它可以幫助客服機(jī)器人更好地記住用戶之前提到的所有問題和細(xì)節(jié),避免讓用戶重復(fù)描述,從而提供更精準(zhǔn)、更連貫的服務(wù)。
比如在線教育。一個(gè)AI輔導(dǎo)老師可以用這個(gè)策略來持續(xù)跟蹤學(xué)生的學(xué)習(xí)進(jìn)度和歷史提問,形成一個(gè)動(dòng)態(tài)更新的“學(xué)生狀態(tài)”,從而提供更有針對(duì)性的個(gè)性化指導(dǎo)。
這項(xiàng)技術(shù)也可能為檢索增強(qiáng)生成(Retrieval-Augmented Generation, RAG)技術(shù)帶來新的可能性。RAG系統(tǒng)通過從外部數(shù)據(jù)庫檢索信息來提升回答的準(zhǔn)確性,但如果檢索到的信息很多,如何讓模型有效消化并記住這些信息,同樣是個(gè)挑戰(zhàn)。狀態(tài)更新策略可以幫助RAG系統(tǒng)更高效地管理和利用檢索到的知識(shí)。
長遠(yuǎn)來看,這項(xiàng)研究為構(gòu)建更強(qiáng)大的智能代理(Intelligent Agent)的記憶模塊提供了關(guān)鍵的思路。智能代理需要維護(hù)一個(gè)關(guān)于世界和自身任務(wù)的內(nèi)部狀態(tài),并根據(jù)新的信息不斷更新。狀態(tài)更新策略,本質(zhì)上就是一種高效、明確的狀態(tài)管理機(jī)制。
下次當(dāng)你發(fā)現(xiàn)大模型開始胡言亂語時(shí),是不是也該考慮幫它“更新”一下狀態(tài)了?

























