ストライドとは
ストライド(Stride)は、CNNの畳み込み演算やプーリング演算において、フィルタ(カーネル)を移動させる幅を指すパラメータです。ストライドが1の場合はフィルタを1ピクセルずつ移動させ、ストライドが2の場合は2ピクセルずつ移動させます。ストライドの値は出力の特徴マップのサイズに直接影響します。
| ひとことで言うと | フィルタを何マスずつ動かすかを決める設定値。 |
|---|---|
| 何がうれしいか | 大きくすると出力が小さくなり、計算量を減らせる(プーリングの代わりにもなる)。 |
| 注意点 | 大きくしすぎると細かい特徴を飛ばしてしまい、精度が落ちる。 |
ストライドと出力サイズ
ストライドを大きくすると、出力特徴マップのサイズが小さくなります。例えば、入力サイズが28×28でストライドが2の場合、出力サイズはおよそ14×14になります。このダウンサンプリング効果は、プーリング層の代替として使用されることがあります。出力サイズの計算式はO = (I - K + 2P) / S + 1です。
1ストライド11マスずつ動かす
▶
2細かく走査出力はほぼ同じ大きさ
▶
3ストライド22マスずつ飛ばす
▶
4出力が半分軽いが情報は粗くなる
ストライド付き畳み込みの活用
近年のCNNアーキテクチャでは、プーリング層の代わりにストライド2の畳み込み層を使用してダウンサンプリングを行う設計が増えています。ストライド付き畳み込みはダウンサンプリングの方法も学習できるため、プーリングよりも柔軟な特徴抽出が可能です。ResNetの最初の層でもストライド2の畳み込みが使用されています。
転置畳み込みにおけるストライド
デコーダーやアップサンプリングで使用される転置畳み込み(Transposed Convolution)では、ストライドがアップサンプリングの倍率を制御します。ストライド2の転置畳み込みは特徴マップのサイズを2倍に拡大します。U-NetやGANの生成器など、画像の解像度を段階的に上げるアーキテクチャで広く使用されています。