想讓大模型在_中學習更多示例,這種方法能讓你輸入更多字符

我們知道在使用GPT 和LLaMA 等大型語言模型時,輸入的存在字符數限制,比如ChatGPT 目前的輸入字符限制是4096 個字符。這會限制上下文學習和思維鍊等技術的發揮空間,畢竟用戶只能提供有限的示例數量。近日,Nous Research、EleutherAI 和日內瓦大學的一個研究團隊提出了一種擴展上下文窗口的方案YaRN ,並在實驗中取得了優於其它所有方法的效果,而且他們還發布了使用YaRN 微調過的LLaMA 2 7B/13B 模型,其上下文窗口為64k 和128k。

圖片來源:由無界AI 生成

基於Transformer 的大型語言模型(LLM)已經展現出執行上下文學習(ICL)的強大能力,並且幾乎已經成為許多自然語言處理(NLP)任務的不二選擇。 Transformer 的自註意力機制可讓訓練高度並行化,從而能以分佈式的方式處理長序列。 LLM 訓練所用的序列的長度被稱為其上下文窗口。

Transformer 的上下文窗口直接決定了可以提供示例的空間量,從而限制了其ICL 能力。

如果模型的上下文窗口有限,那麼為模型提供穩健示例的空間就更少,而這些穩健示例正是執行ICL 所用的。此外,當模型的上下文窗口特別短時,摘要等其它任務也會受到嚴重妨礙。

就語言本身的性質來說,token 的位置對有效建模來說至關重要,而自註意力由於其並行性,並不會直接編碼位置信息。 Transformer 架構引入了位置編碼來解決這個問題。

原始的Transformer 架構使用了一種絕對正弦位置編碼,之後其被改進成了一種可學習的絕對位置編碼。自那以後,相對位置編碼方案又進一步提升了Transformer 的性能。目前,最流行的相對位置編碼是T5 Relative Bias、RoPE、XPos 和ALiBi。

位置编码有一个反复出现的限制:无法泛化在训练期间看到的上下文窗口。尽管 ALiBi 等一些方法有能力做一些有限的泛化,但还没有方法能泛化用于显著长于其预训练长度的序列。

已經出現了一些試圖克服這些限制的研究成果。比如,有研究提出通過位置插值(PI)來稍微修改RoPE 並在少量數據上微調來擴展上下文長度。

兩個月前,Nous Research 的Bowen Peng 在Reddit 分享了一種解決思路,即通過納入高頻損失來實現「NTK 感知型插值」。這裡的NTK 是指Neural Tangent Kernel(神經正切核)。

其聲稱經過NTK 感知型擴展的RoPE 能讓LLaMA 模型的上下文窗口大幅擴展(超過8k),同時還無需任何微調,對困惑度造成的影響也極小。

近日,他與另外三位合作者的相關論文出爐了!

* 論文:

  • 模型:

在這篇論文中,他們對NTK 感知型插值做出了兩點改進,它們分別側重於不同的方面:

  • 動態NTK 插值法,無需微調就能用於預訓練模型。
  • 部分NTK 插值法,當使用少量更長上下文的數據微調後,模型能取得最佳表現。

研究者表示,在這篇論文誕生前,就已經有研究者將NTK 感知型插值和動態NTK 插值用於一些開源模型。比如Code Llama(使用NTK 感知型插值)和Qwen 7B(使用動態NTK 插值)。

在這篇論文中,基於之前有關NTK 感知型插值、動態NTK 插值和部分NTK 插值的研究成果,研究者提出了YaRN(Yet another RoPE extensioN method),一種可以高效擴展使用旋轉位置嵌入(Rotary Position Embeddings / RoPE)的模型的上下文窗口的方法,可用於LLaMA、GPT-NeoX 和PaLM 系列模型。研究發現,只需使用原模型預訓練數據規模大約0.1% 量的代表性樣本進行微調,YaRN 就能實現當前最佳的上下文窗口擴展性能。

方法

旋轉位置嵌入(Rotary Position Embeddings / RoPE)最早由論文《RoFormer: Enhanced transformer with rotary position embedding》引入,也是YaRN 的基礎。

簡單來說,RoPE 可以寫成如下形式:

對於使用固定上下文長度預訓練的LLM,如果使用位置插值(PI)來擴展上下文長度,則可以表示為:

可以看出PI 對所有RoPE 維度都會做同等延展。研究者發現PI 論文中描述的理論插值界限不足以預測RoPE 和LLM 內部嵌入之間的複雜動態。下面將描述研究者發現並解決的PI 的主要問題,以便讀者了解YaRN 中各種新方法的背景、起因和解決理由。

高頻信息丟失——NTK 感知型插值

如果只從信息編碼的角度看RoPE,根據神經正切核(NTK)理論,如果輸入維度較低且對應的嵌入缺乏高頻分量,那麼深度神經網絡難以學習高頻信息。

為了解決在對RoPE 嵌入插值時丟失高頻信息的問題,Bowen Peng 在上述Reddit 帖子中提出了NTK 感知型插值。這種方法不會對RoPE 的每個維度進行同等擴展,而是通過更少地擴展高頻和更多地擴展低頻來將插值壓力分散到多個維度。

在測試中,研究者發現在擴展未經微調的模型的上下文大小方面,這種方法優於PI。但是,這種方法有一個重大缺點:由於它不只是一種插值方案,某些維度會被外推入一些「界外」值,因此使用NTK 感知型插值進行微調的效果不及PI。

更進一步說,由於存在「界外」值,理論上的擴展因子就無法準確地描述真實的上下文擴展程度。在實踐中,對於給定的上下文長度擴展,必須將擴展值s 設置得比期望的擴展值高一點。

相對局部距離的損失—— 部分NTK 插值

對於RoPE 嵌入,有一個有趣的觀察:給定一個上下文大小L,存在某些維度d,其中的波長λ 長於預訓練階段見過的最大上下文長度(λ > L),這說明某些維度的嵌入可能在旋轉域中的分佈不均勻。

PI 和NTK 感知型插值會平等地對待所有RoPE 隱藏維度(就好像它們對網絡有同樣的效果)。但研究者通過實驗發現,網絡會給某些維度不同於其它維度的待遇。如前所述,給定上下文長度L,某些維度的波長λ 大於或等於L。由於當一個隱藏維度的波長大於或等於L 時,所有的位置配對會編碼一個特定的距離,因此研究者猜想其中的絕對位置信息得到了保留;而當波長較短時,網絡僅可獲得相對位置信息。

當使用擴展比例s 或基礎變化值b' 來拉伸所有RoPE 維度時,所有token 都會變得與彼此更接近,因為被一個較小量旋轉過的兩個向量的點積會更大。這種擴展會嚴重損害LLM 理解其內部嵌入之間小的局部關係的能力。研究者猜測這種壓縮會導致模型對附近token 的位置順序感到困惑,從而損害模型的能力。

為了解決這個問題,基於研究者觀察到的現象,他們選擇完全不對更高頻率的維度進行插值。

他們還提出,對於所有維度d,r < α 的維度按擴展度s 線性插值(與PI 一樣,避免出現外推);r > β 的維度就完全不插值(總是外推)。

使用這一小節描述的技術,一種名為部分NTK 插值的方法誕生了。這種改進版方法優於之前的PI 和NTK 感知型插值方法,其適用於無微調和已微調模型。因為該方法避免了對旋轉域分佈不均勻的維度進行外推,因此就避免了之前方法的所有微調問題。

動態縮放—— 動態NTK 插值

當使用RoPE 插值方法無微調地擴展上下文大小時,我們希望模型在更長的上下文大小上慢慢地劣化,而不是在擴展度s 超過所需值時在整個上下文大小上完全劣化。

在動態NTK 方法中,擴展度s 是動態計算的。

在推理過程中,當上下文大小被超過時,就動態地更改擴展度s,這樣可讓所有模型在達到訓練的上下文限制L 時緩慢地劣化而不是突然崩潰式劣化。

增加用於長距離的平均最小余弦相似度——YaRN

即便解決了前面描述的局部距離問題,為了避免外推,也必須在閾值α 處插值更大的距離。直覺來看,這似乎不應該是個問題,因為全局距離無需高精度也能區分token 位置(即網絡只需大概知道token 是在序列的開頭、中間或末尾即可)。

但是,研究者發現:由於平均最小距離隨著token 數量的增加而變得更近,因此它會使注意力softmax 分佈變得更尖(即減少了注意力softmax 的平均熵)。換句話說,隨著長距離衰減的影響因插值而減弱,網絡會「更加關注」更多token。這種分佈的轉變會導致LLM 輸出質量下降,這是與之前問題無關的另一個問題。

由於當將RoPE 嵌入插值到更長的上下文大小時,注意力Softmax 分佈中的熵會減少,因此研究者的目標是逆轉這種熵減(即增加註意力logit 的「溫度」)。這可以通過在應用softmax 之前將中間注意力矩陣乘以溫度t > 1 來完成,但由於RoPE 嵌入被編碼為一個旋轉矩陣,就可以簡單地按常數因子√t 來擴展RoPE 嵌入的長度。這種「長度擴展」技巧讓研究可以不必修改注意力代碼,這能大幅簡化與現有訓練和推理流程的集成,並且時間複雜度僅有O (1)。

由於這種RoPE 插值方案對RoPE 維度的插值不均勻,因此很難計算相對於擴展度s 所需的溫度比例t 的解析解。幸運的是,研究者通過實驗發現:通過最小化困惑度,所有LLaMA 模型都遵循大致相同的擬合曲線:

研究者是在LLaMA 7B、13B、33B 和65B 上發現這個公式的。他們發現這個公式也能很好地適用於LLaMA 2 模型(7B、13B 和70B),差別很細微。這表明這種熵增特性很常見,可以泛化到不同的模型和訓練數據。

這種最終修改方案產出了YaRN 方法。新方法在已微調和未微調場景中都勝過之前所有方法,而且完全不需要修改推理代碼。只需要修改一開始用於生成RoPE 嵌入的算法。 YaRN 如此簡單,使其可以在所有推理和訓練庫中輕鬆實現,包括與Flash Attention 2 的兼容性。

實驗

實驗表明YaRN 能成功擴展LLM 的上下文窗口。此外,他們僅訓練了400 步就得到了這一結果,這差不多只有模型的原始預訓練語料庫的0.1%,與之前的研究成果相比有大幅下降。這說明新方法具有很高的計算效率,沒有額外的推理成本。

為了評估所得到的模型,研究者計算了長文檔的困惑度,並在已有基准上進行了評分,結果發現新方法勝過所有其它上下文窗口擴展方法。

首先,研究者評估了上下文窗口增大時模型的性能表現。表1 總結了實驗結果。

表2 展示了在50 個未截斷的GovReport 文檔(長度至少為16k token)上的最終困惑度。

為了測試使用上下文擴展時模型性能的劣化情況,研究者使用Hugging Face Open LLM Leaderboard 套件評估了模型,並將其與LLaMA 2 基準模型以及公開可用的PI 和NTK 感知型模型的已有分數進行了比較。表3 總結了實驗結果。

查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 留言
  • 分享
留言
0/400
暫無留言
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)