ニューラルネットワークの学習を困難にする現象の1つに、**内部共変量シフト(Internal Covariate Shift)**があります。これは、各層に入力されるデータの分布が、学習の途中で変わってしまうことを指します。


1. どうして起きるのか?

ニューラルネットワークでは、層ごとにパラメータが更新されるため、前の層が出力する特徴量の分布も変化します。すると、次の層にとっての「入力の分布」もどんどん変わることになり、

  • 各層が安定して学習できない
  • 勾配消失/勾配爆発が起こりやすくなる
  • より多くのエポックが必要になる

といった問題が発生します。


2. 解決策:Batch Normalization

この問題を緩和するために開発されたのが、**Batch Normalization(バッチ正規化)**です。ミニバッチ単位で、各層の出力(= 次の層への入力)を正規化することで、

  • 出力の平均を0、分散を1に近づける
  • 各層の入力分布の変動を抑える

という効果があり、結果的に学習が早く安定するようになります。


3. 例え話でイメージしよう

内部共変量シフトを「授業の途中でテスト範囲がコロコロ変わる状況」に例えるとわかりやすいです。

  • 生徒(= 各層)は、ある分布(= 出題傾向)に合わせて準備しているのに、
  • 先生(= 前の層)が毎回テスト範囲を変えてしまうので、
  • うまく成績(= 学習精度)が上がらない

BatchNorm は「毎回のテスト範囲を標準化するルール」のようなもので、学習の安定に貢献してくれます。


まとめ

  • 内部共変量シフトとは「層ごとの入力分布が学習中に変化する現象」
  • 学習の不安定化や遅延の原因になる
  • 対策として Batch Normalization が有効

ニューラルネットワークの高速かつ安定した学習には、この“見えにくい敵”への対処が欠かせません。

投稿者 kojiro777

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です