本文へ移動

G検定(ジェネラリスト検定)

すとらいど

ストライド

Stride

ストライドとは、畳み込みの出力をs画素ごとに1つを取り出すときの、その間引きの幅sです。カーネルをs画素ずつずらして当てることにあたり、sを大きくするほど出力の特徴マップは小さくなります。

詳しい説明

ストライドとは何か

ストライド(stride)とは、畳み込みの出力をどれだけ間引いて取り出すかを表す幅です。Goodfellow、Bengio、Courvilleによる教科書「Deep Learning」(2016年)の第9章は、畳み込みの出力をすべて残さず、一定の間隔でだけ値を取り出す操作について、出力を間引く(downsampling)畳み込みとして説明しています。この操作では、各方向についてs画素ごとに1つずつ出力を取り出します。同書は、このsを間引いた畳み込みのストライドと呼んでいます。

ここでの「フル畳み込み」とは、カーネルを1画素ずつずらしながら、入力の上で当てはめられる位置すべてについて計算した畳み込みのことです。カーネルとは、畳み込みで入力に当てはめる小さな重みの並びです。ストライドがsの畳み込みは、このフル畳み込みの結果からs個ごとに1つの位置だけを残したものにあたります。残す位置どうしがs画素ずつ離れているので、カーネルをs画素ずつずらしながら当てた結果と同じになります。

ストライドが1のときは1画素ごとに1つ取り出すことになり、実際には何も間引きません。ストライドが2なら2画素ごとに1つ(1つ飛ばし)、3なら3画素ごとに1つ(2つ飛ばし)で出力を取り出します。

間引きを式で表す

1次元の入力で考えます。入力の長さを 、カーネルの長さを とします。入力の外周に値を付け足さない場合(パディング無し)、カーネルが入力からはみ出さずに当てはまる位置は 通りあります。同書も、パディングを使わないときの出力の幅を入力の幅とカーネルの幅から と示しています。このフル畳み込みの出力を先頭から順に と書きます。

ストライドが の畳み込みの出力 は、このうち先頭から 個ごとに1つの値だけを並べたものです。

は間引いたあとの出力の番号です。 なら 、 なら 、 なら を取り出します。同書の式(9.8)も、出力の位置の番号に を掛けて、入力のどこにカーネルを当てるかを決める形で書かれています。

出力サイズの求め方

取り出せる出力の個数は、番号 がフル畳み込みの出力の最後の番号 を超えない範囲の の数です。 を満たす を数えると、次の式になります。

は出力の1辺の長さです。 は小数点以下を切り捨てる記号です。入力の外周にパディングとして 画素ずつ値を付け足す場合は、入力の長さが に増えたものとして同じ式に当てはめ、 と計算します。パディングを含めたこの形は、先の教科書の該当箇所に書かれたものではなく、上の数え方を広げた一般的な計算方法です。

数値を使った計算例

入力の1辺を9、カーネルの1辺を3、パディング無しとして、ストライドだけを変えて比べます。以下の数値は説明のために作った架空の例です。

まずフル畳み込みの出力は 個で、位置の番号は1から7です。

ストライドが1のとき、7個すべてを取り出します。式では です。

ストライドが2のとき、取り出す位置は1、3、5、7の4個です。式では となり、数え上げと一致します。

ストライドが3のとき、取り出す位置は1、4、7の3個です。式では です。

ストライドが4のとき、取り出す位置は1と5の2個です。次の候補の9は、フル畳み込みの出力の最後の番号7を超えるので取り出せません。式では となり、切り捨てて1、それに1を足して です。

入力が縦9×横9の画像なら、縦と横それぞれに同じ間引きがかかります。ストライド1では出力が7×7で49か所、ストライド2では4×4で16か所になります。1辺の長さはおよそ半分ですが、出力の位置の数はおよそ4分の1になります。

ストライドの値の読み方

ストライドを大きくするほど、取り出す出力の位置は少なくなり、特徴マップは小さくなります。1辺の長さはおよそ 倍になり、2次元の入力では縦横の両方が縮むので、出力の位置の数はおよそ 倍になります。

その代わり、ストライドを大きくすると、隣り合う出力どうしが見ている入力の位置が大きく離れます。フル畳み込みでは計算されていた途中の位置の値が、出力に残らなくなります。ストライドの値は、出力をどれだけ小さくするかと、入力の位置をどれだけ細かく見るかを同時に決めます。

誤解しやすい点

ストライドとカーネルの大きさは別の値です。カーネルの大きさは1回に見る入力の範囲の広さを表し、ストライドは次にカーネルを当てる位置までの距離を表します。先の例ではカーネルの1辺は3のままで、ストライドだけを1から4まで変えました。

割り算が割り切れない組み合わせでは、入力の端の一部がどの出力にも使われません。ストライド4の例では、取り出した2つの位置のカーネルが覆う入力は1番目から3番目と5番目から7番目です。4番目、8番目、9番目の入力はどの出力の計算にも入りません。出力サイズの式の切り捨ては、こうして端に余りが出て捨てられる数え方の一例です。余りをどう扱うかは使うソフトウェアによって違うため(畳み込み層の項目を参照)、ここでの切り捨ては1つの数え方として示しています。

ストライドを2にしても、出力の位置の数が半分になるとは限りません。1辺の長さが約半分になるのであり、2次元の入力では位置の数は約4分の1になります。

試験で問われること

G検定

  • ストライドsは、フル畳み込みの出力をs画素ごとに1つを取り出すときの幅です。sが1のときは何も間引かず、フル畳み込みと同じ出力になります。
  • パディング無しで入力の1辺がm、カーネルの1辺がkのとき、出力の1辺は、mからkを引いた値をsで割って小数点以下を切り捨て、1を足した値になります。入力が9でカーネルが3なら、ストライド1で7、ストライド2で4です。
  • ストライドを大きくするほど特徴マップは小さくなります。2次元の入力では縦横の両方が約1/s倍になるので、出力の位置の数は約1/s²倍になります。
  • mからkを引いた値がsで割り切れないときは、入力の端の一部がどの出力の計算にも使われません。出力サイズの式の切り捨ては、この余りを捨てることを表します。

最終更新日: 2026/09/23