大模型上下文長度擴展中的檢索增強技術簡述

基于Transformer的語言模型在眾多自然語言處理任務上都取得了十分優異的成績,在一些任務上已經達到SOTA的效果。但是,經過預訓練后,模型能夠較好處理的序列長度就固定下來。而當前的眾多場景往往需要處理很長的上下文(如:大的代碼倉庫、書籍等長文檔的摘要、few-shot等輸入較長的in-context learning場景等等),其長度超過了模型預訓練時使用的長度,無法一次性輸入模型,導致語言模型無法充分利用長輸入中完整的知識,因而性能受到制約。

針對這一問題,研究者們提出了多種檢索的方法,從全部的歷史上文中檢索所需的相關token,放入有限的窗口內計算attention,使得模型能夠利用短的輸入窗口處理長的序列。

方法概述

受預訓練的限制,模型能夠較好處理的序列長度相對固定,通常為2048、4096等等。在不改變attention計算機制的前提下,很難保證在模型能力損失較小的同時,顯著擴展模型能夠處理的上下文長度。并且,在長文本上訓練的代價也很高,直接在長文本上從頭訓練一個窗口長度很長的模型較為困難。于是,我們希望模型能夠在有限的處理窗口中能夠關注長上下文中關鍵的token,獲取其中的信息,從而充分利用長文本中的知識,提升處理長文本的能力。

圖片

圖1 基于檢索增強的處理流程

眾多研究者提出了基于檢索增強的方法,通過在上下文歷史中查找關鍵token,并將它們放入attention計算中的方式,增強模型在長文本任務上的表現。其大致流程如圖1所示,基本思路是分段處理,通過多次調用短上下文模型來處理長上下文輸入,在此過程中保存K-V Cache供后續分段使用。引入檢索增強技術之后,模型的處理流程如下。首先,模型以不同的檢索粒度從K-V Cache中取出相應的 token 表示。然后,模型計算當前處理的token與這些歷史token的相似度,并根據相似度結果選取最相關的top-k token。檢索到的token會與當前窗口內的上下文拼接在一起,組合成新的上下文,用于當前的輸入。隨后,進行合適的位置編碼。最后,把輸入序列送入模型層,得到當前層的輸出,其中最關鍵的是attention部分。下文將按上述處理順序,對應圖1中的四個關鍵步驟依次介紹。 ## 技術交流&資料

技術要學會分享、交流,不建議閉門造車。一個人可以走的很快、一堆人可以走的更遠。

成立了大模型算法面試和技術交流群,相關資料、技術交流&答疑,均可加我們的交流群獲取,群友已超過2000人,添加時最好的備注方式為:來源+興趣方向,方便找到志同道合的朋友。

方式①、微信搜索公眾號:機器學習社區,后臺回復:加群
方式②、添加微信號:mlc2040,備注:來自CSDN + 技術交流

用通俗易懂的方式講解系列

  • 重磅來襲!《大模型面試寶典》(2024版) 發布!

  • 重磅來襲!《大模型實戰寶典》(2024版) 發布!

  • 用通俗易懂的方式講解:一文講透最熱的大模型開發框架 LangChain

  • 用通俗易懂的方式講解:這應該是最全的大模型訓練與微調關鍵技術梳理

  • 用通俗易懂的方式講解:大模型訓練過程概述

  • 用通俗易懂的方式講解:專補大模型短板的RAG

  • 用通俗易懂的方式講解:大模型微調方法總結

  • 用通俗易懂的方式講解:掌握大模型這些優化技術,優雅地進行大模型的訓練和推理!

1 檢索粒度與表示

我們首先關注的問題是如何從K-V Cache中檢索與當前處理步驟最相關的一部分token,其中首要的問題是檢索粒度,也就是檢索的基本單元的大小。

最基本的是token級別的檢索。具體來說,是在K-V Cache中逐個token計算與當前待處理的token的相似度,選取相似度最高的top-k token對應的key與value向量作為檢索結果。這類方法的代表有MemTRM[1]、FoT[2]、Unlimiformer[3]等等。

盡管token級別的檢索在實現上相對簡單,但也面臨一些限制。首先,由于檢索到的是離散的token,相鄰的token并不一定能被一并檢索,這可能導致語義上的獨立。其次,每次生成新token時,都需要與K-V Cache中的所有token重新計算相似度,這增加了計算量,檢索效率較低。

為了改進這些缺陷,有研究者提出使用更粗的檢索粒度,把輸入序列分成一個個長度相同的block,在block級別進行檢索。block級別的檢索是在處理每個新的token時,從K-V Cache里以block為單位進行相似度計算,選取top-k block作為檢索結果。block級別的檢索得到是一連串相鄰的token,語義上比離散的token更連貫。另外,由于每次檢索只在block上進行一次相似度計算,大大減少了計算量并且提高了檢索效率。

然而,block級別的檢索也帶來了一個新的問題:如何有效地表示block以完成相似度計算。如圖2所示,為了充分利用block內token的信息,可以按一定規則對block內的token進行信息融合的操作,從而得到block的表示。例如,LongMEM[4]通過計算block內token表示的mean pooling來表示相應的block;而InFLLM[5]則是在block計算每個token與其他token的一種整體相似性指標(representative score),選取其中分數較高的一部分token共同作為block的表示。此外,還有方法引入額外的token來表示block,如Landmark[6]方法中在詞表內添加了一個新的token—Landmark,并將其放置在每個block的末尾作為block的代表,同時這個Landmark token也參與到序列的計算中,通過Grouped Softmax實現層次化的attention機制,我們在后面還會展開闡述Landmark的具體做法。

圖片

圖2 block的表示

2 相似度計算

在確定檢索粒度后,我們需要建立適當的規則來計算相似度。目前的方法幾乎都采用將當前處理的token的query向量與檢索粒度所代表的key向量進行內積計算作為相似度的標準。這種做法源于標準的attention計算機制,標準attention中所計算的query與key的內積本身就是一種便于計算的相似度,而且相似度越高,相應value的權重就越高。現有的方法充分利用這一特性,計算當前token的query向量與檢索粒度所代表的key向量相似度作為attention貢獻的度量,通過舍棄低貢獻的上下文來節省上下文窗口的可用空間,得到一種attention的有效近似。

3 位置編碼

在完成相似度計算后,我們選擇相似度最高的top-k token作為檢索的結果。我們把這部分來自上下文歷史的token記作retrieved context token,而在當前窗口范圍內的token記為local context token。把這兩類context token拼接在一起,就得到了輸入當前層的完整context token序列。

接下來,在將這一組合的context token輸入到模型進行attention計算之前,需要考慮位置編碼,以區分不同位置token。在檢索方法中,由于retrieved context token的位置不固定,并且在緩存時記錄每個token具體的位置的代價較高,很難給出準確的位置信息。因此,需要找到一個合適的編碼位置的方式來融合一定的位置信息。Sun等人[79]在PG19[8]數據集上的實驗表明,相對位置信息對遠距離的token似乎并不重要。基于此,MemTRM、FoT、InfLLM等方法直接將retrieved context token部分的位置編碼設置成相同的位置向量,忽略了retrieved context token內彼此的位置信息。而另一些方法認為retrieved context token內部的相對順序依然重要,因此為其添加了位置編碼,如LongMEM則是直接使用ALiBi[9]進行相對位置編碼,Landmark方法則將retrieved context token與local context token放在同一窗口內,對它們重新進行相對位置編碼。

4 Attention計算

在進行attention計算時,我們需要考慮如何充分利用由retrieved context token和local context token這兩類token組成的context tokens。

最簡單的處理方法是將兩類token視作同等地位,直接使用常規的attention計算方式。如在FoT與InfLLM中就是使用標準的attention進行計算;在Unlimiformer中則是使用Cross Attention完成相應的計算。

然而,對于當前處理的token來說,這兩類context token包含信息的重要性并不相同。為了充分利用它們的信息,Joint Attention對它們做了一定的區分,分別計算local context與retrieved context中各自的attention。然后,加權得到最終的attention結果,可以概括成以下的公式:

其中,表示最終的attention結果,和 分別表示利用local context和retrieved context計算的attention結果,是一個可學習的參數,用于平衡兩個部分的貢獻。在MemTRM與LongMEM 中均采用了這種方法。

Landmark在此基礎上更進一步。為區分retrieved context token內來自不同位置的信息,Landmark提出使用Grouped Softmax來更細粒度地分配權重。具體來說,該方法首先將Landmark這一類token與local context token放在一起進行softmax計算,從中選出Top-K個相關的block,同時保留softmax的計算結果。然后分別在這些block內單獨計算attention,利用先前計算softmax結果對不同block的attention進行加權,得到最終的attention結果。

5 檢索位置

另外,檢索的實現也是有一定資源的消耗,因此在平衡效率和性能的目標下,不同的方法對檢索時機的選取有所不同。其中,MemTRM、LongMEM、FoT選擇在模型中的某些指定層進行檢索,而Landmark、InfLLM則是在每一層都進行檢索。專用于encoder-decoder架構的方法則是在decoder部分進行檢索,例如Unlimiformer在每個decoder層均進行檢索。

以上就是通過檢索增強處理長文本方法的流程,可以將上述提到方法的各環節大致整理為如下的表格:

表1 上述方法各環節內容

在這里插入圖片描述
性能對比

上述方法在一些長文本數據集上驗證其語言能力:PG-19[11](英文書籍)、arXiv(數學論文)、C4[10](網絡文檔)、GitHub(代碼)和 Isabelle(定理證明)等等。通常選用PPL作為評價的指標。此外,還涉及一些自然語言理解的任務,如SST-2[11]、MR[12]、Subj[13]、SST-5[11]、MPQA[14]等等。

雖然不同的方法選擇了其中相同的一些數據集或任務進行驗證實驗,但在各自的實驗中,使用的數據集、基線、數據處理、訓練方式等實驗設置不同,導致不同方法即便在相同數據集或任務上的實驗結果也不可比。

總的來說,現有工作各自的實驗結果在一定程度上證明了這些方法處理長文本的有效性,但目前仍然缺乏可以直接用于對比各項工作性能的公開結果。

與檢索增強生成(RAG)技術的對比

雖然通過檢索增強處理長文本的方法和檢索增強生成(Retrieval Augmented Generation,RAG)均用到了檢索,但二者之間還是存在著一定的區別。

首先,二者在檢索對象上存在區別。長文本檢索增強方法是在上下文歷史的表示中檢索,而RAG則側重于在廣泛的外部知識庫中檢索。

其次,這兩類方法在檢索的實現上也有所不同。如前面介紹的內容,長文本檢索增強方法直接利用K-V Cache中的key計算相似度,作為檢索的標準。并將檢索到的(key,value)對直接用于模型后續attention的計算。相比之下,RAG面對龐大的外部知識庫,利用一個獨立的檢索器(retriever)完成檢索。此外,RAG可能還需要額外的組件來確保檢索到的內容與生成的文本之間的一致性。由于這種結構上的復雜性,RAG通常不適用于直接處理長文本。通過上述分析,我們可以看出,雖然兩種方法都涉及檢索過程,但它們在檢索對象和檢索實現上有著不同,各有其適用的場景和限制。

那么,可以考慮采用 RAG 的方法來處理長文本嗎?答案是肯定的。RPT[15]架構正是借鑒了RAG的檢索思路來處理長文本。如圖3所示,其整體流程與前文介紹相似,但每個步驟涉及的對象和處理方式有所區別,下面進行簡要介紹。RPT采用encoder-decoder架構,在decoder階段進行檢索。它參照了RAG的實現,并配備了一個可訓練的檢索器。不同于RAG,RPT僅從encoder的輸出中進行檢索,而不涉及外部知識。具體來說,輸入首先通過encoder處理,得到最后一層的隱層表示,這些表示被存儲下來,構成檢索庫。在decode階段進行Cross Attention計算時,會借助一個額外的檢索器在這個檢索庫中檢索。檢索器首先將encoder的輸出與decoder的輸入通過一個雙向attention層進行對齊,然后計算這兩者對齊后的表示的內積作為相似度評分,最后選擇top-k的表示作為檢索結果。值得注意的是,此處的檢索是在 block-to-block 級別進行,與之前的token-to-token和token-to-block不同。檢索完成后,所得的表示還需通過一個鄰接門控(neighbor gating)機制,參與到最終的Cross Attention的計算中。這里的Cross Attention采用了 RAG 中的一種變體—Chunked Cross Attention[16],這種形式能夠有效學習到上下文的連貫性,從而更準確地預測下文。

圖片

圖3 RPT[15]架構

參考文獻

[1] Wu Y, Rabe M N, Hutchins D L, et al. Memorizing transformers[J]. arXiv preprint arXiv:2203.08913, 2022.

[2] Tworkowski S, Staniszewski K, Pacek M, et al. Focused transformer: Contrastive training for context scaling[J]. Advances in Neural Information Processing Systems, 2024, 36.

[3] Bertsch A, Alon U, Neubig G, et al. Unlimiformer: Long-range transformers with unlimited length input[J]. Advances in Neural Information Processing Systems, 2024, 36.

[4] Wang W, Dong L, Cheng H, et al. Augmenting language models with long-term memory[J]. Advances in Neural Information Processing Systems, 2024, 36.

[5] Xiao C, Zhang P, Han X, et al. InfLLM: Unveiling the Intrinsic Capacity of LLMs for Understanding Extremely Long Sequences with Training-Free Memory[J]. arXiv preprint arXiv:2402.04617, 2024.

[6] Mohtashami A, Jaggi M. Random-access infinite context length for transformers[J]. Advances in Neural Information Processing Systems, 2024, 36.

[7] Dai Z, Yang Z, Yang Y, et al. Transformer-xl: Attentive language models beyond a fixed-length context[J]. arXiv preprint arXiv:1901.02860, 2019.

[8] Rae J W, Potapenko A, Jayakumar S M, et al. Compressive transformers for long-range sequence modelling[J]. arXiv preprint arXiv:1911.05507, 2019.

[9] Press O, Smith N A, Lewis M. Train short, test long: Attention with linear biases enables input length extrapolation[J]. arXiv preprint arXiv:2108.12409, 2021.

[10] Raffel C, Shazeer N, Roberts A, et al. Exploring the limits of transfer learning with a unified text-to-text transformer[J]. Journal of machine learning research, 2020, 21(140): 1-67.

[11] Socher R, Perelygin A, Wu J, et al. Recursive deep models for semantic compositionality over a sentiment treebank[C]//Proceedings of the 2013 conference on empirical methods in natural language processing. 2013: 1631-1642.

[12] Auer S, Bizer C, Kobilarov G, et al. Dbpedia: A nucleus for a web of open data[C]//international semantic web conference. Berlin, Heidelberg: Springer Berlin Heidelberg, 2007: 722-735.

[13] Pang B, Lee L. A sentimental education: Sentiment analysis using subjectivity summarization based on minimum cuts[J]. arXiv preprint cs/0409058, 2004.

[14] Wiebe J, Wilson T, Cardie C. Annotating expressions of opinions and emotions in language[J]. Language resources and evaluation, 2005, 39: 165-210.

[15] Rubin O, Berant J. Long-range language modeling with self-retrieval[J]. arXiv preprint arXiv:2306.13421, 2023.

[16] Borgeaud S, Mensch A, Hoffmann J, et al. Improving language models by retrieving from trillions of tokens[C]//International conference on machine learning. PMLR, 2022: 2206-2240.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/38309.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38309.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38309.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CppTest單元測試框架(更新)

目錄 1 背景2 設計3 實現4 使用4.1 主函數4.2 使用方法 1 背景 前面文章單元測試之CppTest測試框架中講述利用宏ADD_SUITE將測試用例自動增加到測試框架中。但在使用中發現一個問題,就是通過宏ADD_SUITE增加多個測試Suite時,每次運行時都是所有測試Suit…

逆向開發環境準備

JDK安裝 AndroidStudio安裝 默認sdk路徑 C:\Users\Administrator\AppData\Local\Android\Sdk 將platform-tools所在的目錄添加到path C:\Users\Administrator\AppData\Local\Android\Sdk\platform-tools 主要目的是使用該目錄下的adb等命令 將tools所在的目錄添加到path C:\Us…

1-5題查詢 - 高頻 SQL 50 題基礎版

目錄 1. 相關知識點2. 例題2.1.可回收且低脂的產品2.2.尋找用戶推薦人2.3.大的國家2.4. 文章瀏覽 I2.5. 無效的推文 1. 相關知識點 sql判斷,不包含null,判斷不出來distinct是通過查詢的結果來去除重復記錄ASC升序計算字符長度 CHAR_LENGTH() 或 LENGTH(…

sqlmap注入詳解

免責聲明:本文僅做分享... 目錄 1.介紹 2.特點 3.下載 4.幫助文檔 5.常見命令 指定目標 請求 HTTP cookie頭 HTTP User-Agent頭 HTTP協議的證書認證 HTTP(S)代理 HTTP請求延遲 設定超時時間 設定重試超時 設定隨機改變的參數值 利用正則過濾目標網址 避免過多的…

Python-爬蟲案例

Python-爬蟲案例 代碼代碼 代碼 import requests import json import threading from queue import Queue import timeclass HeiMaTouTiao:def __init__(self):self.headers {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) ""AppleWebKit/53…

前端筆記-day11

文章目錄 01-空間-平移02-視距03-空間旋轉Z軸04-空間旋轉X軸05-空間旋轉Y軸06-立體呈現07-案例-3D導航08-空間縮放10-動畫實現步驟11-animation復合屬性12-animation拆分寫法13-案例-走馬燈14-案例-精靈動畫15-多組動畫16-全民出游全民出游.htmlindex.css 01-空間-平移 <!D…

基于Spring Boot的在線醫療咨詢平臺的設計與實現【附源碼】

基于Spring Boot的在線醫療咨詢平臺的設計與實現 Design and implementation of the computer hardware mall based on Spring Boot Candidate&#xff1a; Supervisor&#xff1a; April 20th, 2024 學位論文原創性聲明 本人鄭重聲明&#xff1a;所呈交的論文是本人在導師…

初中英語優秀作文分析-006How to Deal with the Exam Stress-如何應對考試壓力

更多資源請關注紐扣編程微信公眾號 記憶樹 1 We students are very busy with schoolwork and in the face of many exams every school day. 翻譯 我們學生忙于功課&#xff0c;每個上學日都面臨許多考試。 簡化記憶 考試 句子結構 We students 主語 我們學生&#xf…

Vite: 高階特性 Pure ESM

概述 ESM 已經逐步得到各大瀏覽器廠商以及 Node.js 的原生支持&#xff0c;正在成為主流前端模塊化方案。 而 Vite 本身就是借助瀏覽器原生的 ESM 解析能力( type“module” )實現了開發階段的 no-bundle &#xff0c;即不用打包也可以構建 Web 應用。不過我們對于原生 ESM 的…

綜合評價類模型——突變級數法

含義 首先&#xff1a;對評價目標進行多層次矛盾分解其次&#xff1a;利用突變理論和模糊數學相結合產生突變模糊隸屬函數再次&#xff1a;由歸一公式進行綜合量化運算最終&#xff1a;歸一為一個參數&#xff0c;即求出總的隸屬函數&#xff0c;從而對評價目標進行排序分析特點…

【linux/shell實戰案例】shell中變量的使用

目錄 一.linux變量聲明及定義 二.linux變量使用方法 三.linux變量使用花括號${name}和雙引號“$name”的區別 四.linux變量使用單引號$name和雙引號“$name”的區別 五.linux變量中使用命令 一.linux變量聲明及定義 #!/bin/bash namezhaodabao 等號兩邊不能有空格變量名…

ES6面試題——箭頭函數和普通函數有什么區別

1. this指向問題 <script> let obj {a: function () {console.log(this); // 打印出&#xff1a;{a: ?, b: ?}},b: () > {console.log(this); // 打印出Window {window: Window, self: Window,...}}, }; obj.a(); obj.b(); </script> 箭頭函數中的this是在箭…

成都市水資源公報(2000-2022年)

數據年限&#xff1a;2000-2022年&#xff0c;無2009年 數據格式&#xff1a;pdf、word、jpg 數據內容&#xff1a;降水量、地表水資源量、地下水資源量、水資源總量、蓄水狀況、平原區淺層地下水動態、水資源情況分析、供水量、用水量、污水處理、洪澇干旱等

類似李跳跳的軟件有什么,強烈推薦所有安卓手機安裝!!!

今天阿星分享一款讓安卓手機更順滑的神器——智慧島。你問我李跳跳&#xff1f;由于大家都知道的原因&#xff0c;那是個曾經讓廣告無處遁形的神兵利器&#xff0c;可惜現在它已經退休了。不過別擔心&#xff0c;智慧島接過了接力棒&#xff0c;繼續為我們的安卓體驗保駕護航。…

Raccon:更好防側信道攻擊的后量子簽名方案

1. 引言 安全社區已經開發出了一些出色的加密算法&#xff0c;這些算法非常安全&#xff0c;但最終&#xff0c;所有的數據都會被存儲在硅和金屬中&#xff0c;而入侵者越來越多地會在那里放置監視器來破解密鑰。 破解加密密鑰通常涉及暴力破解方法或利用實施過程中的缺陷。然…

2029年AI服務器出貨量將突破450萬臺,AI推理服務器即將爆發式增長

在2020年&#xff0c;新冠疫情與遠程辦公模式的興起推動了所有類型服務器的出貨量達到峰值&#xff0c;隨后幾年里&#xff0c;除了AI服務器之外的所有類別都回歸到了正常水平。 根據Omdia的研究數據&#xff0c;AI服務器的出貨量在2020年急劇上升&#xff0c;并且至今未顯示出…

瀏覽器中如何獲取用戶網絡狀態

網頁開發中存在需要獲取用戶是否在線的場景及用戶網絡狀態&#xff0c;瀏覽器提了navigator.onLine和navigator.connection可以實現這一需求。 獲取在線狀態 if (navigator.onLine) {console.log("online"); } else {console.log("offline"); }監聽網絡狀…

日志的介紹

知識鋪墊&#xff1a;在我們日常開發中&#xff0c;其實日志是和我們息息相關的。但可能平常都沒怎么注意到日志相關的知識點&#xff0c;也不怎么關注日志&#xff0c;然后&#xff0c;在生產環境中&#xff0c;日志是必不可少的存在&#xff0c;項目出現問題了都是通過日志來…

cesium 添加 Echarts 圖層(空氣質量點圖)

cesium 添加 Echarts 圖層(下面附有源碼) 1、實現思路 1、在scene上面新增一個canvas畫布 2、通坐標轉換,將經緯度坐標轉為屏幕坐標來實現 3、將ecarts 中每個series數組中元素都加 coordinateSystem: ‘cesiumEcharts’ 2、示例代碼 <!DOCTYPE html> <html lan…

Excel 數據篩選難題解決

人不走空 &#x1f308;個人主頁&#xff1a;人不走空 &#x1f496;系列專欄&#xff1a;算法專題 ?詩詞歌賦&#xff1a;斯是陋室&#xff0c;惟吾德馨 目錄 &#x1f308;個人主頁&#xff1a;人不走空 &#x1f496;系列專欄&#xff1a;算法專題 ?詩詞歌…