1 背景と原理

1.1 正規化手法の分類

深層学習における正規化手法は、訓練の安定化や収束の高速化を目的として、ネットワーク内部の活性値分布を調整する技術群である。代表的な分類として、正規化を適用する次元(バッチ方向、チャネル方向、空間方向など)によって区分される。バッチ正規化Batch Normalization)はミニバッチ全体の統計量を用いるのに対し、レイヤ正規化Layer Normalization)は各サンプルの全チャネル・全空間位置の統計量を用いる。インスタンス正規化は、各サンプル・各チャネルごとに独立に正規化を行う点で、これらの中でも特異な位置づけにある。

1.2 バッチ正規化との違い

バッチ正規化は、ミニバッチ内の全サンプル・全空間位置にわたって平均と分散を計算し、それを用いて入力標準化する。これに対しインスタンス正規化は、バッチ内の各サンプル(インスタンス)ごとに、かつ各チャネルごとに独立に平均分散を計算する。すなわち、バッチ正規化がバッチ全体の統計に依存するのに対して、インスタンス正規化はバッチサイズの影響を全く受けない。この違いにより、バッチ正規化は小バッチサイズで性能が低下するが、インスタンス正規化はバッチサイズが1でも動作可能である。

1.3 インスタンス正規化の動機

インスタンス正規化は、画像スタイル変換タスクにおいて、個々の画像のコントラストや明るさといったスタイルに関連する低次元の統計量を除去し、コンテンツ(形状や物体)の表現を学習しやすくするために提案された。Ulyanovら(2016)は、従来のバッチ正規化ではバッチ内の異なるスタイルの画像が互いに影響し合い、スタイル変換の品質を損なうことを指摘し、インスタンス単位の正規化がスタイル不変な特徴表現を獲得するのに有効であることを示した。

2 数学的定式化

2.1 定義と計算式

インスタンス正規化は、入力テンソル \( x \in \mathbb{R}^{N \times C \times H \times W} \) に対して、各サンプル \( n \) および各チャネル \( c \) ごとに以下の操作を行う。まず、空間次元 \( H \times W \) にわたって平均 \( \mu_{nc} \) と分散 \( \sigma_{nc}^2 \) を計算する:

\[ \mu_{nc} = \frac{1}{HW} \sum_{h=1}^{H} \sum_{w=1}^{W} x_{nchw} \] \[ \sigma_{nc}^2 = \frac{1}{HW} \sum_{h=1}^{H} \sum_{w=1}^{W} (x_{nchw} - \mu_{nc})^2 \]

次に、標準化とスケール・シフト変換を適用する:

\[ y_{nchw} = \gamma_c \cdot \frac{x_{nchw} - \mu_{nc}}{\sqrt{\sigma_{nc}^2 + \epsilon}} + \beta_c \]

ここで、\( \gamma_c \) と \( \beta_c \) はチャネルごとの学習可能なスケール・シフトパラメータ、\( \epsilon \) はゼロ除算を防ぐ微小定数である。

2.2 訓練時と推論時の挙動

インスタンス正規化は、訓練時と推論時で同一の計算手順を用いる。バッチ正規化が訓練時にミニバッチの統計量を蓄積し、推論時に固定移動平均統計量を使用するのとは異なり、インスタンス正規化は常に現在の入力サンプルから直接平均・分散を計算する。そのため、バッチサイズに依存せず、単一サンプルでも一貫した処理が可能である。この特性は、バッチサイズが可変な状況やオンライン推論において有利に働く。

3 応用分野

3.1 画像スタイル変換

3.1.1 高速スタイル変換

インスタンス正規化は、高速スタイル変換(perceptual lossを用いたスタイル変換ネットワーク)において必須のコンポーネントとして普及した。Ulyanovら(2016)は、バッチ正規化をインスタンス正規化に置き換えるだけで、スタイル変換の視覚的品質が大幅に向上することを示した。この理由は、インスタンス正規化が各画像固有の色味やコントラストを除去し、ネットワークがコンテンツの構造に集中できるようになるためである。

3.1.2 適応的インスタンス正規化(AdaIN)

HuangとBelongie(2017)によって提案されたAdaINは、インスタンス正規化を拡張し、スタイル特徴の統計量(平均と分散)をターゲットスタイル画像から取得して、コンテンツ画像の特徴をその統計量に合わせて正規化する手法である。具体的には、コンテンツ特徴をインスタンス正規化で標準化した後、スタイル特徴のチャネル別平均と分散でスケール・シフトを行う。これにより、任意のスタイル画像を1つのネットワークでリアルタイムに適用できるようになった。

3.2 生成対向ネットワーク(GAN

3.2.1 画像生成における品質向上

GANの生成器において、インスタンス正規化はしばしば使用される。特に、写真-画像変換や高解像度画像生成において、インスタンス正規化は生成結果のスタイルのばらつきを抑え、より自然なテクスチャを生成する助けとなる。例えば、CycleGANやStyleGANの初期層ではインスタンス正規化が採用されている。

3.2.2 安定性の改善

インスタンス正規化は、バッチ正規化と比べてバッチサイズへの依存がなく、小バッチでの訓練でも安定しやすい。GANの訓練ではバッチサイズを小さくせざるを得ない場合があり、そのような状況でインスタンス正規化はモード崩壊を抑制し、訓練の安定性を向上させる効果が報告されている。

3.3 その他の領域

3.3.1 ビデオ処理

ビデオフレームのスタイル一貫性を保つタスクや、ビデオスタイル変換においてもインスタンス正規化が応用されている。各フレームを独立に処理する場合、フレーム間の輝度変動を除去できるため、時間的なスタイル変動を抑えるのに有効である。

3.3.2 音声・信号処理

音声認識や音源分離などのタスクでは、入力信号のパワーやスペクトル形状を正規化する目的でインスタンス正規化が用いられることがある。チャネル(周波数ビンなど)ごとに独立に正規化することで、録音環境や話者による音響特性の違いを吸収し、ロバストな特徴抽出が可能となる。

4 利点と限界

4.1 利点

4.1.1 バッチサイズ非依存性

インスタンス正規化は、各サンプル内で統計量を計算するため、バッチサイズが1でも正しく動作する。これにより、GPUメモリ制約で小さなバッチしか使えない場合や、逐次的な推論が必要なオンラインシステムに適している。また、バッチサイズに応じてハイパーパラメータを調整する必要がない。

4.1.2 スタイル不変性の獲得

画像スタイル変換において、インスタンス正規化は各サンプルのコントラストや色味などの低次統計量を除去する。これにより、ネットワークは純粋なコンテンツ情報(形状、エッジなど)の学習に専念でき、スタイル変換後の品質が向上する。この特性は、スタイルが多様なデータセットで特に効果を発揮する。

4.2 限界

4.2.1 表現力の低下リスク

インスタンス正規化は、個々のサンプルのコントラストや輝度の情報を完全に捨て去ってしまう。そのため、これらの情報がタスクにとって重要な場合(例えば照明変化を考慮した物体認識など)には、逆に性能を低下させる可能性がある。タスクによっては、バッチ正規化やグループ正規化など、より多くの統計情報を保持する手法が適する。

4.2.2 タスク依存性

インスタンス正規化は、特にスタイル変換に特化して設計された手法であり、すべてのタスクで汎用的に優れているわけではない。画像分類やセマンティックセグメンテーションなどのタスクでは、バッチ正規化やグループ正規化の方が高い精度を示すことが多い。適用前に、対象タスクの性質を考慮する必要がある。

5 実装の詳細

5.1 一般的な実装手順

5.1.1 テンソル操作の流れ

入力テンソルが形状 (N, C, H, W) の場合、インスタンス正規化の実装は以下のステップで構成される。

  1. 平均計算:mean = x.mean(dim=(2, 3), keepdim=True) (空間次元方向)
  2. 分散計算:var = x.var(dim=(2, 3), keepdim=True, unbiased=False) (不偏分散ではなく標本分散を使用)
  3. 標準化:x_norm = (x - mean) / torch.sqrt(var + eps)
  4. スケール・シフト:y = gamma * x_norm + beta

ここで、gammabeta はチャネル数 C の1次元テンソルであり、ブロードキャストにより適用される。

5.1.2 学習可能パラメータ(スケール・シフト)

gamma(スケール)と beta(シフト)は、チャネルごとに定義された学習可能パラメータである。初期値は多くの場合、gamma=1beta=0 に設定される。これらは通常のネットワーク重みと同様に勾配降下法で更新される。これらのパラメータを恒等写像(gamma=1, beta=0)に固定して学習しない場合もあり、その場合は単なる正規化(標準化)として機能する。

5.2 主要フレームワークでの実装例

5.2.1 PyTorch

PyTorchには torch.nn.InstanceNorm2d として標準実装されている。使用例:

import torch.nn as nn
inorm = nn.InstanceNorm2d(num_features=64, affine=True)  # affine=True でgamma,betaを学習
output = inorm(input_tensor)

affine=False とすると学習可能パラメータを持たない単純な正規化となる。また、track_running_stats オプションは存在しない(常に現在の入力のみを使用)。

5.2.2 TensorFlow

TensorFlow/Kerasでは tf.keras.layers.InstanceNormalization が利用可能(tensorflow-addons パッケージに含まれる)。使用例:

import tensorflow as tf
from tensorflow_addons.layers import InstanceNormalization
inorm = InstanceNormalization()
output = inorm(input_tensor)

また、独自に実装する場合は tf.nn.moments を用いて空間次元方向の平均・分散を計算し、tf.nn.batch_normalization を適用することもできる。

5.3 パラメータ設定の注意点

インスタンス正規化を導入する際の注意点として、以下が挙げられる。

  • epsの値:ゼロ除算防止のための微小定数 eps は、デフォルト値(PyTorchで1e-5, TensorFlowで1e-3など)が適切であるが、分散が極めて小さいチャネルが存在する場合は調整が必要。
  • affineパラメータの有無:スタイル変換タスクでは affine=True が一般的だが、純粋な正規化のみが必要なら affine=False でもよい。
  • バッチサイズが1の場合:インスタンス正規化は動作するが、空間次元が小さいと統計量の推定が不安定になる。空間サイズが1×1の場合は正規化が無意味になるため、レイヤ正規化など他の手法を検討する。
  • 学習率への影響:インスタンス正規化はバッチ統計に依存しないため、学習率の調整がバッチ正規化ほど敏感ではない。ただし、他の正規化手法と同様に、活性化関数の後の配置が推奨される。

6 関連手法との比較

6.1 レイヤ正規化(Layer Normalization)

レイヤ正規化は、各サンプル内の全チャネル・全空間位置にわたって平均と分散を計算する。インスタンス正規化がチャネルごとに独立に正規化するのに対し、レイヤ正規化はチャネル間の関係も平均化する。このため、レイヤ正規化はテキストや音声などの系列データでよく用いられるが、画像スタイル変換ではスタイル情報(チャネル間の相関)も除去してしまい適さない。一方、インスタンス正規化はチャネルごとの統計量を保持するため、スタイル変換に有利である。

6.2 グループ正規化(Group Normalization)

グループ正規化は、チャネルを複数のグループに分割し、グループごとに空間次元全体で平均・分散を計算する。これはインスタンス正規化とレイヤ正規化の中間に位置する。グループ正規化はバッチサイズに依存しない点でインスタンス正規化と類似するが、チャネルグループ内の統計量を使うため、チャネル間の情報をある程度保持する。画像分類タスクではグループ正規化がインスタンス正規化より優れることが多い。一方、スタイル変換ではグループ数が1(すなわちレイヤ正規化)に近づくとスタイル情報が失われるため、インスタンス正規化の方が適している。

6.3 バッチ再正規化(Batch Renormalization)

バッチ再正規化は、バッチ正規化の改良版であり、小バッチでの推定誤差を補正するために訓練中に移動平均統計量を段階的に調整する。バッチ正規化の利点(高表現力)を維持しつつ、小バッチでの不安定性を軽減する。しかし、インスタンス正規化のように完全にバッチサイズ非依存にはならず、バッチサイズが極端に小さい場合やバッチ内のデータ分布が大きく異なる場合には、インスタンス正規化の方がロバストである。両手法は目的が異なるため、タスクに応じて選択される。

7 発展と今後の展望

7.1 ハイブリッド正規化手法

インスタンス正規化と他の正規化手法を組み合わせたハイブリッド法が研究されている。例えば、チャネルごとにインスタンス正規化とバッチ正規化の加重平均を取る手法や、ネットワークの深さに応じて正規化手法を切り替えるアプローチが提案されている。これにより、スタイル不変性と表現力を両立できる可能性がある。また、AdaINのような条件付き正規化の拡張として、複数のスタイル統計量を混合する手法も発展している。

7.2 自己教師あり学習との統合

自己教師あり学習(contrastive learningなど)では、データ拡張によってスタイル変化に対する不変性を獲得することが重要である。インスタンス正規化は、コントラストやカラーヒストグラムなどのスタイル情報を除去するため、自己教師あり学習の前処理やネットワーク構造に組み込むことが検討されている。これにより、学習された表現がスタイルに依存しないコンテンツ情報をよりよく捉えられるようになる。

7.3 エッジデバイスへの適用

モバイルやIoTデバイスなどのエッジ環境では、メモリや計算資源の制約からバッチサイズを小さくせざるを得ない。インスタンス正規化はバッチサイズに依存しないため、このような環境に適している。また、量子化やプルーニングとの相性も良く、軽量モデルにおける正規化手法として有望視されている。今後、エッジ推論向けのネットワーク設計においてインスタンス正規化がより広く採用される可能性がある。