【第77回】AIはどれくらいの間隔で見る?ストライドとは
画像を一つ一つ細かく見るのか、大きく飛ばして見るのかで結果は変わります。
その間隔を決めているのがストライドです。
この記事では、計算効率とも関係する重要な考え方をやさしく解説します。
1. 読み方
すとらいど (Stride)
2. 意味(定義)
「畳み込み演算において、フィルター(カーネル)を一度に何ピクセルずつずらして移動させるかという『歩幅』」のことです。
ストライド = 1: フィルターを1ピクセルずつ、丁寧に、少しずつずらしながらスキャンします。
ストライド > 1 (例: 2や3): フィルターを大きくジャンプさせながら、飛ばし飛ばしにスキャンします。
【歩幅を変えることで景色が変わる例え】
あなたは、広大な庭(画像)の様子を写真に撮ろうとしています。
ストライド = 1 (1歩行): あなたは、1歩ずつ慎重に移動しながら写真を撮ります。庭の隅々まで、隙間なく記録できますが、撮影する枚数が膨大になり、時間がかかります(計算量が多い)。
ストライド = 3 (3歩行): あなたは、3歩ずつトコトコと移動しながら写真を撮ります。撮影の枚数は少なくて済み、素早く終わりますが、1歩目、2歩目の地面の様子は記録されません(情報の欠落・解像度の低下)。
この「どれくらい丁寧にスキャンするか」という設定が、ストライドです。
3. 歴史・背景
CNNの発展において、ストライドの調整は非常に重要な役割を果たしてきました。初期のモデルでは、計算コストを抑えるために、あえて大きなストライドを用いることで、特徴マップのサイズを小さくする手法(一種のダウンサンプリング)がよく使われました。現代の高度なモデルでは、パディングと組み合わせて、「情報の精度」と「計算の効率」のバランスを最適化するために、ストライドの値を慎重に設計しています。
4. 比較・対比(似た用語との違い)
ここが試験で狙われる「整理」ポイントです!畳み込み周辺の「サイズに関する用語」を整理しましょう。
ストライド (Stride) vs パディング (Padding)
ストライド: 「移動する歩幅」。大きくすると、出力サイズは小さくなる(情報を飛ばす)。
パディング: 「外側の余白」。追加すると、出力サイズは大きく(または維持)なる(情報を補う)。
ストライド vs プーリング (Pooling)
ストライド: 畳み込み層の「移動ルール」そのもの。
プーリング: 畳み込みが終わった後の特徴マップに対して、後から「要約・圧縮」を行う別のプロセス。
5. 活用シーン(どんな問題に使うか)
計算コストの削減: ストライドを大きくして、処理するデータ量を減らし、学習や推論を高速化させる。
解像度のコントロール: 画像の細かなディテールを残したいときはストライドを小さく、大まかな形だけで良いときはストライドを大きく設定する。
ストライド=1にする時: 顔認識のパーツ特定など、小さな傷や特徴も見逃したくないとき。
ストライドを大きくする時: 「ざっくり空か海かを判別したい」ときや、スマホなどの処理能力が低い端末でサクサク動かしたいとき。
6. G検定での出題傾向
G検定では、以下のポイントが狙われます!
「ストライド」の定義: 「フィルターをずらす歩幅」という基本概念。
ストライドと出力サイズの関係: 「ストライドを大きくすると、出力される特徴マップのサイズは小さくなる」という物理的な結果。
ストライドと計算量の関係: 「ストライドを大きくすると、計算量が減り、処理が高速化する」というメリット。
畳み込み・パディングとの組み合わせ問題: ストライド、パディング、カーネルサイズ(フィルターの大きさ)が組み合わさったときに、最終的な出力サイズがどうなるか、といった思考力を問う問題。
7. G検定の例題
【問題1:ストライドの影響】
畳み込みニューラルネットワークにおいて、「ストライド(Stride)」の値を大きく設定した場合に起こる現象として、最も適切なものはどれですか?
A. 特徴マップのサイズが大きくなり、より詳細な情報が保持される。
B. フィルターの移動範囲が重なりやすくなり、計算量が増大する。
C. 出力される特徴マップのサイズが小さくなり、計算の効率(高速化)が向上する。
D. 画像の端の部分に「0」が追加され、情報の損失を防ぐ。
【問題2:ストライドと計算量】
CNNにおける畳み込み演算において、「ストライドを大きくすること」によるメリットとして、正しいものはどれですか?
A. ネットワークの層を深くしても、勾配消失問題が発生しなくなる。
B. 特徴マップの解像度が高まり、より細かいエッジを検出できるようになる。
C. 計算されるピクセル数が減少するため、処理速度の向上とメモリ使用量の削減に寄与する。
D. 畳み込み層における学習パラメータ(重み)の数を増やすことができる。
8. 例題の回答と解説
【問題1 の回答】
正解:C
【解説】 ストライドを大きくすると、フィルターが「ジャンプ」して移動するため、スキャンする回数が減ります。その結果、出力されるマップのサイズは小さくなり、計算量も減って高速化します。A はパディングの説明、D もパディングの説明です。
【問題2 の回答】
正解:C
【解説】 ストライドを大きくすると、一度に飛ばす範囲が増えるため、計算すべきピクセル数が劇的に減ります。これにより、処理の高速化とメモリ節約につながります。B は逆に「ストライドを小さくした時」の効果であり、D はストライドを変えても「重みの数(パラメータ)」自体は変わらない(フィルターの大きさによって決まる)ため誤りです。
