為什么 LoRA 梯度是建立在全量參數 W 的梯度之上

🧠 首先搞清楚 LoRA 是怎么做微調的

我們原來要訓練的參數矩陣是 W W W,但 LoRA 說:

別動 W,我在它旁邊加一個低秩矩陣 Δ W = U V \Delta W = UV ΔW=UV,只訓練這個部分!

也就是說,LoRA 用一個新的權重矩陣:

W ′ = W + U V W' = W + UV W=W+UV

只訓練 U U U V V V W W W 不動。


📦 所以前向傳播其實用的是:

模型輸入 x ? W ′ x = W x + U V x ? 輸出 ? L \text{模型輸入}x \longrightarrow W'x = Wx + UVx \longrightarrow \text{輸出} \longrightarrow \mathcal{L} 模型輸入x?Wx=Wx+UVx?輸出?L

在這個過程中,損失函數 L \mathcal{L} L 是基于 W + U V W + UV W+UV 來計算的。


🔁 反向傳播的時候怎么求梯度?

LoRA 要訓練的是 U U U V V V,所以我們要算:

? L ? U 和 ? L ? V \frac{\partial \mathcal{L}}{\partial U} \quad \text{和} \quad \frac{\partial \mathcal{L}}{\partial V} ?U?L??V?L?

但問題是:損失函數 L \mathcal{L} L 不是直接依賴 U U U V V V,而是依賴 U V UV UV

所以要用鏈式法則,先對 U V UV UV 求導,然后傳播回 U U U V V V。而對UV求導等價于對 W W W求導


? 關鍵點來了

我們記:

? L ? W = G \frac{\partial \mathcal{L}}{\partial W} = G ?W?L?=G

這個 G G G 就是“如果我們在做全量微調,該怎么更新 W W W 的梯度”。

LoRA 說:

“雖然我不更新 W W W,但我要更新的是 U V UV UV。所以我也可以用這個 G G G 來指導我怎么更新 U U U V V V。”

于是我們得到:

? L ? U = G V ? , ? L ? V = U ? G \frac{\partial \mathcal{L}}{\partial U} = G V^\top, \quad \frac{\partial \mathcal{L}}{\partial V} = U^\top G ?U?L?=GV?,?V?L?=U?G


LoRA 的梯度建立在 ? L ? W \frac{\partial \mathcal{L}}{\partial W} ?W?L? 上, 是因為它相當于“用低秩矩陣 U V UV UV 來代替全量的參數更新”, 所以梯度傳播也必須從 ? L ? W \frac{\partial \mathcal{L}}{\partial W} ?W?L? 開始。
LoRA 往往只是顯存不足的無奈之選,因為一般情況下全量微調的效果都會優于 LoRA,所以如果算力足夠并且要追求效果最佳時,請優先選擇全量微調。
使用 LoRA 的另一個場景是有大量的微型定制化需求,要存下非常多的微調結果,此時使用 LoRA 能減少儲存成本。

🔍 為什么

為什么 ? L ? W \frac{\partial \mathcal{L}}{\partial W} ?W?L?,就是對 U V UV UV 的梯度?

換句話說:LoRA 中的 W ′ = W + U V W' = W + UV W=W+UV,那我們訓練時不是更新 W W W,只更新 U V UV UV,那為什么還能用 ? L ? W \frac{\partial \mathcal{L}}{\partial W} ?W?L? 來指導 U U U V V V 的更新呢?


? 答案是:因為前向傳播中 W + U V W + UV W+UV一起作為整體參與運算的

所以:

? L ? W = ? L ? ( W + U V ) = ? L ? ( U V ) \frac{\partial \mathcal{L}}{\partial W} = \frac{\partial \mathcal{L}}{\partial (W + UV)} = \frac{\partial \mathcal{L}}{\partial (UV)} ?W?L?=?(W+UV)?L?=?(UV)?L?

這是因為:

  • 我們的模型使用的是 W + U V W + UV W+UV
  • 所以損失函數 L \mathcal{L} L 是以 W + U V W + UV W+UV 為輸入計算出來的
  • 那么對 W W W 求導,其實是對這個整體求導
  • 而因為 W W W 是固定的(不訓練,看作常數),所以梯度全部由 U V UV UV 來承接

  • 本來我們應該更新 W W W
    W ← W ? η ? L ? W W \leftarrow W - \eta \frac{\partial \mathcal{L}}{\partial W} WW?η?W?L?
  • 現在我們不動 W W W,讓 U V UV UV 來“做這個事情”:
    W + U V ← W + U V ? η ? ( LoRA方向上的梯度 ) W + UV \leftarrow W + UV - \eta \cdot \left(\text{LoRA方向上的梯度}\right) W+UVW+UV?η?(LoRA方向上的梯度)

所以如果要算 U V UV UV 的導數,就是算 ? L ? W \frac{\partial \mathcal{L}}{\partial W} ?W?L?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/76929.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/76929.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/76929.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Nginx負載均衡時如何為指定ip配置固定服務器

大家在用Nginx做負載均衡時,一般是采用默認的weight權重指定或默認的平均分配實現后端服務器的路由,還有一種做法是通過ip_hash來自動計算進行后端服務器的路由,但最近遇到一個問題,就是希望大部分用戶采用ip_hash自動分配后端服務…

Llama 4 家族:原生多模態 AI 創新的新時代開啟

0 要點總結 Meta發布 Llama 4 系列的首批模型,幫用戶打造更個性化多模態體驗Llama 4 Scout 是有 170 億激活參數、16 個專家模塊的模型,同類中全球最強多模態模型,性能超越以往所有 Llama 系列模型,能在一張 NVIDIA H100 GPU 上運…

【硬件開發技巧】如何通過元器件絲印反查型號

目錄 一、在線數據庫查詢 二、官方資料匹配 三、專業軟件輔助 四、實物比對與場景推斷 五、社區與人工支持 注意事項 一、在線數據庫查詢 專業元器件平臺 Digi-Key、Mouser、ICMaster等平臺支持直接輸入絲印代碼檢索,可獲取芯片型號、技術文檔及替代型號。例如…

【算法/c++】利用中序遍歷和后序遍歷建二叉樹

目錄 題目:樹的遍歷前言題目來源樹的數組存儲基本思想存儲規則示例 建樹算法關鍵思路代碼總代碼 鏈表法 題目:樹的遍歷 前言 如果不是完全二叉樹,使用數組模擬樹,會很浪費空間。 題目來源 本題來自 PTA 天梯賽。 題目鏈接: 樹…

李臻20242817_安全文件傳輸系統項目報告_第6周

安全文件傳輸系統項目報告(第 1 周) 1. 代碼鏈接 Gitee 倉庫地址:https://gitee.com/li-zhen1215/homework/tree/master/Secure-file 代碼結構說明: project-root/├── src/ # 源代碼目錄│ ├── main.c # 主程序入口│ ├…

嵌入式rodata段

在嵌入式軟件開發中,將數據放入只讀數據段(.rodata)具有以下好處及典型應用示例: 好處 數據保護 .rodata段的內容在程序運行時不可修改,防止意外或惡意篡改,提升系統穩定性。 節省RAM資源 只讀數據可直接…

InfoSec Prep: OSCP靶場滲透

InfoSec Prep: OSCP InfoSec Prep: OSCP ~ VulnHubInfoSec Prep: OSCP, made by FalconSpy. Download & walkthrough links are available.https://www.vulnhub.com/entry/infosec-prep-oscp,508/ 1,將兩臺虛擬機網絡連接都改為NAT模式 2,攻擊機上做…

【JavaWeb-Spring boot】學習筆記

目錄 <<回到導覽Spring boot1. http協議1.1.請求協議1.2.響應協議 2.Tomcat2.1.請求2.1.1.apifox2.1.2.簡單參數2.1.3.實體參數2.1.4.數組集合參數2.1.5.日期參數2.1.6.(重點)JSON參數2.1.7.路徑參數 2.2.響應2.3.綜合練習 3.三層架構3.1.三層拆分3.2.分層解耦3.3.補充 &…

C++的多態-上

目錄 多態的概念 多態的定義及實現 1.虛函數 2. 多態的實現 2.1.多態構成條件 2.2.虛函數重寫的兩個例外 (1)協變(基類與派生類虛函數返回值類型不同) (2)析構函數的重寫(基類與派生類析構函數的名字不同) 2.3.多態的實現 2.4.多態在析構函數中的應用 2.5.多態構成條…

網絡安全的重要性與防護措施

隨著信息技術的飛速發展&#xff0c;互聯網已經成為我們日常生活、工作和學習的必需品。無論是通過社交媒體與朋友互動&#xff0c;還是在網上進行銀行交易&#xff0c;網絡已經滲透到我們生活的方方面面。然而&#xff0c;隨之而來的是各種網絡安全問題&#xff0c;包括數據泄…

CMake學習--Window下VSCode 中 CMake C++ 代碼調試操作方法

目錄 一、背景知識二、使用方法&#xff08;一&#xff09;安裝擴展&#xff08;二&#xff09;創建 CMake 項目&#xff08;三&#xff09;編寫代碼&#xff08;四&#xff09;配置 CMakeLists.txt&#xff08;五&#xff09;生成構建文件&#xff08;六&#xff09;開始調試 …

訪問數組元素(四十四)

1. 數組下標與類型 數組的索引從 0 開始。例如&#xff0c;一個包含 10 個元素的數組&#xff0c;其合法下標范圍為 0 到 9&#xff0c;而不是 1 到 10。為了表示下標&#xff0c;通常使用 size_t 類型&#xff0c;它是一種與機器相關的無符號整型&#xff0c;足夠大以存放內存…

計算機網絡 3-1 數據鏈路層(功能+組幀+差錯控制)

【考綱內容】 &#xff08;一&#xff09;數據鏈路層的功能 &#xff08;二&#xff09;組幀 &#xff08;三&#xff09;差錯控制 檢錯編碼&#xff1b;糾錯編碼 &#xff08;四&#xff09;流量控制與可靠傳輸機制 流量控制、可靠傳輸與滑動窗口機制&#xff1b;停止-等…

Django中使用不同種類緩存的完整案例

Django中使用不同種類緩存的完整案例 推薦超級課程: 本地離線DeepSeek AI方案部署實戰教程【完全版】Docker快速入門到精通Kubernetes入門到大師通關課AWS云服務快速入門實戰目錄 Django中使用不同種類緩存的完整案例步驟1:設置Django項目步驟2:設置URL路由步驟3:視圖級別…

Spring Boot 集成Redis 的Lua腳本詳解

1. 對比Lua腳本方案與Redis自身事務 對比表格 對比維度Redis事務&#xff08;MULTI/EXEC&#xff09;Lua腳本方案原子性事務命令序列化執行&#xff0c;但中間可被其他命令打斷&#xff0c;不保證原子性Lua腳本在Redis單線程中原子執行&#xff0c;不可中斷計算能力僅支持Red…

【大模型】DeepSeek + 藍耕MaaS平臺 + 海螺AI生成高質量視頻操作詳解

目錄 一、前言 二、藍耘智能云MaaS平臺介紹 2.1 藍耘智算平臺是什么 2.2 平臺優勢 2.3 平臺核心能力 三、海螺AI視頻介紹 3.1 海螺AI視頻是什么 3.2 海螺AI視頻主要功能 3.3 海螺AI視頻應用場景 3.4 海螺AI視頻核心優勢 3.5 項目git地址 四、藍耘MaaS平臺DeepSeek海…

12-產品經理-維護模塊

需求模塊是幫助產品經理進行需求的分類和維護。 1. 維護模塊 在具體產品的“研發需求”頁面左側&#xff0c;點擊“維護模塊”。也可以在具體產品的“設置”-“模塊”下進行維護。 點擊保存后&#xff0c;返回模塊頁面。還可以點擊“子模塊”對已有模塊進行子模塊的維護。 點擊…

考研單詞筆記 2025.04.06

area n領域&#xff0c;范圍&#xff0c;方面&#xff0c;地區&#xff0c;地方&#xff0c;場地&#xff0c;面積 aspect n方面&#xff0c;層面&#xff0c;外表&#xff0c;外觀 boundary n限度&#xff0c;界限&#xff0c;分界線&#xff0c;邊界 cap n最高限額&#x…

護網藍初面試題

《網安面試指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇網安資料庫https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…

玄機-apache日志分析

靶場任務 1、提交當天訪問次數最多的IP&#xff0c;即黑客IP&#xff1a; 查看apache日志 apache訪問日志的位置是&#xff1a;/var/log/apache2/access.log.1 匹配正則算法 首先先cat看看 發現地址都在第一行&#xff0c;直接匹配計算輸出 cat access.log.1 |grep -Eo &…