(相關(guān)資料圖)
Unlimiformer 可以被注入到任何現(xiàn)有的編碼器 - 解碼器 transformer 中,能夠處理長度不限的輸入。
Transformer 是時下最強大的 seq2seq 架構(gòu)。預(yù)訓練 transformer 通常具有 512(例如 BERT)或 1024 個(例如 BART)token 的個上下文窗口,這對于目前許多文本摘要數(shù)據(jù)集(XSum、CNN/DM)來說是足夠長的。 但 16384 并不是生成所需上下文長度的上限:涉及長篇敘事的任務(wù),如書籍摘要(Krys-′cinski et al.,2021)或敘事問答(Kociskyet al.,2018),通常輸入超過 10 萬個 token。維基百科文章生成的挑戰(zhàn)集(Liu*et al.,2018)包含超過 50 萬個 token 的輸入。生成式問答中的開放域任務(wù)可以從更大的輸入中綜合信息,例如回答關(guān)于維基百科上所有健在作者的文章的聚合屬性的問題。圖 1 根據(jù)常見的上下文窗口長度繪制了幾個流行的摘要和問答數(shù)據(jù)集的大??;最長的輸入比 Longformer 的上下文窗口長 34 倍以上。 在這些超長輸入的情況下,vanilla transformer 無法進行縮放,因為原生注意力機制具有平方級的復(fù)雜度。長輸入 transformer 雖然比標準 transformer 更高效,但仍需要大量的計算資源,這些資源隨著上下文窗口大小的增加而增加。此外,增加上下文窗口需要用新的上下文窗口大小從頭開始重新訓練模型,計算上和環(huán)境上的代價都不小。 在「Unlimiformer: Long-Range Transformers with Unlimited Length Input」一文中,來自卡內(nèi)基梅隆大學的研究者引入了 Unlimiformer。這是一種基于檢索的方法,這種方法增強了預(yù)訓練的語言模型,以在測試時接受無限長度的輸入。 論文鏈接:https://arxiv.org/pdf/2305.01625v1.pdf Unlimiformer 可以被注入到任何現(xiàn)有的編碼器 - 解碼器 transformer 中,能夠處理長度不限的輸入。給定一個長的輸入序列,Unlimiformer 可以在所有輸入 token 的隱藏狀態(tài)上構(gòu)建一個數(shù)據(jù)存儲。然后,解碼器的標準交叉注意力機制能夠查詢數(shù)據(jù)存儲,并關(guān)注前 k 個輸入 token。數(shù)據(jù)存儲可以存儲在 GPU 或 CPU 內(nèi)存中,能夠次線性查詢。 Unlimiformer 可以直接應(yīng)用于經(jīng)過訓練的模型,并且可以在沒有任何進一步訓練的情況下改進現(xiàn)有的 checkpoint。Unlimiformer 經(jīng)過微調(diào)后,性能會得到進一步提高。本文證明,Unlimiformer 可以應(yīng)用于多個基礎(chǔ)模型,如 BART(Lewis et al.,2020a)或 PRIMERA(Xiao et al.,2022),且無需添加權(quán)重和重新訓練。在各種長程 seq2seq 數(shù)據(jù)集中,Unlimiformer 不僅在這些數(shù)據(jù)集上比 Longformer(Beltagy et al.,2020b)、SLED(Ivgi et al.,2022)和 Memorizing transformers(Wu et al.,2021)等強長程 Transformer 表現(xiàn)更好,而且本文還發(fā)現(xiàn) Unlimiform 可以應(yīng)用于 Longformer 編碼器模型之上,以進行進一步改進。 由于編碼器上下文窗口的大小是固定的,Transformer 的最大輸入長度受到限制。然而,在解碼過程中,不同的信息可能是相關(guān)的;此外,不同的注意力頭可能會關(guān)注不同類型的信息(Clark et al.,2019)。因此,固定的上下文窗口可能會在注意力不那么關(guān)注的 token 上浪費精力。 在每個解碼步驟中,Unlimiformer 中每個注意力頭都會從全部輸入中選擇一個單獨的上下文窗口。通過將 Unlimiformer 查找注入解碼器來實現(xiàn):在進入交叉注意力模塊之前,該模型在外部數(shù)據(jù)存儲中執(zhí)行 k 最近鄰 (kNN) 搜索,在每個解碼器層中的每個注意力頭中選一組 token 來參與。 為了將比模型的上下文窗口長度更長的輸入序列進行編碼,本文按照 Ivgi et al. (2022) 的方法對輸入的重疊塊進行編碼 (Ivgi et al. ,2022),只保留每個 chunk 的輸出的中間一半,以確保編碼過程前后都有足夠的上下文。最后,本文使用 Faiss (Johnson et al., 2019) 等庫對數(shù)據(jù)存儲中的編碼輸入進行索引(Johnson et al.,2019)。 在標準的交叉注意力機制中,transformer 的解碼器關(guān)注編碼器的最終隱狀態(tài),編碼器通常截斷輸入,并僅對輸入序列中的前 k 個 token 進行編碼。 本文不是只關(guān)注輸入的這前 k 個 token,對于每個交叉注意頭,都檢索更長的輸入系列的前 k 個隱狀態(tài),并只關(guān)注這前 k 個。這樣就能從整個輸入序列中檢索關(guān)鍵字,而不是截斷關(guān)鍵字。在計算和 GPU 內(nèi)存方面,本文的方法也比處理所有輸入 token 更便宜,同時通常還能保留 99% 以上的注意力性能。 圖 2 顯示了本文對 seq2seq transformer 架構(gòu)的更改。使用編碼器對完整輸入進行塊編碼,并將其存儲在數(shù)據(jù)存儲中;然后,解碼時查詢編碼的隱狀態(tài)數(shù)據(jù)存儲。kNN 搜索是非參數(shù)的,并且可以被注入到任何預(yù)訓練的 seq2seq transformer 中,詳情如下。 表 3 顯示了長文本(4k 及 16k 的 token 輸入)摘要數(shù)據(jù)集中的結(jié)果。 在表 4 的訓練方法中,Unlimiformer 能夠在各項指標上達到最優(yōu)。 表 5 顯示了在書籍摘要上的結(jié)果??梢钥吹剑?BARTbase 和 PRIMERA,應(yīng)用 Unlimiformer 都能取得一定的改進效果。 ?THE END
轉(zhuǎn)載請聯(lián)系本公眾號獲得授權(quán)
投稿或?qū)で髨蟮溃篶ontent@jiqizhixin.com
標簽: