DeepNorm は、Microsoft Research が 2022年に提案した正規化手法であり、Post-Norm 配置の Transformer を 1000層以上に深くしても安定して学習できるようにするための残差スケーリング技術である。残差接続にスケーリング係数 α を掛け、初期化時に重みを係数 β で縮小することで、深いネットワークにおける勾配爆発と更新爆発を同時に抑制する。
PC構成ビルダーで最適なパーツを選択
DeepNorm は Post-Norm Transformer の学習を超深層(1000層以上)で安定化させる手法であり、残差接続のスケーリングと重みの初期化を理論的に導出された係数で制御することで、Pre-Norm なしでも安定した学習を実現する。2022年に Microsoft の論文「DeepNet: Scaling Transformers to 1,000 Layers」で発表され、大規模モデルの学習安定性に関する研究に大きな影響を与えた。
Transformer の学習安定性に関して、Pre-Norm と Post-Norm の間には長年の議論がある。Pre-Norm は学習が安定しやすいが、Post-Norm は最終的な精度が高いことが知られている。しかし、Post-Norm は層数が増えると勾配爆発が起きやすく、深いモデルの学習が困難であった。
DeepNorm はこの問題に対する理論的に裏付けられた解決策を提供する。核心的なアイデアは、残差接続に定数 α > 1 を掛けることで残差パスの重みを増大させ、同時に各層の重み行列の初期化をスケール β で縮小して更新量を抑制するという二重のスケーリングである。
DeepNorm が注目される理由は、単なる経験的なトリックではなく、行列解析に基づく理論的導出によって α と β の最適値が決定されている点にある。具体的には、モデルの更新が収束条件(bounded update)を満たすように α と β を設計し、それにより任意の深さのネットワークで勾配と更新が発散しないことを数学的に保証している。
DeepNorm の適用は非常にシンプルであり、通常の Post-Norm Transformer に対して以下の2つの変更を加えるだけである。
標準的な Post-Norm Transformer の残差接続:
x_out = LayerNorm(x + F(x))
DeepNorm の残差接続:
x_out = LayerNorm(α × x + F(x))
ここで F(x) は Attention または FFN サブレイヤーの出力、α は残差スケーリング係数である。
重み初期化のスケーリング:
各サブレイヤーの重み行列 W を、通常の初期化値に β を掛けて縮小する。
W_init = β × Xavier_or_He_init(W)
α と β の値はモデルの深さ N(デコーダ層数)とサブレイヤーの構造に依存する。エンコーダ深さ M、デコーダ深さ N として:
デコーダのみ(GPT 型):
エンコーダ・デコーダ(T5 型):
| モデル深さ N | α 値 | β 値 | 標準 Post-Norm との比較 |
|---|---|---|---|
| 6層 | 1.86 | 0.54 | 通常は問題なし |
| 12層 | 2.21 | 0.45 | Post-Norm でも安定 |
| 24層 | 2.63 | 0.38 | Post-Norm は不安定化の始まり |
| 48層 | 3.13 | 0.32 | Post-Norm はほぼ学習不能 |
| 100層 | 3.76 | 0.27 | DeepNorm なしでは発散 |
| 250層 | 4.73 | 0.21 | DeepNorm で安定学習可能 |
| 1000層 | 6.69 | 0.15 | DeepNorm の主要な実証範囲 |
DeepNorm の理論的基盤は「更新の有界性(Bounded Update)」にある。Transformer の学習において問題となるのは以下の2つの現象である:
DeepNorm は残差を α でスケーリングすることで「残差パスの支配性」を高め、勾配が残差パスを通じて安定的に伝播するようにする。同時に、β による初期化縮小で各層の初期出力を抑え、学習初期の更新爆発を防止する。
この二重スケーリングにより、以下の条件が成立する:
| 特性 | Pre-Norm | Post-Norm | DeepNorm (Post-Norm) |
|---|---|---|---|
| 学習安定性 | 高 | 低(深いモデルで不安定) | 高(1000層でも安定) |
| 最終精度 | やや低い | 高い | 高い(Post-Norm 相当) |
| 実装の複雑さ | 低 | 低 | 中(α, β の計算が必要) |
| 理論的裏付け | 経験的 | 部分的 | 数学的に導出済み |
| ハイパーパラメータ | 少ない | 少ない | α, β が層数依存 |
| 最大検証深さ | ~100層程度 | ~24層程度 |
DeepNorm は理論的に重要な貢献であるが、実際の大規模モデルでの採用例は限定的である。
| モデル | パラメータ数 | 層数 | DeepNorm 使用 | 備考 |
|---|---|---|---|---|
| GLM-130B(Tsinghua/Zhipu AI) | 130B | 70 | あり | DeepNorm の最大規模採用例 |
| DeepNet 実験モデル | - | 1000 | あり | Microsoft の検証実験 |
| MAGNETO | - | 各種 | DeepNorm 拡張 | Sub-LayerNorm との組み合わせ |
GLM-130B は DeepNorm を採用した最も大規模な公開モデルであり、70層のデコーダで安定した学習を達成している。しかし、LLaMA 以降の主要 LLM は Pre-Norm + RMSNorm を採用しており、DeepNorm の直接的な影響はアカデミック研究に留まる傾向がある。
import torch
import torch.nn as nn
import math
class DeepNormTransformerBlock(nn.Module):
def __init__(self, d_model, n_heads, n_layers):
super().__init__()
self.alpha = (2 * n_layers) ** 0.25
beta = (8 * n_layers) ** -0.25
self.norm1 = nn.LayerNorm(d_model)
self.attn = MultiHeadAttention(d_model, n_heads)
self.norm2 = nn.LayerNorm(d_model)
self.ffn = FeedForwardNetwork(d_model)
# DeepNorm 初期化
for p in self.attn.parameters():
p.data.mul_(beta)
for p in self.ffn.parameters():
p.data.mul_(beta)
def forward(self, x):
x = self.norm1(self.alpha * x + self.attn(x))
x = self.norm2(self.alpha * x + self.ffn(x))
return x
1. MAGNETO: DeepNorm の発展形として、Sub-LayerNorm(各サブレイヤー内部にも追加の LayerNorm を配置)と組み合わせた手法が提案されている。Foundation Transformer とも呼ばれ、言語・画像・音声の全てのモダリティで安定した学習を実現する。
2. σReparam: 重みの初期化ではなく、重み行列のスペクトルノルムを動的に制御することで学習安定性を向上させる手法であり、DeepNorm の初期化に依存しないアプローチとして注目されている。
3. 深さスケーリング則: DeepNorm の理論を拡張し、モデルの深さと幅のスケーリング比率に関する最適条件を導出する研究が進んでいる。
A: 2026年時点では置き換えは起きていない。DeepNorm は理論的に Post-Norm が Pre-Norm より優れることを示した重要な研究だが、実務面では Pre-Norm + RMSNorm の組み合わせが「十分に安定」かつ「実装が簡潔」であるため、多くのモデル開発者がこちらを選択している。DeepNorm は超深層(100層以上)のモデルを設計する場合に価値があるが、現在の主流 LLM の層数は 32〜80層程度であり、Pre-Norm で十分に安定している。DeepNorm の真の価値は、将来的にモデルの深さが大幅に増加した場合に発揮されると考えられる。
A: 通常は論文で導出された公式をそのまま使用すればよく、手動チューニングは不要である。α = (2N)^(1/4) と β = (8N)^(-1/4) はモデルの層数 N のみから決定され、隠れ次元やヘッド数には依存しない。ただし、Mixture of Experts (MoE) や非標準的なアーキテクチャ(異なるサブレイヤー構成)では、元の導出の前提が成立しない可能性があり、再導出または実験的な調整が必要になるケースがある。
A: 学習済みモデルの事後変換は実質的に不可能である。DeepNorm は初期化時の重みスケーリングが不可欠であり、学習済みの重みに事後的に β を掛けても正しい挙動にならない。DeepNorm を使用する場合は、モデル設計の初期段階で決定し、最初から DeepNorm の初期化と残差スケーリングを適用した状態で学習を開始する必要がある。部分的な例外として、学習済みモデルからの知識蒸留で DeepNorm アーキテクチャの新モデルを学習するアプローチは有効である。
A: GLM-130B の論文によると、標準的な Post-Norm では 70層のモデルが学習初期段階(数千ステップ)で損失が発散したのに対し、DeepNorm を適用した場合は 400Bトークンの学習を通じて安定した損失低下が観測された。特筆すべきは、学習率のウォームアップステップ数が Pre-Norm と比較して 50% 削減でき、かつ最終的な perplexity が Pre-Norm より 0.3〜0.5ポイント低い(= 精度が高い)ことが報告されている。
| 1000層以上 |
| 主な採用モデル | GPT-2, LLaMA, Mistral | BERT, オリジナル Transformer | GLM-130B |