模型A:幸虧有你,我才不得0分,模型B:俺也一樣
琳瑯滿目的樂高積木,通過一塊又一塊的疊加,可以創造出各種栩栩如生的人物、景觀等,不同的樂高作品相互組合,又能為愛好者帶來新的創意。
我們把思路打開一點,在大模型(LLM)爆發的當下,我們能不能像拼積木一樣,把不同的模型搭建起來,而不會影響原來模型的功能,還能起到 1+1>2 的效果。
這樣的想法,谷歌已經實現了。他們的研究為未來的語言模型發展提供了一個新的方向,特別是在資源節約和模型適應性方面。
如今的大語言模型(LLM)仿佛一個全能戰士,能進行常識和事實推理、懂得世界知識、生成連貫的文本…… 在這些基礎功能的底座上,研究者們又進行了一系列努力對這些模型進行微調,以實現特定于領域的功能,如代碼生成、文案編輯以及解決數學問題等。
但這些特定于領域的模型開始出現一些棘手的問題,例如,有些模型在標準代碼生成方面做得很好,但在一般邏輯推理方面并不精通,反之亦然。
我們不禁要問:是否可以將 anchor 模型(即具有基礎功能的模型)與特定于領域的增強模型組合在一起,從而開啟模型新功能?例如,我們能否將理解代碼的增強模型與 anchor 模型的語言生成能力組合起來,以實現從代碼 - 文本的生成能力?
在此之前,該問題典型的解決方案是在最初用于訓練增強模型的數據上進行進一步的預訓練或微調 anchor 模型。然而,很多時候這樣的解決方案是不可行的,因為訓練大模型的計算成本很高。此外,由于數據隱私等問題,處理來自多個來源的數據可能不可行。
為了解決上述訓練成本和數據帶來的挑戰,谷歌提出并研究了進行模型組合的實際設置,這些設置包括:(i)研究者可以訪問一個或多個增強模型和 anchor 模型,(ii)不允許修改任一模型的權重,并且(iii)只能訪問少量數據,這些數據代表了給定模型的組合技能。
論文地址:https://arxiv.org/pdf/2401.02412.pdf
該研究是這樣實現的,他們提出了一種新穎的 CALM(組合到增強語言模型 Composition to Augment Language Models)框架來解決模型組合設置。CALM 不是增強和 anchor LM 的淺層組合,而是在增強和 anchor 模型的中間層表示上引入了少量的可訓練參數。
這種方法不僅資源高效,只需增加少量額外的參數和數據,就能擴展到新任務上,比完全重新訓練模型要經濟得多。而且比單獨使用一個模型能夠更準確地執行新的挑戰性任務,同時還能保留各個模型的功能。CALM 對特定任務和低資源語言也提供了更好的支持。
這種通過組合方式擴展模型功能的創新得到了很多人的好評:
「這項研究以及類似的 MoE 研究真的很令人驚訝。像堆樂高積木一樣把模型拼在一起就行了!」
還有人表示:「我們離 AI 奇點又近了一步!」
方法介紹
對于給定的 anchor 模型 m_B 和增強模型 m_A,CALM 旨在將這兩種模型結合起來,組成 m_(A⊕B),使得新模型的能力成為兩個獨立模型能力的組合。
研究過程中,開發人員做了以下假設:i)他們可以訪問模型的權重,向前、向后傳播,并有權限訪問 m_B 和 m_A 的中間表示,ii)不允許更改兩個模型的權重,iii)研究者無法訪問兩個基本模型的訓練數據、超參數、訓練狀態,iv)研究者能提供來自目標組合域的一些示例。
在上述假設下,該研究的目標是學習組合 以實現某些聯合任務 C。其中 m_B 和 m_A 的權重被凍結,θ_C 是為學習組合而引入的附加可訓練參數集,D_C 是指用于學習該組合的示例集。
可訓練參數
該研究在 m_B 和 m_A 的選定層上進行操作。具體而言,他們在這些層上學習兩組附加參數:(i)一組是簡單的線性變換,f_proj(.),它將來自 m_A 的第 i 層表示映射到來自 m_B 的表示的維度,以及(ii)一組交叉 - 注意力層,f_cross (.,.),該層位于線性變換后的層表示和 m_B 的第 j 層表示之間。
如圖 1 所示,圖中展示了具有不同功能的 m_A(黃色塊):鍵值映射(左)、低資源語言(中)和代碼(右)。模型 m_A 和 m_B 在合成過程中保持不變 。那些額外的參數是通過模型的層表示來學習的。最左邊的圖顯示了在一組字符串 - 整數映射上訓練的 m_A,例如 {x_1 : 10……,x_n:2}。m_B 是一個具有算術能力的大型 LM。CALM 組合這兩個凍結模型來解決任一模型無法自行解決的鍵算術(arithmetic on keys)任務。值得注意的是,盡管使用僅涵蓋 20% 鍵的算術示例進行訓練,但 CALM 仍可擴展到整個鍵 - 值集。
訓練示例的構建
由于目標模型 m_(A⊕B)涉及兩個模型 m_A 和 m_B 的組合,因此該研究還構建了一組訓練示例 D_C 來描述模型的組合技能。
理想情況下,如果組合任務中包含任務 t_1 和 t_2,例如組合任務 (C) 是對一組鍵執行算術運算。增強模型 m_A 用來學習給定的鍵值對(標記為任務 t_1), anchor 模型 m_B 是可以很好地執行數字運算的通用模型(標記為任務 t_2)。
為了學習組合參數 θ_C,該研究定義 D_C 包含兩個模型的組合技能。與 LoRA 等在訓練期間需要整個知識源(此處為鍵值)的微調方法相比,本文發現僅對一小部分鍵進行訓練組合就可以泛化到全部。
實驗結果
鍵值算術
論文作者首先研究了這樣一種情況:有一個小型的增強 LM(m_A),它已被訓練成能夠記憶從字符串到整數的鍵值(KV)映射;還有一個大型的 anchor LM(m_B),它能夠對整數進行算術運算。作者希望使用 CALM 將它們組合在一起,從而實現解決包含這些鍵的算術表達式的新功能。
表 1 顯示了 m_A、m_B 和 m_(A⊕B) 這三個模型在一些數據集中的表現。首先,可以看到增強模型 m_A 在 KV 替換(KV-Substitution)任務中取得了 98.1% 的成績,這表明它能很好地記憶 D_KV。接下來,可以看到它在數字算術(Numeric-Arithmetic)任務中的表現很差(4.2%),這表明它不具備算術能力。因此,該模型無法求解包含 D_KV 的鍵的算術表達式。
不出所料,anchor 模型 m_B 在 KV 替換和 KV 算術(KV-Arithmetic)任務中的準確率為 0%,因為它沒有看到任何來自 D_KV 的數據。然而,它在數字算術任務中的表現卻很好(73.7%),這表明它有能力對數字進行算術運算。
最后,可以看到組合模型 m_(A⊕B) 能夠以很高的準確率解決所有任務,尤其是 KV 算術任務(84.3%),而這是兩個底層模型都無法解決的。這表明組合模型能夠利用增強模型和 anchor 模型的相關能力來解決復雜任務。
接下來,作者研究了能否將這樣一個大型 anchor LM m_B 與經過低資源語言預訓練的小型增強 LM m_A 結合在一起,以執行以這些低資源語言呈現的翻譯和數學詞語解題任務。
表 2 顯示了模型在 FLORES-200 數據集上的表現。對于表中所示的 10 種低資源語言,可以看到基礎模型 m_A 和 m_B 的表現都不如組合模型 m_(A⊕B)。作者發現,在全部 192 種語言中的 175 種語言上,組合模型 m (A⊕B) 的表現都優于 m_B(見圖 2)。
表 3 顯示了這些模型在 GSM8K 任務中低資源語言和高資源語言的小學數學單詞問題上的表現。首先,可以觀察到,由于數學推理能力有限,增強模型 m_A 在這項任務中表現不佳。另一方面,鑒于 anchor 模型 m_B 數學推理能力和高資源語言的遷移學習能力,它的表現要好得多。最后,作者發現在 25 種低資源語言中的 18 種和 10 種高資源語言中的 9 種上,m (A⊕B) 的表現都優于 m_A 和 m_B,這證明了模型組合的有效性。請參見表 6 以了解完整的評估結果。請注意,表 3 的最后一行顯示,在 D_NTL 上微調后的 m_B 比預訓練的 m_B 性能更差,這表明存在遺忘。使用 CALM 將特定領域的模型 m_A 與 m_B 組合在一起可以避免這種情況。
代碼理解和生成
代碼理解和生成需要兩類不同的能力:(a)代碼語法和語義知識;(b)代碼所操縱的世界的知識。雖然 LLM 擁有豐富的世界知識,但由于其預訓練語料庫中的代碼數據表示有偏差,它們往往缺乏代碼語法方面的具體知識。相反,專門用代碼數據訓練的小模型可以很好地理解代碼語法,但它們可能缺乏廣泛的世界知識和推理能力。CALM 可以實現這兩方面的最佳效果。
表 4 展示了單個模型 m_A 和 m_B、組合模型 m (A⊕B) 以及經過微調的 anchor 基線 的性能比較。首先,在 HumanEval 數據集上進行的評估表明,由于 m_A 在 D_Code 上進行了額外的訓練,它對代碼語法的理解能力更強。而由于 m_B 的規模更大,而且進行了通用預訓練,它在一般語言理解方面表現出色,因此在 T2C 和 C2T 任務中表現更好。
當使用 CALM 來組成這兩個模型時,作者通過顯著的性能改進觀察到了能力的清晰遷移和組合:與 m_B 相比,組合模型在 CC 和 T2C 任務上的絕對性能分別提高了 6.1% 和 3.6%。作者觀察到,由于災難性遺忘,在 D_Code 上微調 m_B 會導致 C2T 性能顯著下降。在所有語言中,CALM 保持了性能,并略微優于 m_B。作者還研究了 C2T 任務的定性示例,并觀察到了有趣的共同模式,詳情見附錄 B。
消融研究
m_A 的影響
作者首先研究了 m_A 的影響,即在組成過程中用 vanilla 和隨機變體替換 m_A。表 5 顯示了在 NTL 和代碼任務中,當專門的 m_A 被 vanilla PaLM2-XXS 檢查點或未經訓練的模型版本(即隨機模型)替換時,性能的變化情況。作者發現,在所有任務中,這些變體的性能都大幅下降。在 FLORES-200 XX-En 任務中,使用 vanilla 和隨機模型時,語言的組合性能分別下降到 115 和 43。與 m_B 相比,vanilla 模型的性能略有提高,這表明非專門化模型(與 m_B 的訓練機制不同)可能具有正交能力,從而增強了模型的性能。這一發現驗證了 CALM 的性能提升是利用 m_A 而不是增加 Θ_C 參數的結果。
迭代解碼的影響
作者還研究了一個變體,即將 m_A 用作編碼器,也就是說,在給定時間步解碼的輸出 token 不會添加到 m_A 的輸入中。在這種情況下,只使用 m_A 的前綴表示。這種設置與過去針對圖像和文本模型的工作不太一樣,后者將編碼器和解碼器模型組合使用。作者觀察到,在采用之前的設置時,各種任務的性能都有明顯下降。
與 LoRA 的比較
最后,作者通過訓練 LoRA 層來評估一種參數高效微調方法,以適應 m_B。在所有實驗中,他們都設置了 LoRA rank,使添加的參數數量等于 CALM 引入的參數數量。作者還在與 CALM 相同的數據(即 D_C)上訓練 LoRA。他們發現這兩種方法在所有任務和指標上的性能差異都很大。
請參閱原始論文以獲取更多詳細信息。