本文へ移動

G検定(ジェネラリスト検定)

れいやーせいきか

レイヤー正規化

LN

Layer Normalization

レイヤー正規化は、1つの訓練データについて、ニューラルネットワークのある層のすべてのニューロンへの入力の合計から平均と分散を求め、その層の入力を正規化する手法です。ほかのデータの値を使わないので訓練時と推論時で同じ計算になり、時刻ごとに統計量を計算することでリカレントニューラルネットワークにも適用できます。

詳しい説明

レイヤー正規化とは何か

レイヤー正規化は、ニューラルネットワークのある層について、1つの訓練データの中だけで平均と分散を求め、その層のニューロンへの入力を揃える手法です。英語ではLayer Normalizationと呼びます。2016年に、ジミー・レイ・バー(Jimmy Lei Ba)、ジェイミー・ライアン・キロス(Jamie Ryan Kiros)、ジェフリー・E・ヒントン(Geoffrey E. Hinton)が論文「Layer Normalization」で提案しました。

ここでいう「ニューロンへの入力」とは、各ニューロンが前の層から受け取った値に重みを掛けて足し合わせた合計のことです。原論文は、この合計を正規化の対象にしています。正規化とは、値の集まりから平均を引き、ばらつきの大きさで割って、平均が0、分散が1になる形に揃える操作を指します。

1つのデータの中で平均と分散を求める計算式

ある層にH個のニューロンがあり、1つの訓練データを入れたときの各ニューロンへの入力の合計をとします。レイヤー正規化はまず、このH個の値の平均を求めます。

次に、同じH個の値について分散を求めます。分散は、各値と平均との差を2乗し、それを平均したものです。

最後に、各ニューロンへの入力から平均を引き、標準偏差で割ります。標準偏差は分散の正の平方根です。

3つの式のどれでも、足し合わせる範囲は同じ層のH個のニューロンです。ほかの訓練データの値は1つも出てきません。この点が、レイヤー正規化の設計の中心です。

4つのニューロンを持つ層での計算例

ある層に4つのニューロンがあり、訓練データAを1つ入れたとき、4つのニューロンへの入力の合計がそれぞれ2、4、6、8だったとします。説明のための架空の値です。

平均は、4つの値を足して4で割ります。

各値から平均の5を引くと、-3、-1、1、3になります。これらを2乗すると9、1、1、9です。分散はその平均です。

標準偏差はです。平均を引いた値をこの標準偏差で割ると、正規化後の値が得られます。小数第4位を四捨五入すると、1つめは、2つめは、3つめは、4つめはです。

検算として、正規化後の4つの値を足すと0になるので、平均は0です。それぞれを2乗すると約1.8、約0.2、約0.2、約1.8になり、その平均は約1です。正規化の後で平均が0、分散が1にそろっていることが確かめられます。

正規化した後の値の読み方

正規化後の値は、その訓練データの中で、あるニューロンへの入力が層の平均より標準偏差いくつ分大きいか、または小さいかを表します。値が正なら層の平均より大きく、負なら小さい入力です。絶対値が大きいほど、その層の中で目立って大きい、または小さい入力だったことを示します。

入力の大きさそのものが変わっても、並び方の形が同じなら結果は変わりません。たとえば4つの入力がすべて2倍の4、8、12、16になったとします。平均は10、分散は20、標準偏差は約4.472になり、正規化後の値は先ほどと同じ約-1.342、-0.447、0.447、1.342です。

ただし、4つの入力がすべて同じ値のときは、分散が0になります。上の式のままでは0で割ることになり、計算できない点に注意が要ります。

バッチ正規化と集計の向きがどう違うか

バッチ正規化は、ミニバッチ(学習データから取り出した少数のデータのまとまり)ごとに平均と分散を計算し、正規化する手法です。統計量を集める範囲が、ミニバッチに入った複数のデータにまたがります。

レイヤー正規化で統計量を集める範囲は、1つのデータの中の、同じ層のニューロンです。訓練データを行、層のニューロンを列に並べた表で考えると、レイヤー正規化は1行ずつ平均と分散を求めます。これに対してバッチ正規化は、ミニバッチの向き、つまり複数の行にまたがって求めます。

先ほどの訓練データAと同じミニバッチに、入力の合計が10、10、10、30になる訓練データBが入っていたとします。レイヤー正規化ではAとBを別々に計算するので、Aの結果は約-1.342、-0.447、0.447、1.342のまま変わりません。Bは平均15、分散75、標準偏差約8.660から、約-0.577、-0.577、-0.577、1.732になります。Bが同じミニバッチに入っても入らなくても、Aの計算には影響しません。バッチ正規化では統計量をミニバッチから計算するので、同じデータAでも、一緒にまとめられたデータによって正規化の基準が変わりえます。

訓練時と推論時で同じ計算になること

推論とは、学習を終えたモデルに新しいデータを入れて出力を得ることです。原論文は、レイヤー正規化がバッチ正規化と異なり、訓練時と推論時でまったく同じ計算を行うと述べています。レイヤー正規化の平均と分散は1つのデータの中だけで決まるので、推論で入ってきたデータが1件だけでも、訓練時と同じ式で統計量を求められます。

リカレントニューラルネットワークへの適用

リカレントニューラルネットワーク(RNN)は、文章や音声のような順番を持つデータを1時刻ずつ読み込み、前の時刻の状態を次の時刻へ引き継ぎながら処理するネットワークです。原論文は、時刻ごとに正規化の統計量を別々に計算すれば、レイヤー正規化をRNNへ素直に適用できると述べています。

たとえば3つの単語からなる文を読むRNNでは、1語目を読んだ時刻、2語目を読んだ時刻、3語目を読んだ時刻のそれぞれで、その時刻の層のニューロンへの入力から平均と分散を求めます。どの時刻の計算も、その1つのデータのその時刻の中で完結しています。

誤解しやすい点

1つめは、平均をとる範囲の読み違いです。名前に「レイヤー」、つまり層とあるので、層ごとに訓練データ全体の平均をとる手法だと受け取られることがあります。実際に集める範囲は、1つの訓練データの中の、1つの層のすべてのニューロンです。訓練データ全体やミニバッチ全体の平均ではありません。

2つめは、正規化する対象の読み違いです。原論文が平均と分散を求める対象は、各ニューロンへの入力の合計、つまり前の層の値に重みを掛けて足し合わせた値です。学習の前に元の入力データをそろえておく前処理とは、別の操作です。

この語で使った根拠資料には無いため本文では扱いませんでしたが、バッチ正規化と同様、レイヤー正規化も正規化した値を学習で決まる係数で拡大・平行移動し直す仕組みを一般に持つとされます(この語の根拠資料には確認できていません)。

試験で問われること

G検定

  • 平均と分散は、1つの訓練データについて、ある層のすべてのニューロンへの入力の合計から求めます。ミニバッチ内のほかのデータの値は使いません。
  • バッチ正規化はミニバッチごとに平均と分散を計算します。統計量を集める向きは、レイヤー正規化では1つのデータの中の層のニューロンの方向、バッチ正規化ではミニバッチの方向です。
  • 正規化後の値は、各ニューロンへの入力から層の平均を引き、標準偏差で割って求めます。入力の合計が2、4、6、8なら、平均は5、分散は5です。
  • 原論文によれば、レイヤー正規化は訓練時と推論時でまったく同じ計算を行います。
  • 時刻ごとに正規化の統計量を別々に計算することで、リカレントニューラルネットワークにも素直に適用できます。
  • 2016年にバー、キロス、ヒントンが論文「Layer Normalization」で提案しました。

最終更新日: 2026/09/14