一個多月前,OpenAI 的 GPT-4 問世。除了各種出色的直覺式演示外,它還實現了一個重要更新:可以處理的上下文 token 長度預設為 8k,但最長可達 32K(約 50 頁文字)。這意味著,在向 GPT-4 提問時,我們可以輸入比之前長得多的文字。這使得 GPT-4 的應用場景大大擴展,能更好地處理長對話、長文本以及文件搜尋和分析。
不過,這項紀錄很快就被打破了:來自Google研究院的CoLT5 將模型可以處理的上下文token 長度擴展到了64k 。
這樣的突破並不容易,因為這些使用Transformer 架構的模型都要面臨一個問題:Transformer 處理長文件在計算上是非常昂貴的,因為注意力成本隨輸入長度呈現二次成長,這使得大型模型越來越難以應用於更長的輸入。
儘管如此,研究者依然在此方向上不斷突破。前幾天,一篇來自開源對話AI 技術堆疊DeepPavlov 等機構的研究表明:透過採用一種名為Recurrent Memory Transformer(RMT)的架構,他們可以將BERT 模型的有效上下文長度增加到200 萬個token(按照OpenAI 的計算方式,大約相當於3200 頁文本),同時保持了較高的記憶檢索準確性(註:Recurrent Memory Transformer 是Aydar Bulatov 等人在NeurIPS 2022 的一篇論文中提出的方法)。新方法允許儲存和處理局部和全局訊息,並透過使用 recurrence 使資訊在輸入序列的各 segment 之間流動。
作者表示,透過使用Bulatov 等人在「Recurrent Memory Transformer」一文中介紹的簡單的基於token 的記憶機制,他們可以將RMT 與BERT 這樣的預訓練Transformer 模型結合起來,用一個Nvidia GTX 1080Ti GPU 就可以對超過100 萬個token 的序列進行全注意和全精度操作。
論文網址:https://arxiv.org/pdf/2304.11062.pdf
#不過,也有人提醒說,這並不是真正的「免費的午餐」,上述論文的提升是用「更長的推理時間實質性的品質下降」換來的。因此,它還不能算是一次變革,但它可能成為下一個範式(token 可能無限長)的基礎。
該研究採用Bulatov 等人2022 年提出的方法Recurrent Memory Transformer (RMT),並將其改成即插即用的方法,主要機制如下圖所示:
#冗長的輸入被分成多個segment,記憶向量(memory vector)被加入到第一個segment 嵌入之前,並與segment token 一起處理。對於像 BERT 這樣的純編碼器模型,記憶只在 segment 的開頭添加一次,這一點與 (Bulatov et al., 2022) 不同,純解碼器模型將記憶分為讀取和寫入兩部分。對於時間步長 τ 和 segment
#,循環依照下列步驟執行:
##其中,N 是 Transformer 的層數。前向傳播之後,
包含 segment τ 的更新記憶 token。
輸入序列的 segment 依照順序處理。為了啟用循環連接,研究將記憶token 的輸出從目前segment 傳遞到下一個segment 的輸入:
## RMT 中的記憶和循環都僅基於全域記憶token。這允許主幹 Transformer 保持不變,從而使 RMT 的記憶增強能力與任何 Transformer 模型都相容。
計算效率
#該研究估算了不同大小和序列長度的RMT 和Transformer 模型所需的FLOP 。
如下圖 3 所示,如果 segment 的長度固定,RMT 可針對任何模型大小進行線性擴展。該研究透過將輸入序列分成 segment,並僅在 segment 邊界內計算完整的注意力矩陣來實現線性擴展。
由於 FFN 層的計算量很大,較大的 Transformer 模型往往會表現出較慢的隨序列長度的二次擴展(quadratic scaling)。然而,對於大於 32000 的超長序列,它們會退回到二次擴展。對於多於一個 segment 的序列(本研究中 > 512),RMT 比非循環模型需要更少的 FLOP,並且可以將 FLOP 的數量減少多達 295 倍。 RMT 為較小的模型提供了更大的 FLOP 相對減少,但在絕對數量上,OPT-175B 模型的 FLOP 減少了 29 倍是非常顯著的。
記憶任務為了測試記憶能力,研究建構了需要記憶簡單事實和基本推理的合成資料集。任務輸入由一個或多個事實和一個只有使用所有事實才能回答的問題組成。為了增加任務難度,該研究還添加了與問題或答案無關的自然語言文本來充當噪聲,因此模型的任務是將事實與不相關的文本分開,並使用事實來回答問題。
事實記憶
第一項任務是檢測RMT 在記憶中長時間寫入和儲存資訊的能力,如下圖4 頂部所示。在最簡單的情況下,事實往往位於輸入開頭,而問題總是在最後。問題和答案之間不相關文本的數量逐漸增加,以至於整個輸入不適合單一模型輸入。
#事實偵測與記憶
事实检测通过将一个事实移动到输入中的随机位置来增加任务难度,如上图 4 中部所示。这需要模型首先将事实与不相关文本区分开来,把事实写入记忆中,然后用它回答位于末尾的问题。
利用记忆事实进行推理
记忆的另一个操作是使用记忆事实和当前上下文进行推理。为了评估这一功能,研究者使用了一个更复杂的任务,其中生成了两个事实并将它们放置在了输入序列之中,如上图 4 底部所示。在序列末尾提出的问题是以一种「必须使用任意事实来正确回答问题」的方式来描述。
研究者使用 4 到 8 块英伟达 1080ti GPU 来训练和评估模型。对于更长的序列,他们则使用单个 40GB 的英伟达 A100 来加快评估速度。
课程学习
研究者观察到,使用训练计划能够显著提升解决方案的准确性和稳定性。最开始,RMT 在较短版本的任务上进行训练,并在训练收敛时通过添加另一个 segment 来增加任务长度。课程学习过程一直持续,直到达到所需的输入长度。
在实验中,研究者首先从适合单个 segment 的序列开始。实际 segment 的大小为 499,但由于 BERT 的 3 个特殊 token 和 10 个记忆占位符从模型输入中保留下来,大小为 512。他们注意到, 在较短任务上训练后,RMT 更容易解决更长版本任务,这得益于它使用更少训练步收敛到完美的解决方案。
外推能力
RMT 对不同序列长度的泛化能力如何呢?为了回答这个问题,研究者评估了在不同数量 segment 上训练的模型,以解决更长的任务,具体如下图 5 所示。
他们观察到,模型往往在较短任务上表现更好,唯一的例外是单 segment 推理任务,一旦模型在更长序列上训练,则该任务变得很难解决。一个可能的解释是:由于任务大小超过了一个 segment,则模型不再「期待」第一个 segment 中的问题,导致质量下降。
有趣的是,RMT 泛化到更长序列的能力也随着训练 segment 的增加而出现。在 5 个或更多 segment 上训练后,RMT 可以近乎完美地泛化到两倍长的任务。
为了测试泛化的局限性,研究者将验证任务大小增至 4096 个 segment 或 2,043,904 个 token(如上图 1 所示),RMT 在如此长的序列上表现得出奇的好。检测和记忆任务最简单,推理任务最复杂。
在下图 6 中,通过检查特定 segment 上的 RMT 注意力,研究者观察到了记忆操作对应特定的注意力模式。此外 5.2 节中极长序列上的高外推性能证明了学得记忆操作的有效性,即使使用数千次也是如此。
更多技术与实验细节请参阅原论文。
以上是真量子速讀:突破GPT-4一次只能理解50頁文字限制,新研究擴展到百萬token的詳細內容。更多資訊請關注PHP中文網其他相關文章!