【バッチせいきか】
バッチ正規化 とは?
最終更新:
💡 バッチの統計で整えて、学習する係数で調整
ニューラルネットワークの中間値を、学習時にはミニバッチの平均・分散で整え、学習する係数で大きさと位置を調整する手法。学習を進めやすくするために使う。
📌 このページのポイント
BatchNormって何を整えるの?
出力は必ず平均0・分散1になる?
その後に、学習する倍率γで掛け、加算値βを足すよ。だから最終出力の平均と分散は固定されないんだ。例えばεを省略した計算例では、平均2・分散1で1と3を整えると−1と1。それにγ=2、β=3を適用すると1と5になるよ。
なぜ学習を進めやすくなるの?
推論のときは、どの平均と分散を使うの?
PyTorchの既定では、学習中に蓄積した平均と分散を使うよ。ただし track_running_stats=False の設定では、推論時にもそのバッチの統計量を使う。学習と推論のモード、それぞれの設定を確認しよう。
バッチが小さい場合も使える?
統計量の推定が不安定になる場合があるよ。別の手法として、チャンネルをグループに分け、バッチの大きさに依存せず平均・分散を計算するGroup Normalizationがある。どの手法が適切かは、モデルとデータで確かめるんだ。
まとめ:ざっくりこれだけ覚えればOK!
「BatchNorm」って出てきたら「バッチの統計で中間値を整え、学習する係数で調整する手法」と思えばだいたいOK!
📖 おまけ:英語の意味
「Batch Normalization」 = バッチ単位の正規化
💬 Sergey IoffeとChristian Szegedyが2015年に提案した手法だよ。学習時にミニバッチの統計量を使って値を整えることを表す名前なんだ。