這篇文章有何愷明和楊立昆兩位大佬坐鎮,不由得讓人重視。 核心發現是:Transformer可以在不使用任何歸一化層的情況下,通過簡單的Dynamic Tanh(DyT)操作實現同等甚至更好的性能。
訓練深度神經網路時,每一層的輸入的分佈都在發生變化,這種現象被稱為「內部協變數偏移 (Internal Covariate Shift)」。 可以通俗理解為訓練數據和測試數據的輸入分佈不一致。
內部協變數偏移會導致以下問題:
為了解決內部協變數偏移問題,我們需要對每一層的輸入進行歸一化,使其分佈穩定在一個範圍內。 常見的歸一化方法包括:
特性 | 批量規範 | 層規範 | RMS數位 |
---|---|---|---|
歸一化維度 | batch 維度 | layer 維度 | layer 維度 |
適用場景 | 圖像分類等任務 | 序列數據等任務 | 大模型等任務 |
依賴 batch size | 高度依賴 | 不依賴 | 不依賴 |
訓練/測試行為 | 不一致 | 一致 | 一致 |
計算複雜度 | 較高 | 較高 | 較低 |
是否中心化 | 是 | 是 | 否 |
這篇文章的核心發現就是,LayerNorm 的輸入-輸出映射呈現出類 tanh 的 S 型曲線。 LayerNorm 並非嚴格意義上的線性變換,其輸入-輸出映射呈現出類 tanh 的 S 型曲線。 這種非線性特性並非設計初衷,而是訓練過程中自然形成的——由每個 token 的標準化過程獨立,以及不同 token 的統計量差異導致的。 S 型曲線可以緩解梯度消失/爆炸問題,提高泛化能力,但也可能損失一些資訊,增加訓練難度。
從單個神經元的角度來看,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 變換是相互影響的。
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 型曲線。
深層網路中的特徵分佈雙極分化,指的是在深層網路中,一些神經元的輸出會變得非常大,而另一些神經元的輸出會變得非常小。 這種現象會導致梯度消失或爆炸,影響網路的訓練。
這主要是由於深層網路的複合效應。 在深層網路中,每一層的輸出都會受到前面所有層的影響。 如果前面的層出現了一些異常值,這些異常值會被逐層放大,最終導致某些神經元的輸出變得非常大。
LayerNorm 的 S 型曲線可以緩解這種雙極分化。 因為 S 型曲線可以將極端值壓縮到一個較小的範圍內,從而防止這些極端值被逐層放大。
論文中提到,可以用\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 的輸出對輸入的微小變化越不敏感。
LayerNorm 的非線性特性對 Transformer 的影響是複雜的,既有好處也有壞處。
好處:
壞處:
DyT 是這篇論文提出的一種創新的歸一化方法,它通過使用可學習的縮放 tanh 函數替代歸一化層,實現了高計算效率、自適應特徵尺度調節和特徵表達能力維持。 DyT 在計算資源有限、需要快速訓練和對特徵表達能力要求較高的場景中具有優勢。
計算公式:
\mathrm{DyT}(\mathbf{x}) = \gamma \cdot \tanh(\alpha \mathbf{x}) + \beta\
在8類任務中驗證(圖像分類、生成、語音、語言模型等):
ResNet-50替換BN后精度下降,可能得原因在於:
可嘗試結合通道注意力(如SE模組),為每個通道學習獨立的\alpha\,但會增加參數量。
論文強調DyT通過可學習參數α實現動態縮放,但實驗顯示α最終與輸入標準差倒數(1/σ)高度相關。 這暗示DyT可能只是將顯式的統計量計算(LayerNorm的σ)轉化為隱式的參數學習,並未真正擺脫歸一化的統計邏輯。
α的學習目標與LayerNorm的1/σ相似,但關鍵差異在於計算方式。 LayerNorm動態計算每個token的σ,而DyT通過全域學習一個固定α,犧牲了細粒度統計適應性,換取了計算效率。
LayerNorm的歸一化是「數據依賴型」(data-dependent),隨輸入實時變化; DyT是「參數依賴型」(parameter-dependent),通過訓練集整體統計調整α。 這可能導致DyT在分佈偏移(OOD)場景下表現更差(論文未驗證)。
LLaMA實驗顯示,模型寬度越大,α需越小,且注意力模組需更高α。 這表明DyT對網路深度和模組類型敏感,可能因參數耦合引發級聯誤差。
深層Transformer中,啟動的幅度會隨深度指數增長或衰減,這要求每層的α具備自適應調節能力。 然而,DyT的α是獨立學習的,缺乏跨層協同機制。
對比LayerNorm,LN通過逐token計算σ,天然適應不同層的幅度變化,而DyT的固定α需通過訓練被動調整,導致深層網路需要精細初始化(如LLaMA的分層α)。
這可能說明,效率提升(固定α)與動態適應性(LayerNorm的實時計算)難以兼得。 DyT在LLM中的成功依賴大量試錯調參(如表12的網格搜索),實用性存疑。
人腦神經元的S型啟動特性(Adrian,1926)與DyT設計不謀而合:
方法 | 計算複雜度 | 可解釋性 | 硬體友好度 |
---|---|---|---|
層規範 | O(n) | 高 | 一般 |
RMS數位 | O(n) | 中 | 較好 |
Fixup初始化 | 的(1) | 低 | 優秀 |
DyT 公司 | 的(1) | 高 | 優秀 |