Skip to content

LoRA 低秩更新:Tinker 客座課前預習|Stanford CS224N 第 18 堂

2026年8月22日1 分鐘
TL;DR手算低秩更新、分清更新與完整權重的秩,並計算可訓練參數。這是依 LoRA 論文的課前預習,不重建尚未取得公開材料的 Tinker 客座內容。

🌏 English version

影片狀態:錄影需登入或課程授權。 影片來源與說明

LoRA 為什麼不用更新整張權重矩陣?這篇先接回第 9 堂的高效適應,手算一次低秩更新,讀完能分清「更新矩陣的秩」與「完整權重的秩」,並算出可訓練參數量。

來源範圍:這是依 LoRA 原論文整理的課前預習,以下例子由本文自編。第 18 堂客座的題名是 Tinker and LoRA Without Regret,但截至 2026-10-11 官方課表仍未列本堂公開投影片;不能用這份預習推定 Tinker 的課堂介面、實驗或「Without Regret」的含義。

低秩的是更新,不是整個模型

LoRA 原論文第 4.1 節固定原權重 W0,只訓練兩個較小矩陣 A、B。若 W0 的大小是 d_out × d_in,A 是 r × d_in,B 是 d_out × r,前向計算是 W0 x + (α/r) B A x。

BA 的秩最多是 r,但 W0 + BA 不一定低秩。這是在限制「往哪些方向調整」,不是把原模型縮成只有 r 個參數。對單一 8 × 8 權重,完整微調需更新 64 個值;若 r=1,兩個低秩矩陣共 8+8=16 個可訓練值。這只比較該矩陣的可訓練參數,不代表整個模型記憶體也剩四分之一。

手算一次前向更新

以下是自編的二維例子,假設某次訓練後 W0=[[1,0],[0,1]]、A=[[1,-1]]、B=[[2],[1]],且 r=α=1、輸入 x=[3,1]。這不是 LoRA 的初始化設定,也不是客座講者的示範。

  1. 原分支:W0 x=[3,1]。
  2. 先投影:A x=3-1=2。
  3. 再映回:B(Ax)=[4,2]。
  4. 相加得到新輸出 [7,3]。

同一計算也能先合併 BA=[[2,-2],[1,-1]],再算 (W0+BA)x。更新只有 rank 1,但合併後的矩陣 [[3,-2],[1,0]] 行列式為 2,仍是 rank 2。本例的二維矩陣有四個完整權重,A、B 也共有四個值,沒有參數節省;選小矩陣只是為了能手算。

換一個輸入,檢查理解

保持同一組矩陣,把輸入換成 x=[1,1]。低秩分支會怎麼改變輸出?這能否證明任何任務都不會退步?

答案:Ax=0,所以更新分支輸出 [0,0],完整輸出仍是 [1,1]。它只說明這個輸入落在 A 的零空間;對 [3,1] 的輸出已改變。低秩限制與單一輸入不變,都不能保證所有任務的品質;不能從客座標題推導這種保證。

課程影片來源

原課歸因:官方課表將 2026 年 3 月 5 日的「Guest Lecture: Tinker and LoRA Without Regret」列為 John Schulman 客座;上面的預習計算由本文另行設計。

已即時查核 CS224N 官方課程頁:Winter 2026 課堂錄影放在 Canvas(需登入),官方說明無法開放給非修課者,2026-10-10 的 Canvas 登入測試導向 Stanford 登入頁;2026-10-11 本次重查官方頁仍註明需登入且限修課者。官方指向的公開錄影只有 2024 年版播放清單,沒有 Winter 2026 的公開錄影;其中找不到與本講標題對應的講次,因此不嵌入影片,也不以其他年份影片冒充當期錄影。

課程與錄影入口:

查核日期:2026-10-11。

更新紀錄

  • 2026-10-11:改為 LoRA 課前預習,補自編矩陣例子與答案,來源查核歷程移存研究筆記。
  • 2026-10-10:標註影片狀態,核對錄影來源與取得方式。
  • 2026-10-10:重查影片狀態。即時確認 Winter 2026 錄影需登入、公開錄影僅 2024 年版且無對應講次,維持原狀態並補上查核日期。

參考資料