層正規化Layer Normalization

層ごとに数値の目盛りを整え直す仕組み

  • 応用
  • 5分で読める
  • 図 3点

ポイント

  • 層正規化は層を一つ通るたびに数字の目盛りを整え直す仕組みです。
  • 整える基準は一つの場所が持つ数字の束の中です。隣の例や他の文は見ません。
  • 目盛りを整えたあとにはまた広げたりずらしたりするつまみが二つ付きます。どれだけ広げるかはモデルが学習で決めます。
  • この仕組みがないと、層が深くなるほど数字が大きくなったり消えたりしやすく、学習が不安定になります。
  • 最近のモデルは層に入る前に目盛りを整えておく配置を主に使います。

たとえで理解する

模試の成績表の、ある一人の生徒の一行を思い浮かべてください。同じ生徒でも試験がやさしかった日は行全体が高く、難しかった日は全体が低くなるので、素点だけを見ても、どの科目が目立ちどの科目が落ち込んでいるのかがすぐには読み取れません。そこでその生徒自身の点数だけを使って、平均を基準点にし、散らばった幅を一定にそろえて書き直して見せるとしましょう。

ニューラルネットワークの中でも同じことが起きます。層を一つ通るたびに数字は勝手に大きくなったり小さくなったりします。ある場所は数百まで跳ね上がり、ある場所は0の近くに固まっています。この状態のまま次の層に渡すと、跳ねた一か所が判断全体を飲み込んでしまいます。

層正規化は層を通るたびに成績表を作り直す作業です。一人の生徒の行と同じように、その場所にある数字どうしだけで平均を真ん中に寄せ、広がった幅を一定にそろえて次の層へ渡します。

くわしく

目盛りがずれると学習が揺らぎます

層が深くなるほど問題は大きくなります。ある層で数字が1.5倍に膨らむ癖がつくと、層を二十回通る間にその癖が掛け合わさり、最初の何千倍にもなります。逆に毎層少しずつ縮むなら、最後の層に着く頃にはほとんど0です。

学習は最後から最初の方向へ誤差を送り返すことで進みますが、送り返される値も同じ掛け算をたどります。だから手前の層は何の信号も受け取れないか、抱えきれない大きさの信号を受け取ります。手前の層が学べなければ、深く積んだ意味がなくなります。

層正規化は、各層が受け取る数字の目盛りを毎回きれいにそろえます。おかげで層の中の計算がいつも似た範囲の数字から始まり、近道の通路と一緒に使えば、層を何十も重ねても学習が安定します。

基準は一つの場所の中だけです

ここでいう一つの場所とは、文の中の一片が持つ数字の束のことです。言語モデルは一片ごとに数千個の数字を持ち歩きます。層正規化はその数千個の中だけで平均と幅を求めます。

隣を見ないという点が重要です。一度に何文をまとめて計算しても、文が長くても短くても、それぞれの場所は自分の数字だけを見て目盛りを合わせます。だから文一つだけを入れて答えを作るときも、学習のときとまったく同じように動きます。

長さがまちまちな文章を扱うモデルでは、この性質が特に有利です。複数の例をまたいで平均を取る方式は、短い文と長い文が混ざると基準が揺らいでしまうからです。

戻すためのつまみが二つ

目盛りを強制的に合わせると、モデルがせっかく作った大きさの違いが消えてしまうことがあります。そこで正規化のあとにはつまみが二つ付きます。一つは幅をまた広げたり狭めたりし、もう一つは全体を上下にずらします。

このつまみは人が決めるのではなく学習で決まります。束の中の特定の項目の違いを大きく残すほうが有利なら、モデルはその項目のつまみを大きくします。このつまみはどの一片も同じものを共有して使います。正規化は情報をすべて捨てているのではなく、出発点だけをそろえておき、どれだけ広げるかはモデルに任せているわけです。ただし、束全体がもともとどれだけ大きかったかは消えます。

層の前に置くか後に置くか

初期の構造は層の計算が終わったあとに正規化を付けていました。この配置は学習の序盤が揺れやすいので、学習率をごく小さく始めてゆっくり上げる準備運動が事実上必須で、層が深くなるほどさらに扱いにくくなりました。

最近よく使われる配置は逆です。層に入る前に先に目盛りを合わせ、層が作った結果は近道を通ってきた手つかずの値に足します。こうすると最初から最後までつながる通路がきれいに残り、非常に深いモデルでも安定して学習できます。

同じ仕組みでもどこに置くかで学習がうまくいくかどうかが分かれるわけです。目盛りを合わせる計算そのものより、どの場所に差し込むかのほうが大きな違いを生んだという点が、深いモデルを扱う中で得られた教訓の一つです。

もう少し正確に

層正規化は、一つの例の特徴値の束の中で平均と標準偏差を求め、平均を引いて標準偏差で割ったあと、項目ごとに別々に学習される倍率とずらし量で改めて広げてずらす演算です。複数の例をまたいで同じ位置どうしをまとめて計算するバッチ正規化とは、まとめる方向が正反対です。最近のモデルは平均を引く段階を省いて大きさだけを合わせる、より軽い変形を使うこともあり、計算が減るのに性能差がほとんどないため広まりました。

たとえがずれる点もあります。実際の成績表の換算は他の受験者と比べて合わせますが、層正規化は他の例を見ずに、一つの場所の中の数字どうしだけを合わせます。成績表の換算は人が見やすいように一度行って終わりですが、層正規化は答えを一片作るたびに層の数だけ繰り返されます。また成績表は科目ごとの順位を教えてくれますが、正規化は順位をつけません。平均を引いて幅を合わせる段階は、数字どうしの順序と間隔の比をそのままにして、目盛りだけを変えます。そのあとのつまみは項目ごとに別々に調節します。最後に、名前に正規化が入っていますが、過学習を防ぐ規則化とは目的がまったく違います。こちらは学習が崩れないよう支える計算の安定装置です。

やってみる

よくある誤解

  • データを入れる前に一度だけ行う前処理と同じだと思われがちですが、実際にはモデルの中で層を通るたびに毎回新しく行われます。

  • 目盛りを合わせると情報がすべて消えると心配されがちですが、実際には目盛りを合わせる段階で束の中の数字の順序と相対的な間隔はそのまま残り、学習されたつまみで使いやすい幅と位置を改めて決められます。ただし、束全体がもともとどれだけ大きかったかは消えます。

  • 過学習を防いでくれる仕組みだと思われがちですが、実際には深い層で数字が跳ねたり消えたりしないよう支える安定装置です。

ひとこと要約

つまり

層正規化は各層に入るときや出るときの数字の目盛りを毎回そろえ、深く積んだニューラルネットワークが崩れずに学習できるようにする仕組みです。

誤りや、もっと良いたとえがありますか? 修正を提案する · 最終更新 2026-10-17