跳到主要內容

Transformer 為什麼只追得動兩三行?一個 6.5 萬參數的 LoRA 讓中間層接力

閱讀時間約 5 分鐘

給 Transformer 一段只有幾行的程式:K = apple、B = K、D = B,再問 print(D) 是什麼。這種「順著變數一路追到源頭」的題目,十三個預訓練的基礎模型平均只能可靠追 1.4 到 3.6 行(中位數 2.2 行)。但一篇新論文發現,在 Qwen3-8B 的某一層加上只有 65,537 個參數的 LoRA,其餘權重全部凍結,就能讓它在 24 行的鏈上從 15.5% 衝到 99%。

問題在於:模型明明有能力,為什麼預設只用一小截?這篇用論文裡的追蹤題走一遍,看這個小改動到底做了什麼。

先看題目長什麼樣

論文的任務是「參照鏈」:每條鏈的根是一個名詞,後面每一行都指向前一個變數。例如兩條鏈交錯:

K = apple
M = pear
B = K
Q = M
D = B
R = Q
print(D) Output:

答案是 apple。這題不需要任何外部知識,純粹是在上下文裡一步步追指標。鏈越長,要追的步數越多。

預設狀態:中間層只走兩三步就停

論文用「還原乾淨狀態」的因果實驗,找出模型在哪些層、哪些位置處理這件事。預設的流程像這樣:

  1. 程式裡的每一行,先把「我屬於哪條鏈」這件事傳下去,但只傳兩三行就中斷。
  2. 最後的查詢位置(print(D))再多追一兩個指標。
  3. 接近最後幾層(Qwen3-8B 約在 36 層中的第 32 層)把選中的根值複製出來。

所以總共能追的步數很有限。更值得注意的是,加深度沒有用:OLMo-3-32B 有 64 層、OLMo-3-7B 有 32 層,兩者都只能追約 2.6 行。預訓練的循環模型(把同一組層重複跑好幾遍)也一樣:Ouro-1.4B 跑一到五圈,可靠追的行數是 0、1.6、2.3、2.2、2.2,多跑幾圈幾乎沒有進步。

論文的說法是:預設運算由「很短的上下文接力、幾步查詢端追蹤、最後的值複製」組成,之後網路雖然還在算,卻不再延伸這條鏈。

加上 LoRA 之後:接力棒往下傳

這個 LoRA 作用在第 14 層的輸入,是 rank-8 的低秩修改,只在每個 token 內部運作,本身不讓 token 之間交換任何資訊。換句話說,它沒有直接教模型「怎麼追指標」,而是讓凍結的原有層把這件事做得更遠。

論文把這個過程叫「接力」(relay):每一行都收集前面各行的名字,並往鏈的上游看得更遠。以 Qwen3-8B 為例,在第 16 到 22 層的輸出,接力依序到達第 5、6、6、8、9、13、16 行;沒有 LoRA 時則停在第四行。注意力的範圍也跟著擴張:先看上面兩行,之後是三、四、六、七行。

這些注意力頭不是新長出來的。凍結模型裡本來就有負責「看父行」的頭,LoRA 讓一部分頭改去讀更遠的位置。移除十個讀父行的頭,在交錯的 16 行鏈上準確率從 89% 掉到 53%,隨機移除十個同層頭則只掉到 83%。

循環模型的效果更誇張。Ouro-1.4B 用較長訓練的 LoRA,四圈後可追 60 行,八圈後至少 160 行。因為每一圈都在中間層重複同樣的接力,多跑一圈就多延伸一段。

為什麼位置這麼重要

同樣的 LoRA,在 Qwen3-8B 從第 20 層移到第 21 層,可追行數就從 20.5 掉到 5.2。OLMo-3-7B 與 Llama-3.1-8B 也各有一個類似的臨界層(約第 12–15 層與第 13–15 層)。論文的解釋是:接力需要後面還有足夠的中間層可以繼續運算;太晚介入,就沒有層可以接手。

這個觀察也延伸到真實題目。在多跳問答資料集 MuSiQue 上,最早測試的層加 LoRA,在三個模型分別多拿 11.4、9.4 與 17.9 個 exact-match 點;Qwen 上第 6 層的 LoRA 比第 30 層高 13.0 點。

能帶走什麼,又不能帶走什麼

最直接的啟示是評測:模型答錯,不代表權重裡沒有這種組合推理的能力。預設輸出低估了「微調一小處就能取用的運算」。對微調來說,介入的層要放在有用的中間運算還來得及跟上的位置;對推理來說,重複跑關鍵的中間層才有效。

限制也要記清楚。主要實驗是合成的上下文任務,MuSiQue 只能說明「位置」的效應,不是同一機制的直接證據;每個任務格式都要各自訓練 LoRA;交錯排列或三條鏈會讓準確率下降(24 行交錯為 76.5%,三條鏈 16 行為 58.0%);用凍結模型預測臨界層的精度只算中等。論文自己也承認,這些因果測試限制了可能的運算,卻沒有唯一確定演算法。

參考來源

回應

0 / 1000

還沒有回應,成為第一個留言的人吧。