G検定(ジェネラリスト検定)
ばっちせいきか
バッチ正規化
BN
Batch Normalization
バッチ正規化は、ミニバッチごとに求めた平均と分散を使って、ニューラルネットワークの層に入る値を平均0・分散1に揃え、学習で決まる2つのパラメータで尺度と位置を調整し直す手法です。学習を大幅に速められると報告されています。ただし、なぜ効くのかについては、内部共変量シフトを減らすからだという原論文の説明に異論があり、決着していません。
詳しい説明
ミニバッチの平均と分散で層の入力を揃える手法
バッチ正規化(Batch Normalization、略してBN)は、ニューラルネットワークの層に入る値について、ミニバッチごとに平均と分散を計算し、平均0・分散1になるように揃えてから次の処理へ渡す手法です。2015年にセルゲイ・イオッフェ(Sergey Ioffe)とクリスチャン・セゲディ(Christian Szegedy)が論文で提案しました。
ミニバッチとは、学習データ全体から取り出した少数のデータのまとまりです。確率的勾配降下法(SGD)では、ミニバッチごとに損失の勾配を求め、パラメータを少しずつ更新します。バッチ正規化はこの同じミニバッチを使い、層に入る値の平均と分散をその場で計算して正規化に使います。
イオッフェとセゲディは、正規化をネットワークの構造の一部として組み込む点を手法の特徴に挙げています。正規化を学習の外で別に行うのではなく、層の1つとして置きます。そのため、誤差逆伝播法で勾配を求めるときにも、平均と分散の計算が勾配の式に含まれます。論文には、正規化に使う値を勾配の計算の外で求めた初期の実験で、モデルが発散したという報告もあります。
置く場所について、原論文は、非線形の活性化関数に渡す直前で正規化しています。正規化の対象は、全結合層や畳み込み層で重みを掛けてバイアスを足した値 です(ここで は重み、 は層への入力、 はバイアス)。畳み込み層では、同じ特徴マップに属する値であれば、ミニバッチ内のすべてのデータとすべての位置にわたってまとめて正規化します。
正規化の計算式と、尺度と位置を戻す2つのパラメータ
ある層の1つの値(ニューロン1個ぶんの入力)に注目します。大きさ のミニバッチには、この値が 個あります。それを と書くと、バッチ正規化は次の4段階で計算します。
まず、ミニバッチの平均 を求めます。
次に、ミニバッチの分散 を求めます。原論文の式では、データの個数 で割ります。
続いて、各値から平均を引き、標準偏差で割って正規化します。
(イプシロン)は、分散が0に近いときに0で割る計算になるのを避けるために足す小さな定数です。 を無視すれば、この式は 、つまり平均 を引いて標準偏差 で割る標準化の形です。
最後に、この層自身が新しく持つ、学習で決まる2つのパラメータ (ガンマ)と (ベータ)を使って、尺度と位置を変えます。これは全結合層や畳み込み層の重み・バイアスとは別に、バッチ正規化の層が独自に持つ値です。
最後の段階があるのは、正規化するだけでは層が表せるものが狭まってしまうからです。原論文は、シグモイド関数への入力を平均0・分散1に揃えると、入力がシグモイドのほぼ直線に近い範囲に閉じ込められてしまう例を挙げています。 と は他の重みと一緒に学習されるので、必要なら正規化を打ち消すこともできます。 を元の値の標準偏差に、 を元の値の平均に等しくすると、 は元の に戻ります。
4つの値のミニバッチで計算例をたどる
ミニバッチの大きさを とし、ある層の1つの値が、4つのデータで順に 2、4、6、8 だったとします。ここでは を0とみなして計算します。
平均は です。
各値と平均との差は 、 、 、 で、その2乗は 9、1、1、9 です。分散は 、標準偏差は です。
正規化した値は、差を で割って求めます。2 は 、4 は 、6 は 、8 は になります。
この4つの値の平均は0です。2乗はそれぞれ 、 、 、 で、合計の4を4で割ると分散はちょうど1になります。正規化によって平均0・分散1に揃ったことが確かめられます。
次に、学習の結果として 、 になっていたとします。出力は なので、およそ -1.683、0.106、1.894、3.683 です。この4つの値の平均は と同じ1、標準偏差は と同じ2です。
もし学習の結果が 、 だったなら、2 に対する出力は になり、ほかの値も同じように元の 4、6、8 に戻ります。正規化を打ち消せるというのは、このことです。
正規化した値の読み方
正規化した値 は、その値がミニバッチの平均から標準偏差いくつぶん離れているかを表します。上の例で 8 は約 1.342 なので、平均より標準偏差の約1.3倍大きい値です。0 なら平均と同じ、負の値なら平均より小さい値です。
同じ 8 という値でも、一緒にミニバッチに入った他のデータが違えば、平均と分散が変わるので も変わります。原論文も、バッチ正規化の出力は1つのデータだけでなく、同じミニバッチに入った他のデータにも左右されると述べています。
学習中と推論時で使う平均と分散の違い
学習中は、ミニバッチごとに平均と分散を計算して正規化します。一方、学習を終えたモデルで予測する推論時には、出力が入力だけで決まるほうが望ましくなります。そのため原論文は、推論時にはミニバッチの統計量ではなく、訓練データ全体の平均と分散を使うとしています。分散には、多くのミニバッチで求めた分散の平均に を掛けた値(不偏推定)を使います。学習中にこれらの値を移動平均で追いかける方法も示されています。
推論時は平均と分散が固定されるので、正規化は と による変換と合わせて、1つの単純な一次式の変換にまとめられます。
原論文が報告した効果
原論文は、ImageNetの画像分類で当時最先端だったモデル(Inception)にバッチ正規化を加え、次の結果を報告しています。同じ精度に到達するまでの学習ステップ数は、元のモデルの14分の1で済みました。より高い学習率を使っても学習が発散しにくくなり、重みの初期値にもそれほど気を配らなくてよくなったとしています。さらに、バッチ正規化には正則化(過学習を抑える働き)の効果もあり、場合によってはドロップアウトが要らなくなると述べています。
バッチ正規化を使ったネットワークを複数組み合わせたアンサンブルでは、ImageNetの検証データでtop-5エラー率4.9%を達成しました。top-5エラー率とは、モデルが可能性の高い順に挙げた5つの候補の中に正解が入らなかった画像の割合です。
なぜ効くのかは決着していない
原論文の著者は、効く理由を内部共変量シフトという考えで説明しました。内部共変量シフト(internal covariate shift)とは、学習が進むにつれてネットワークのパラメータが変わることで生じる、各層の活性化(層が出す値)の分布の変化です。前の層のパラメータが更新されるたびに後ろの層への入力の分布が変わるので、後ろの層は変わり続ける分布に合わせ直さなければならず、学習が遅くなる、という考えです。イオッフェとセゲディは、バッチ正規化がこの内部共変量シフトを減らすことで学習を速めると説明しました。論文の題名にも「内部共変量シフトを減らして深いネットワークの学習を速める」という趣旨が入っています。
この説明には異論があります。2018年、シバニ・サントゥルカル(Shibani Santurkar)、ディミトリス・ツィプラス(Dimitris Tsipras)、アンドリュー・イリアス(Andrew Ilyas)、アレクサンダー・マドリー(Aleksander Madry)の論文 "How Does Batch Normalization Help Optimization?" は、広く受け入れられてきたこの説明には十分な根拠が無いと指摘しました。
サントゥルカルらは2つの実験結果を示しています。1つ目は、バッチ正規化の後にわざと分布を乱すノイズを加えても、ノイズを加えないバッチ正規化と比べて性能がほとんど変わらなかったという結果です。分布を揃えることが効く理由なら、分布を乱せば性能は落ちるはずです。2つ目は、内部共変量シフトをより広い定義で測ると、バッチ正規化を使ったネットワークのほうが、かえって内部共変量シフトが大きくなる場合があったという結果です。
そのうえでサントゥルカルらは、別の説明を示しました。バッチ正規化は、最適化問題のランドスケープを著しく滑らかにする、という主張です。ランドスケープとは、パラメータの値を動かしたときの損失の値の上がり下がりを地形の起伏に見立てたものです。
どちらの説明が正しいかは、まだ決着していません。確かに言えるのは、ミニバッチの平均と分散で正規化し、 と で調整し直すという手続きと、原論文が報告した効果までです。「バッチ正規化は内部共変量シフトを減らすから効く」と言い切る説明を見かけたら、それは原論文の著者の説明であり、異論が出ていることを思い出してください。
ミニバッチに頼ることから来る注意点
バッチ正規化の平均と分散は、訓練データ全体の値をミニバッチから推定したものです。ミニバッチに含まれるデータが少ないほど、この推定はミニバッチごとに大きくばらつきます。また、学習中はミニバッチの統計量、推論時は訓練データ全体の統計量を使うので、学習中と推論時で計算の中身が異なる点も、実装するときに意識しておく必要があります。
統計量をどの範囲で求めるかは、正規化の手法を見分ける軸になります。原論文は、1つの訓練データだけから統計量を求める以前の方法について、活性化の絶対的な大きさの情報を捨ててしまい、ネットワークが表せるものを変えてしまうと指摘しました。そのうえでバッチ正規化は、訓練データ全体の統計量を基準にする方針をとり、その近似としてミニバッチの統計量を使っています。画像1枚ごとに統計量を求めるインスタンス正規化は、統計量を求める範囲がバッチ正規化と異なる手法です。
試験で問われること
G検定
- ミニバッチの平均と分散で正規化し、学習で決まるパラメータγとβで尺度と位置を調整し直すという計算の手順と、各記号の意味を説明できるようにします。
- 小さな数値のミニバッチで平均・分散・正規化後の値を実際に計算し、正規化後の値の平均が0、分散が1になることを確かめられるようにします。
- γとβがあるのは正規化だけでは層が表せるものが狭まるためで、γを元の標準偏差、βを元の平均にすれば元の値に戻せることを理解します。
- 学習中はミニバッチの平均と分散を使い、推論時は訓練データ全体から求めた平均と分散を使うという違いを押さえます。
- 原論文が報告した効果(同じ精度に達するまでの学習ステップ数が14分の1になった、より高い学習率を使えた、場合によってはドロップアウトが要らなくなった)と、効く理由の説明とを分けて理解します。効く理由を内部共変量シフトの減少とする原論文の説明には、Santurkar et al.(2018)の異論があり、決着していません。
最終更新日: 2026/09/14