層正規化:為什麼訓練大模型需要它

artificial%20intelligence%20concept%2C%20digital%2...
發表時間:2026 年 10 月 21 日 | 更新日期:2026 年 10 月 21 日 | 編輯:雅寶社區編輯團隊
層正規化:為什麼訓練大模型需要它 - 雅寶社區 · 頂客論壇

  • 對批次大小高度敏感:批次太小時,統計量雜訊過大,訓練反而變得不穩定。而大模型的訓練往往受到記憶體限制,難以使用超大批次。
  • 訓練與推理不一致:訓練時使用當前批次的統計量,推理時卻得依賴訓練期間累積的移動平均。這種不一致在序列長度可變的場景中格外棘手。
  • 序列長度可變與填充問題:語言模型的一個批次裡,每句話長度不同,需要 padding。若沿批次維度統計,padding token 會污染統計量,必須額外遮罩處理。
  • 分散式訓練的額外成本:批次正規化需要跨裝置同步統計量,在多機多卡的環境中會引入額外的通訊開銷與同步點。
  • 這些痛點,正是層正規化登場的舞台。

    二、層正規化的核心機制:沿特徵維度做統計

    層正規化的想法其實非常簡潔:既然問題出在「每個樣本的特徵分布不穩定」,那就針對每一個樣本、獨立地把它自己的特徵向量正規化。它不依賴批次中的其他樣本,也不依賴序列長度,計算完全在單一 token 內部完成。

    2-1 數學定義與計算流程

    給定一個 token 的隱藏向量 x,維度為 H(也就是模型的隱藏層大小),層正規化的計算分成三步。第一步計算該向量所有元素的均值:μ = (1/H) Σ x_i。第二步計算變異數:σ² = (1/H) Σ (x_i − μ)²。第三步進行正規化並套用可學習的仿射變換:y = γ ⊙ (x − μ) / √(σ² + ε) + β,其中 γ 與 β 是維度為 H 的可學習參數,ε 是一個極小的常數(通常取 1e-5 或 1e-6),用來避免除以零。

    這裡有幾個細節值得注意。首先,ε 放在根號內部,這與某些實作放在外部不同,會影響數值穩定性。其次,γ 與 β 的引入非常重要:如果只做正規化,會限制每一層的表達能力(例如強制所有活化值落在均值 0、變異數 1 的範圍內),而仿射變換讓模型可以「學回」它需要的尺度與偏移。最後,正規化的統計量是不去平均的,每個位置、每個 token 各自計算,這正是它與批次正規化最根本的差異。

    2-2 與批次正規化的本質差異

    打個比方:批次正規化像是把整個班級的學生成績拉平,讓每個人相對班平均的位置標準化;層正規化則像是針對每一位學生,把他自己各科的成績分布標準化。前者需要「班級」這個概念,後者則完全獨立。

    這個差異帶來了一連串的連鎖效應。層正規化的統計量只依賴單一樣本,因此訓練與推理的行為完全一致,不需要維護移動平均;它對批次大小不敏感,即使批次只有 1 也能正常運作;在變長序列中,不同長度的樣本互不干擾;在分散式訓練時,除非採用張量平行切分特徵維度,否則不需要額外的跨裝置通訊。這些特性讓它成為序列模型與大型語言模型的天選之作。

    2-3 為什麼自回歸語言模型特別適合層正規化

    自回歸語言模型的訓練目標是「給定前文,預測下一個 token」。這代表每個位置都必須能獨立地產生輸出,而且推理時是一次只處理一個 token(或使用 KV 快取逐步解碼)。在這種場景下,批次正規化的「批次依賴性」變成了致命傷:你在推理時根本沒有一個完整的批次可以統計。

    層正規化則完美契合。每個位置的隱藏狀態都自帶完整的特徵向量,可以即時計算自己的均值與變異數,不需要參考任何其他位置或樣本。這也是為什麼 Transformer 從第一天起就採用層正規化,而不是批次正規化。此外,語言模型的輸入分布天生就高度偏斜(高頻詞與低頻詞的 embedding 差異巨大),層正規化的逐樣本校準能有效壓制這種偏斜帶來的劇烈波動。

    三、層正規化在大模型訓練中的關鍵作用

    理解了機制,接著要看它在實際訓練中扮演什麼角色。層正規化的價值遠不只是「讓數字變好看」,它深刻影響了訓練的穩定性、收斂速度,甚至是模型架構的設計方向。

    3-1 穩定前向與反向動態

    在深度 Transformer 中,殘差連接(residual connection)會把每層的輸出不斷累加到主幹上。如果沒有正規化,這些累加值的變異數會隨層數線性成長,導致深層的活化值越來越大,梯度也越來越難以控制。層正規化把每個子層的輸入重新拉回標準尺度,等於在每一次「累加」之前先做一次校準,讓殘差流(residual stream)的數值維持在健康範圍內。

    更進一步說,層正規化對反向傳播也有穩定作用。由於正規化操作的雅可比矩陣具有良好的條件數,梯度在穿過正規化層時不會被過度放大或縮小。這讓深層網路的梯度分布更加集中,降低了個別參數更新過激的風險。許多實務經驗顯示,移除層正規化後,模型往往在幾千步內就出現 loss 爆炸,或是完全無法收斂。

    3-2 Pre-LN 與 Post-LN 的架構演進

    層正規化放在哪裡,會顯著改變訓練行為。原始的 Transformer 論文採用的是Post-LN:先做注意力或前饋運算,加上殘差,再做層正規化,也就是 x = LN(x + Sublayer(x))。這種配置在小型模型上表現良好,但隨著層數加深,訓練變得極不穩定,往往需要精心設計的學習率暖身(warmup)才能收斂。

    後來的 GPT-2 與多數現代大模型改用Pre-LN:先正規化,再送入子層,最後加上殘差,也就是 x = x + Sublayer(LN(x))。這個看似微小的調整,讓殘差路徑上完全沒有正規化操作,形成一條「乾淨的高速公路」,梯度可以無阻礙地從最後一層流回第一層。Pre-LN 大幅降低了對 warmup 的依賴,也讓超深模型的訓練變得可行。代價是表現力略遜於 Post-LN,且深層的有效深度可能受限,但在大規模訓練中,穩定性帶來的收益遠大於這些損失。

    3-3 學習率與初始化的容忍度

    層正規化的一個隱藏好處,是它降低了模型對初始化策略的敏感度。在沒有正規化的網路中,初始化時若權重稍大,深層的活化值就會爆炸;稍小則會消失。有了層正規化,無論輸入的尺度如何,經過正規化後都會被拉回標準範圍,等於提供了一層「安全網」。這讓研究人員可以使用更簡單的初始化方法,也能承受更大的學習率。

    在實際的大模型訓練中,這一點尤其重要。大模型通常使用 Adam 或 AdamW 優化器,配合餘弦退火與線性暖身。層正規化的存在讓學習率的搜尋空間變得寬容許多,也讓不同的平行化策略(資料平行、張量平行、流水線平行)之間的數值行為更為一致。可以說,沒有層正規化,就沒有今天這種規模的訓練工程。

    3-4 RMSNorm:去掉均值中心的簡化路線

    隨著模型規模繼續膨脹,研究人員開始思考:層正規化中的「減去均值」這一步,真的必要嗎?2020 年提出的 RMSNorm(Root Mean Square Normalization)給出了否定的答案。它只計算均方根:RMS(x) = √((1/H) Σ x_i²),然後直接做 y = γ ⊙ x / RMS(x),完全省略了均值中心化與偏移參數 β。

    實驗顯示,RMSNorm 在語言模型上的效果與 LayerNorm 相當,但計算量更少、記憶體訪問更簡單,對硬體更友善。LLaMA 系列、T5 的後續變體等模型都採用了 RMSNorm。這個演進說明了一件事:層正規化的核心價值在於「尺度控制」,而均值中心化雖然有幫助,卻不是不可或缺。對於追求極致效率的大模型訓練來說,每一個運算都值得斤斤計較。

    四、工程實作:把層正規化用對的細節

    紙上談兵容易,真正把層正規化放進訓練腳本時,魔鬼藏在細節裡。以下整理幾個實務上最常踩到的坑。

    4-1 數值精度與 epsilon 的選擇

    ε 的選擇看似微不足道,實際上會影響模型的行為。若 ε 太大,正規化的效果會被削弱,尤其在變異數本來就小的層;若 ε 太小,在低精度運算下可能出現除以零或溢出的問題。一般建議在 FP32 下使用 1e-5 到 1e-6,在混合精度訓練中則可適度放大到 1e-5 或 1e-4,以換取數值穩定性。

    另外,正規化的統計量計算最好在 FP32 中進行,即使模型主體使用 BF16。許多框架(如 PyTorch 的 LayerNorm)預設就會把累加與開根號的操作提升到 FP32,這是一個值得保留的設計。若你自行實作正規化層,務必注意這一點,否則很容易在訓練後期出現莫名其妙的 NaN。

    4-2 混合精度訓練下的注意事項

    現代大模型幾乎都使用 BF16 或 FP16 混合精度訓練。BF16 的動態範圍與 FP32 相同,但精度只有 8 位有效位數;FP16 精度較高但範圍窄,容易溢出。層正規化涉及平方、求和、開根號等操作,對精度相當敏感。

    實務上的建議是:正規化的輸入可以先轉成 FP32 再計算統計量,得到結果後再轉回低精度;損失縮放(loss scaling)要與正規化層的行為一起驗證;若使用 FP16,特別注意 γ 參數的初始化,避免一開始就產生過大的活化值。這些細節看似繁瑣,但往往是「訓練能不能跑完」的分水嶺。

    4-3 分散式訓練與張量平行

    在資料平行模式下,層正規化不需要任何跨裝置通訊,這是它相對批次正規化的一大優勢。但在張量平行(tensor parallelism)中,特徵維度會被切分到不同裝置上,此時若要計算完整的均值與變異數,就必須進行一次 all-reduce。這個通訊成本雖然不大,但在超大规模訓練中仍須納入考量。

    有些實作會採用「局部正規化」的近似做法,也就是只在本地切片上計算統計量,以換取通訊效率。这种做法会改变模型行为,必须谨慎评估。另一种做法是把 LayerNorm 放在张量平行切分之外,確保每個裝置都持有完整特徵向量,但這會限制平行策略的彈性。工程上的取捨,永遠取決於你的規模與硬體配置。

    4-4 常見誤區與除錯建議

    最後整理幾個實務上常見的錯誤。第一,忘了正規化的輸入維度:LayerNorm 是沿最後一個維度計算,若你的張量形狀是 [batch, seq, hidden],要確保正規化的是 hidden 維度,而不是 seq。第二,γ 與 β 的初始化:γ 通常初始化為 1、β 為 0,這能讓訓練初期接近「純正規化」的行為,若初始化不當可能導致初期不穩定。第三,推論時的精度:有些推論引擎會把正規化折疊或簡化,務必確認數值行為與訓練一致。

    除錯時,一個實用的技巧是監控正規化層輸出的均值與變異數。正常情況下,均值應接近 0、變異數接近 1(在仿射變換之前)。若發現某層的統計量長期偏離,通常代表該層的輸入有異常,可能是前面層的權重爆炸,或是資料本身有極端值。

    五、爭議與未來:層正規化會被淘汰嗎?

    層正規化雖然是當前的主流,但學界對它的質疑與改良從未停止。理解這些討論,有助於你看清技術演進的方向。

    5-1 對 LayerNorm 的質疑

    有研究指出,層正規化的效果可能被過度神化。部分實驗顯示,在某些架構中,只要搭配適當的初始化與殘差縮放,即使移除層正規化也能訓練成功。例如近年出現的「無正規化」Transformer 變體,透過更精細的權重初始化與學習率調度,試圖擺脫對正規化的依賴。這些工作提醒我們:正規化是一種「方便的穩定器」,而非唯一的解法。

    另一個爭議點是層正規化對表達能力的限制。強制每個 token 的特徵分布標準化,可能會抹除某些有意義的尺度資訊。雖然仿射變換提供了補償機制,但在極端情況下,這種限制仍可能影響模型對細微差異的捕捉能力。

    5-2 替代方案與新興方向

    除了 RMSNorm,近年還有幾個值得關注的方向。「QK-Norm」在注意力機制中對 query 與 key 做正規化,能有效防止注意力 logits 爆炸,已被多個大型模型採用。「DyT」(Dynamic Tanh)則嘗試用一個簡單的縮放 tanh 函數取代正規化層,訴求是更少的運算與更好的硬體效率。此外,也有研究把正規化與殘差連接結合,設計出更適合超深網路的結構。

    這些方案的共同目標,都是在「穩定性」與「效率」之間尋找更好的平衡點。隨著模型規模持續成長,訓練成本成為核心瓶頸,任何能減少運算或通訊的改良都會被認真對待。層正規化本身或許不會消失,但它的形式很可能會持續演化。

    5-3 大模型架構的趨勢觀察

    從近幾年的模型設計來看,有幾個清晰的趨勢。第一,Pre-LN 已成主流,Post-LN 幾乎只出現在小型模型或特定研究中。第二,RMSNorm 的採用率快速上升,尤其在開源模型社群中,它幾乎成了默認選項。第三,正規化的位置與數量仍在實驗中,例如有些模型在每個子層前後都加正規化,有些則只在關鍵位置保留。

    這些演進背後的核心邏輯很簡單:在可控的範圍內,用最少的計算換取最大的穩定性。層正規化之所以能存活這麼久,正是因為它用極低的成本,解決了深度學習中最根本的數值問題。

    結語:看不見的基礎設施,決定模型能走多遠

    回顧整篇文章,層正規化看似只是幾行公式:算均值、算變異數、縮放平移。但正是這幾行公式,讓深度網路的訓練從「靠運氣」變成「可工程化」。它解決了梯度不穩定、分布漂移、批次依賴等一連串問題,讓研究人員能把精力放在架構創新與資料品質上,而不是終日與 NaN 搏鬥。

    對於正在訓練大模型的團隊而言,層正規化不是一個可以隨便對待的元件。它的位置、變體、精度處理、分散式實作,每一個細節都可能影響訓練的成敗。而對於學習者來說,理解層正規化也是理解現代深度學習的一把鑰匙:它串起了梯度流動、殘差連接、注意力機制與訓練工程等多個核心概念。

    AI 技術的演進往往如此:最顯眼的突破是模型規模與基準測試分數,但真正支撐這些突破的,是那些默默運作的基礎設施。層正規化就是這樣的存在。它不張揚,卻無處不在;它很簡單,卻不可或缺。下一次當你看到訓練曲線平穩上升時,不妨想想那些在每個隱藏層中默默校準數值的正規化運算——它們才是讓大模型得以「長大」的無名英雄。

    🏠 返回首頁