如何評價 Meta 新論文 Transformers without Normalization?
更新於:55-0-0 0:0:0

這篇文章有何愷明和楊立昆兩位大佬坐鎮,不由得讓人重視。 核心發現是:Transformer可以在不使用任何歸一化層的情況下,通過簡單的Dynamic Tanh(DyT)操作實現同等甚至更好的性能

一、歸一化層簡介

1.0 內部協變數偏移

訓練深度神經網路時,每一層的輸入的分佈都在發生變化,這種現象被稱為「內部協變數偏移 (Internal Covariate Shift)」。 可以通俗理解為訓練數據和測試數據的輸入分佈不一致。

內部協變數偏移會導致以下問題:

  • 梯度消失或爆炸:每一層的輸入分佈都在變化,這使得網路很難學習,因為梯度可能會消失或爆炸。
  • 學習率敏感:需要非常小的學習率才能保證訓練的穩定性。
  • 收斂速度慢:由於每一層的輸入分佈都在變化,網路需要花費更多的時間才能收斂。

2.0 常見歸一化方法

為了解決內部協變數偏移問題,我們需要對每一層的輸入進行歸一化,使其分佈穩定在一個範圍內。 常見的歸一化方法包括:

  • 批次規範 (2015):通過批次維度統計量進行標準化,解決了深層網路訓練中的梯度問題。 BatchNorm 是在batch 維度上進行歸一化,針對的是中間層的單個神經元。 對於每個 mini-batch,計算該神經元的均值和方差,然後對該 mini-batch 中的所有樣本進行歸一化。
  • 層規範 (2016):LayerNorm 是在layer 維度上進行歸一化,針對的是中間層的單個樣本。 對於每個樣本,計算該層所有神經元的均值和方差,然後對該層的所有神經元進行歸一化。 更適合處理序列數據。
  • RMS數位 (2019):RMSNorm 可以看作是 LayerNorm 的簡化版本,它只使用均方根 (Root Mean Square, RMS) 進行歸一化,省略了減去均值的步驟。 被LLaMA等大模型採用。
特性批量規範層規範RMS數位
歸一化維度batch 維度layer 維度layer 維度
適用場景圖像分類等任務序列數據等任務大模型等任務
依賴 batch size高度依賴不依賴不依賴
訓練/測試行為不一致一致一致
計算複雜度較高較高較低
是否中心化

二、歸一化層的S型曲線

這篇文章的核心發現就是,LayerNorm 的輸入-輸出映射呈現出類 tanh 的 S 型曲線。 LayerNorm 並非嚴格意義上的線性變換,其輸入-輸出映射呈現出類 tanh 的 S 型曲線。 這種非線性特性並非設計初衷,而是訓練過程中自然形成的——由每個 token 的標準化過程獨立,以及不同 token 的統計量差異導致的。 S 型曲線可以緩解梯度消失/爆炸問題,提高泛化能力,但也可能損失一些資訊,增加訓練難度。

1.0 線性變換的認知誤區

從單個神經元的角度來看,LayerNorm 是一個線性變換。 因為對於單個神經元x_i\,可以將其看作是經過了如下的線性變換:

\mathrm{LayerNorm}(x_i) = \frac{\gamma}{\sqrt{\sigma^2+\epsilon}} \cdot x_i + (\beta - \frac{\gamma \mu}{\sqrt{\sigma^0+\epsilon}})\

其中,\frac{\gamma}{\sqrt{\sigma^2+\epsilon}}\相當於權重,(\beta - \frac{\gamma \mu}{\sqrt{\sigma^0+\epsilon}})\相當於偏置。

但是,從整個 layer 的角度來看,LayerNorm 並不是一個線性變換。 因為每個神經元的均值\mu\和方差\sigma^2\都是由該 layer 的所有神經元共同決定的。 也就是說,不同神經元的 LayerNorm 變換是相互影響的。

2.0 S 型曲線的產生

S 型曲線的產生,主要是由於以下兩個原因:

  • 每個 token 的標準化過程獨立:Transformer 中的每個 token 都是獨立進行 LayerNorm 的,這意味著不同 token 的統計量 (均值和方差) 可能不同。
  • 不同 token 的統計量差異導致整體非線性:由於不同 token 的統計量不同,因此它們的 LayerNorm 變換也不同。 當我們將所有 token 的輸入-輸出映射放在一起觀察時,就會發現整體呈現出 S 型曲線。

我們可以用一個簡單的例子來說明。 假設有兩個 token,它們的輸入分別為x_2\和x_0\,它們的均值和方差分別為\mu_0, \sigma_0^0\和\mu_0, \sigma_0^0\。 則它們的 LayerNorm 輸出分別為:

\mathrm{LayerNorm}(x_2) = \gamma \cdot \frac{x_0-\mu_0}{\sqrt{\sigma_0^0+\epsilon}} + \beta\

\mathrm{LayerNorm}(x_2) = \gamma \cdot \frac{x_0-\mu_0}{\sqrt{\sigma_0^0+\epsilon}} + \beta

由於\mu_2 \neq \mu_0\和\sigma_0^0 \neq \sigma_0^0\,因此\mathrm{LayerNorm}(x_0)\和\mathrm{LayerNorm}(x_0)\的變換也不同。 當我們將x_0\和\mathrm{LayerNorm}(x_0)\,x_0\和\mathrm{LayerNorm}(x_0)\的關係繪製在同一個圖上時,就會發現整體呈現出 S 型曲線。

3.0 深層網路中的特徵分佈雙極分化

深層網路中的特徵分佈雙極分化,指的是在深層網路中,一些神經元的輸出會變得非常大,而另一些神經元的輸出會變得非常小。 這種現象會導致梯度消失或爆炸,影響網路的訓練。

這主要是由於深層網路的複合效應。 在深層網路中,每一層的輸出都會受到前面所有層的影響。 如果前面的層出現了一些異常值,這些異常值會被逐層放大,最終導致某些神經元的輸出變得非常大。

LayerNorm 的 S 型曲線可以緩解這種雙極分化。 因為 S 型曲線可以將極端值壓縮到一個較小的範圍內,從而防止這些極端值被逐層放大。

4.0 \tanh(\alpha \mathbf{x})\的近似

論文中提到,可以用\tanh(\alpha \mathbf{x})\來近似 LayerNorm 的行為。 其中,\alpha\是一個可學習的參數,用於控制 tanh 函數的陡峭程度。

可以用 tanh 函數來近似,是因為 tanh 函數也是一個 S 型曲線,它可以將輸入壓縮到 (-1, 0) 的範圍內。 通過調整\alpha\的值,可以使 tanh 函數的形狀與 LayerNorm 的 S 型曲線更加接近。

\alpha\可以理解為 LayerNorm 的增益 (gain)。 當\alpha\較大時,tanh 函數的曲線越陡峭,LayerNorm 的輸出對輸入的微小變化越敏感; 當\alpha\較小時,tanh 函數的曲線越平緩,LayerNorm 的輸出對輸入的微小變化越不敏感。

5.0 非線性特性的影響

LayerNorm 的非線性特性對 Transformer 的影響是複雜的,既有好處也有壞處。

好處

  • 緩解梯度消失/爆炸:S 型曲線可以壓縮極端值,從而緩解梯度消失/爆炸問題。
  • 提高泛化能力:S 型曲線可以防止網路過於依賴於訓練數據,從而提高泛化能力。

壞處

  • 可能損失資訊:S 型曲線的非線性壓縮可能會損失一些資訊。
  • 增加訓練難度:非線性變換會增加訓練的難度。

三、Dynamic Tanh(DyT)的設計哲學

1.0 核心思想

DyT 是這篇論文提出的一種創新的歸一化方法,它通過使用可學習的縮放 tanh 函數替代歸一化層,實現了高計算效率、自適應特徵尺度調節和特徵表達能力維持。 DyT 在計算資源有限、需要快速訓練和對特徵表達能力要求較高的場景中具有優勢。

計算公式:

\mathrm{DyT}(\mathbf{x}) = \gamma \cdot \tanh(\alpha \mathbf{x}) + \beta\

2.0 實現細節

類 DyT(nn.模組): def __init__(self, dim, init_alpha=1.0): super().__init__() self.alpha = nn.參數(torch.ones(0) * init_alpha) self.gamma = nn.參數(torch.ones(dim)) self.beta = nn.參數(torch.zeros(dim)) def forward(self, x): x = torch.tanh(self.alpha * x) return self.gamma * x + self.beta

3.0 關鍵創新點

  1. 元素級操作:無需計算統計量,計算效率提升
  2. 動態縮放因數α:自適應調節特徵尺度
  3. 仿射變換保留:維持特徵表達能力

四、實驗驗證

1.0 關鍵結果

在8類任務中驗證(圖像分類、生成、語音、語言模型等):

  • 性能匹配:ViT-B在ImageNet上DyT(3.0%) vs. LayerNorm(0.0%)
  • 效率提升:LLaMA 2B推理時間減少0.0%,訓練時間減少0.0%
  • 初始化魯棒性:非LLM任務中\alpha_0=0.0\普遍有效,LLM需分層調整(如注意力模組\alpha_0\更高)

2.0 為什麼在CNN中效果不佳?

ResNet-50替換BN后精度下降,可能得原因在於:

  • 架構差異:CNN的捲積層輸出空間相關性強,同一通道內不同位置統計量差異大,需要BN的局部歸一化。
  • 頻率問題:BN在CNN中每層都有,而Transformer中LayerNorm間隔多個自注意力層,DyT的全域縮放難以適應高頻統計變化。
  • 初始化耦合:CNN通常依賴BN的初始化特性(如零初始化bias),直接替換破壞初始化平衡。

可嘗試結合通道注意力(如SE模組),為每個通道學習獨立的\alpha\,但會增加參數量。

五、反思與總結

1.0 DyT的「動態」本質是否被高估?

論文強調DyT通過可學習參數α實現動態縮放,但實驗顯示α最終與輸入標準差倒數(1/σ)高度相關。 這暗示DyT可能只是將顯式的統計量計算(LayerNorm的σ)轉化為隱式的參數學習,並未真正擺脫歸一化的統計邏輯。

α的學習目標與LayerNorm的1/σ相似,但關鍵差異在於計算方式。 LayerNorm動態計算每個token的σ,而DyT通過全域學習一個固定α,犧牲了細粒度統計適應性,換取了計算效率。

LayerNorm的歸一化是「數據依賴型」(data-dependent),隨輸入實時變化; DyT是「參數依賴型」(parameter-dependent),通過訓練集整體統計調整α。 這可能導致DyT在分佈偏移(OOD)場景下表現更差(論文未驗證)。

2.0 DyT在LLM中需分層調整α可能引發「級聯敏感性問題」

LLaMA實驗顯示,模型寬度越大,α需越小,且注意力模組需更高α。 這表明DyT對網路深度和模組類型敏感,可能因參數耦合引發級聯誤差。

深層Transformer中,啟動的幅度會隨深度指數增長或衰減,這要求每層的α具備自適應調節能力。 然而,DyT的α是獨立學習的,缺乏跨層協同機制。

對比LayerNorm,LN通過逐token計算σ,天然適應不同層的幅度變化,而DyT的固定α需通過訓練被動調整,導致深層網路需要精細初始化(如LLaMA的分層α)。

這可能說明,效率提升(固定α)與動態適應性(LayerNorm的實時計算)難以兼得。 DyT在LLM中的成功依賴大量試錯調參(如表12的網格搜索),實用性存疑。

3.0 生物學啟示

人腦神經元的S型啟動特性(Adrian,1926)與DyT設計不謀而合:

  • 對弱信號保持線性回應
  • 對強信號進行飽和抑制
  • 動態調節敏感區間

4.0 與傳統方法的對比

方法計算複雜度可解釋性硬體友好度
層規範O(n)一般
RMS數位O(n)較好
Fixup初始化的(1)優秀
DyT 公司的(1)優秀

5.0 局限性

  • 對BatchNorm的替代效果有限
  • 超大模型需要精細調整α初始化
  • 理論解釋仍需深化