バッチ正則化
#inbox #2025/9/3
参考記事
バッチ正規化(Batch Normalization)とその発展型
学習を安定させるために用いられる技術
? 何をする?
ミニバッチについて畳み込み計算をする際,各チャンネルの特徴量をチャンネルごとに正規化
正規化しただけでは一様な分布になってしまい,畳み込みの意味がなくなるので,スケーリングとシフトを行う
code: tex
\begin{equation} y_i \leftarrow \gamma \hat{x_i} + \beta \equiv BN_{\gamma,\beta}(x_i)\end{equation}
この式の$ \gamma と\betaがパラメータで,これを各チャンネルで学習することになる?
? なぜ学習が安定化できる?
? 各チャンネルごとに固定の分布を求めるとあるが,なぜその計算は正しいのか?
? 勾配消失はなぜ発生する?
考え始めるとキリがないので,一旦打ち切り
バッチ正則化含め,きちんと数式と背後の理論を学ぶ必要があるな > 機械学習の理論を学ぶ
調べた経緯
DCASE 2024 ベースラインのCRNNにて
BatchNorm2dのパラメータを凍結する意図がよく分からない
Github Copilotによると,事前学習済みモデルを調整する際に凍結するらしい
? 統計量を固定すると何が良い?
結論: ファインチューニングする際に精度が落ちにくくなる
事前の学習で得られた分布の統計量に基づくバッチ正則化が,ファインチューニングで小さくなるなどして,重みと合わなくなる可能性がある
そこで統計量を更新しないよう凍結することで,元のデータから得られた統計量を保持し,重みとの整合性を保つ
事前に学習した情報をなるべく持ったまま微調整が可能?
? 大規模なモデルに関するファインチューニングはモデルの何を更新する?
? バッチ正則化とは?
このページに書く