AI・機械学習
中級

Pre-Norm vs Post-Norm アーキテクチャ(プレノームブイエスポストノーム アーキテクチャ)

Pre-Norm と Post-Norm は、Transformer アーキテクチャにおける正規化レイヤー(LayerNorm / RMSNorm)の配置パターンを指す。Pre-Norm は残差接続の入力側に、Post-Norm は出力側に正規化を配置する。Pre-Norm は学習の安定性に優れ、Post-Norm は最終的な精度でわずかに優れるとされ、2026年現在の主要 LLM の大半は Pre-Norm を採用している。

0 回閲覧
0 いいね

Pre-Norm と Post-Norm は、Transformer ブロック内での正規化レイヤーの配置位置の違いを指す設計選択であり、大規模言語モデル(LLM)の学習安定性・最終精度・収束速度に大きな影響を与える。結論として、2026年現在の LLM 開発では Pre-Norm が事実上の標準であるが、Post-Norm の精度優位を活かす研究(DeepNorm など)も進んでいる。

概要

Transformer アーキテクチャには、各ブロック内に Self-Attention と Feed-Forward Network(FFN)の2つのサブレイヤーがあり、それぞれに残差接続(Residual Connection)と正規化レイヤー(Normalization Layer)が組み合わされている。この正規化レイヤーをサブレイヤーの「前」に置くか「後」に置くかが、Pre-Norm と Post-Norm の本質的な違いである。

Post-Norm(オリジナル Transformer、2017):

x_out = LayerNorm(x + SubLayer(x))

正規化はサブレイヤーの出力と残差を加算した「後」に適用される。2017年の「Attention Is All You Need」論文で採用されたオリジナルの配置である。

Pre-Norm(GPT-2 以降、2019〜):

x_out = x + SubLayer(LayerNorm(x))

正規化はサブレイヤーに入力する「前」に適用される。残差接続は正規化を経由せずに直接加算される。

この配置の違いは一見些細に見えるが、深いネットワークの学習ダイナミクスに根本的な影響を与える。Pre-Norm が主流になった背景には、GPT-2(2019年)の開発時に Post-Norm の深層モデルで学習が不安定になる問題が観察され、Pre-Norm への切り替えによって解決されたという実務的な経緯がある。

技術的詳細

残差パスの勾配伝播

Pre-Norm と Post-Norm の学習安定性の差は、逆伝播時の勾配伝播経路の違いに起因する。

Post-Norm の勾配伝播:

Post-Norm では、残差パスが LayerNorm を通過するため、勾配は LayerNorm のヤコビアン(微分行列)を経由して伝播する。LayerNorm のヤコビアンは入力に依存する非線形変換であり、深いネットワークでは層を経るごとに勾配が増幅または減衰する「勾配爆発/消失」が起きやすい。

N層の Post-Norm Transformer では、入力からの勾配は N 個の LayerNorm ヤコビアンの積を含むため、N が大きいほど勾配の分散が指数的に増大する。

Pre-Norm の勾配伝播:

Pre-Norm では、残差パスが LayerNorm を通過しない(x がそのまま加算される)。したがって、逆伝播時の勾配は残差パスを通じて直接伝播でき、LayerNorm のヤコビアンの影響を受けない。これは ResNet の残差学習と同じメカニズムであり、理論的には任意の深さで勾配が安定する。

特性Pre-NormPost-Norm
残差パスの勾配直接伝播(LayerNorm を経由しない)LayerNorm のヤコビアン経由
勾配安定性高い(層数に依存しない)低い(深くなるほど不安定)
学習率感度低い(広い範囲で安定)高い(慎重な設定が必要)
ウォームアップ必要性少ない多い(特に深いモデル)
理論的最大深度実質無制限~24層程度(DeepNorm なし)

出力スケールの分析

Pre-Norm と Post-Norm では、最終出力のスケール特性も異なる。

Post-Norm: 各層の出力が LayerNorm で正規化されるため、全層で出力のスケールがほぼ一定(平均0、分散1)に保たれる。これにより、全層が均等に出力に寄与する。

Pre-Norm: 残差パスに正規化がないため、層が深くなるにつれて残差の累積により出力のスケールが単調に増加する。これは、浅い層の影響が深い層に比べて相対的に小さくなることを意味し、深い層ほど出力への寄与が大きくなる。一部の研究では、この特性が「有効深度」の低下を引き起こし、全てのパラメータが均等に活用されないという問題が指摘されている。

精度と安定性のトレードオフ

Pre-Norm と Post-Norm の選択は、学習安定性と最終精度のトレードオフに関わる。

評価軸Pre-NormPost-Norm備考
学習安定性◎△〜×深いモデルで差が顕著
最終精度(同一層数)○◎0.3〜1.0 perplexity 差
収束速度◎○Pre-Norm が速い
学習率の許容範囲◎△Post-Norm は感度が高い
ウォームアップの必要性低高Post-Norm は長いウォームアップ必要
有効深度△◎Post-Norm は全層を均等活用
実装の容易さ◎◎同程度
深いモデル(>48層)◎×(DeepNorm で ◎)

Post-Norm が精度で優れる理由

Post-Norm が最終精度で優れる理由については複数の仮説が提案されている:

  1. 表現力の均等利用: 全層の出力が正規化されるため、各層の表現力が等しく活用される。Pre-Norm では深い層に偏重する傾向がある
  2. 正規化の位置: 残差加算後に正規化することで、サブレイヤーの出力と残差の間の相対的なスケールが調整され、より効果的な特徴融合が行われる
  3. 勾配の多様性: Post-Norm の勾配は LayerNorm を経由するため、層ごとに異なるスケーリングが適用され、パラメータの更新方向が多様化する

Pre-Norm が安定性で優れる理由

Pre-Norm の安定性の優位は、より明確に理論的に説明できる:

  1. 残差パスの直接性: 勾配が正規化を経由せずに伝播するため、勾配のノルムが層数に対して安定
  2. 初期化の影響の低減: 各サブレイヤーの入力が正規化されるため、初期化の良し悪しが学習に与える影響が軽減される
  3. 学習率のロバスト性: 勾配のスケールが安定しているため、広い範囲の学習率で収束する

主要モデルの採用パターン

モデル公開年配置正規化手法層数備考
Transformer(オリジナル)2017Post-NormLayerNorm6論文のデフォルト
BERT2018Post-NormLayerNorm12/24エンコーダモデル
GPT-22019Pre-NormLayerNorm12〜48Pre-Norm 先駆
T52019Pre-NormLayerNorm12〜24エンコーダ・デコーダ
GPT-32020Pre-NormLayerNorm96175B パラメータ
PaLM2022Pre-NormLayerNorm118並列 Attention+FFN
GLM-130B2022Post-NormLayerNorm + DeepNorm70DeepNorm で安定化
LLaMA2023Pre-NormRMSNorm32〜80現在のデファクト
Mistral2023Pre-NormRMSNorm32Sliding Window Attention
Gemma 22024Pre-Norm + Post-Norm 交互RMSNorm26〜42ハイブリッド配置
GPT-4(推定)2023Pre-Norm(推定)非公開非公開公式未発表
Claude(推定)2024Pre-Norm(推定)非公開非公開公式未発表

Gemma 2 のハイブリッド配置

Gemma 2 は興味深い設計として、Pre-Norm と Post-Norm を交互に使用するハイブリッド配置を採用している:

x = x + PostNorm(Attention(PreNorm(x)))
x = x + PostNorm(FFN(PreNorm(x)))

これにより、Pre-Norm の安定性と Post-Norm の表現力の両方を活かすことを目指している。

実装上の考慮事項

最終層の正規化

Pre-Norm モデルでは、最後の Transformer ブロックの出力が正規化されていない状態になるため、出力層(言語モデルヘッド)の前に追加の正規化レイヤー(Final LayerNorm / Final RMSNorm)を配置する必要がある。これを忘れると出力のスケールが不安定になり、性能が大幅に低下する。

# Pre-Norm Transformer の典型的な構造
class PreNormTransformer(nn.Module):
    def __init__(self, d_model, n_layers, n_heads):
        super().__init__()
        self.layers = nn.ModuleList([
            PreNormBlock(d_model, n_heads) for _ in range(n_layers)
        ])
        self.final_norm = RMSNorm(d_model)  # 必須
        self.lm_head = nn.Linear(d_model, vocab_size)

    def forward(self, x):
        for layer in self.layers:
            x = layer(x)
        x = self.final_norm(x)  # Pre-Norm では必須
        return self.lm_head(x)

Post-Norm モデルでは各層の出力が既に正規化されているため、Final Norm は不要(追加しても害はないが効果も薄い)である。

テンソル並列との相互作用

大規模モデルのテンソル並列学習では、正規化の配置がAllReduce通信のタイミングに影響する。Pre-Norm の場合、正規化はサブレイヤーの前(つまりテンソル並列の分割前)に適用されるため、AllReduce 前に完全な正規化統計量が必要であり、追加の通信が発生する可能性がある。Megatron-LM などのフレームワークでは、このオーバーヘッドを最小化するための最適化が実装されている。

FAQ

Q: 新規 LLM を設計する場合、Pre-Norm と Post-Norm のどちらを選ぶべきか?

A: 2026年の実務では Pre-Norm + RMSNorm を選ぶべきである。理由は以下の通り:(1)学習の安定性が高く、ハイパーパラメータのチューニングが容易、(2)LLaMA 以降の大量のオープンソース実装・ツール・知見が蓄積されており、エコシステムが充実、(3)RMSNorm との組み合わせで計算効率が最大化される、(4)Post-Norm の精度優位(0.3〜1.0 perplexity)は、Pre-Norm の安定性と開発効率のメリットに比べて小さい。Post-Norm(+ DeepNorm)を検討するのは、100層以上の超深層モデルを設計し、かつ最終精度の微小な改善が重要な研究目的の場合に限られる。

Q: Pre-Norm モデルの「有効深度」問題はどの程度深刻か?

A: 2024年の研究(CogView, DeepMind の分析)によると、Pre-Norm の大規模モデルでは最終数層のパラメータが出力に支配的に寄与し、浅い層の「有効な寄与度」が低下する現象が確認されている。しかし、実際のベンチマーク性能への影響は限定的であり、LLaMA 3(80層)や GPT-4 のような超大規模モデルが Pre-Norm で優れた性能を達成していることから、「理論的に問題はあるが、実務的には許容範囲」というのが現在のコンセンサスである。この問題に対する対策として、層ごとのスケーリングや Gemma 2 のハイブリッド配置が研究されている。

Q: 学習途中で Pre-Norm から Post-Norm に(またはその逆に)切り替えられるか?

A: 直接の切り替えは不可能である。正規化の配置は残差の数値スケール全体に影響するため、Pre-Norm で学習した重みを Post-Norm モデルに転用すると、出力スケールの不整合により性能が壊滅的に劣化する。逆も同様である。学習の途中切り替えではなく、学習の初期段階で Pre-Norm で安定化し、途中から Post-Norm に切り替える「段階的移行」の研究が一部で行われているが、2026年時点ではまだ実用段階に達していない。

Q: Gemma 2 のハイブリッド配置(Pre-Norm + Post-Norm 交互)は今後主流になるか?

A: 注目すべきアプローチだが、2026年時点では主流になっていない。Gemma 2 はこのハイブリッド配置で良好な結果を示しているが、(1)実装の複雑さが増す、(2)既存の推論最適化ツール(vLLM, TensorRT-LLM など)が Pre-Norm のみに最適化されている、(3)後続の Gemma 4 でも同様の配置を維持しているかは未確認、といった課題がある。中長期的には、正規化の配置を層ごとに最適化する Neural Architecture Search(NAS)的なアプローチが発展する可能性がある。