只有4k視窗長度的大模型,也能閱讀大段文字了!
普林斯頓的華人博士生的一項最新成果,成功「突破」了大模型窗口長度的限制。
不僅能回答各種問題,整個實現的過程全靠prompt就能完成,不需要任何的額外訓練。
研究團隊創建了一種名為MemWalker的樹狀記憶策略,可以突破模型本身的視窗長度限制。
測驗過程中,模型閱讀的最長文字包含了1.2萬 token,成績相比LongChat大幅提升。
相比於相似的TreeIndex,MemWalker可以進行推理並回答任何問題,而不是只做概括。
MemWalker的研發利用到了「分而治之」的思想,就此有網友這樣評論:
每次我們讓大模型的思考過程更像人類,它們的表現就會越好
那麼,具體什麼是樹狀記憶策略,又是如何用有限的視窗長度閱讀長文本的呢?
模型上,MemWalker使用Stable Beluga 2作為基本模型,它是Llama 2-70B經過指令調優得到的。
在選擇該模型之前,開發者對比了其與原始Llama 2的表現,並最終確定選用。
就像MemWalker這個名字一樣,它的工作過程就像記憶流在行走。
具體來看,大致分為記憶樹建構和導航檢索兩個階段。
建構記憶樹時,長文本會被分割成多個小段(seg1-6),並由大模型分別針對每一段做出總結,得到「葉子節點」(leaf nodes,summ1-6)。
分割時,每段的長度越長,層級就會越少,有利於後續檢索,但其本身過長又會導致準確度下降,因此需要綜合考慮確定每段長度。
作者認為,每一段合理的長度是500-2000token,而實驗中使用的為1000token。
然後,模型遞歸地將這些葉子節點的內容再次進行總結,形成「非葉節點」(non-leaf nodes,summ7-8)。
二者的另一個差異是,葉子節點包含了原始資訊,非葉節點只有概括得到的二級資訊。
作用上,非葉節點用來導覽定位答案所在的葉子節點,而葉子節點則用來推理出答案。
其中的非葉節點可以有多個層級,模型逐步進行總結概括,直到得到“根節點”,形成完整的樹狀結構。
記憶樹建立完畢後,就可以進入導覽檢索階段來產生答案了。
這過程中,模型從根節點開始,逐一讀取下一級子節點的內容,然後推論出應該進入這個節點還是返回。
決定進入這個節點之後,再次重複這樣的過程,直到讀取到葉節點。如果葉節點的內容適合則產生答案,否則回傳。
為了確保答案的完整性,這個過程的結束條件並非發現了一個合適的葉節點,而是模型認為得到了完整答案,或達到最大步數。
導航過程中,如果模型發現進入了錯誤的路徑,也可以導航回退。
此外,MemWalker中還引入了工作記憶機制來提高準確度。
該機制會將已經造訪過的節點內容加入到目前內容的上下文中。
當模型進入一個新節點時,目前節點內容都會被加入記憶中。
這個機制讓模型在每一步都可以利用訪問過的節點內容,避免重要資訊的遺失。
實驗結果顯示,工作記憶機制可以將MemWalker的準確率提升約10%。
而且,上面所說的過程只依靠prompt就能完成,不需要進行額外的訓練。
理論上,只要有足夠的算力,MemWalker可以閱讀無限長的文本。
不過,記憶樹建構時的時間和空間複雜度隨著文字長度的增長是指數型的。
論文第一作者是普林斯頓大學NLP實驗室華人博士生Howard Chen。
清華姚班校友陳丹琦是Howard的導師,她今年在ACL上的學術報告也與搜尋有關。
這項成果是Howard在Meta實習期間完成的,Meta AI實驗室的Ramakanth Pasunuru,Jason Weston和Asli Celikyilmaz三位學者也參與了本計畫。
論文網址:https://arxiv.org/abs/2310.05029
以上是4k視窗長度就能讀長文,陳丹琦高徒聯手Meta推出大模型記憶力增強新方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!