本文へ移動

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

さいだいちぷーりんぐ

最大値プーリング

Max Pooling

最大値プーリングは、縦横に並んだ出力を小さな長方形の範囲(窓)ごとに区切り、各範囲で最も大きい値をその位置の出力として報告する演算です。入力を少しだけずらしても出力の大部分の値が変わらない、並進に対するおおむねの不変性をもたらします。

詳しい説明

最大値プーリングとは何か

最大値プーリング(max pooling)とは、ニューラルネットワークのある位置の出力の値として、その周りの小さな長方形の範囲(近傍)の中で最も大きい出力の値を使う演算です。イアン・グッドフェロー(Ian Goodfellow)、ヨシュア・ベンジオ(Yoshua Bengio)、アーロン・クールヴィル(Aaron Courville)による教科書「Deep Learning」(2016年)の第9章は、最大値プーリングを「長方形の近傍の中の最大の出力を報告する」演算と説明し、その出典として Zhou and Chellappa(1988年)を挙げています。

畳み込みニューラルネットワークでは、画像のように縦横に並んだ出力(特徴マップと呼ばれます)に最大値プーリングを当てはめることが多く、このページの例もその形で考えます。入力は縦横に並んだ数値で、出力は範囲ごとに1つずつ選ばれた最大値の並びです。

プーリングという考え方と最大値プーリングの計算式

同書は、プーリング関数を「ある位置の出力をその近傍の出力の要約統計量で置き換えるもの」と説明しています。要約統計量とは、いくつかの値を1つの数にまとめた値のことで、平均や最大値がその例です。最大値プーリングは、要約統計量として最大値を選んだプーリングです。

範囲の大きさを決めるのが窓(ウィンドウ)の大きさで、窓を1回に何マスずつずらすかを決めるのがストライドです。窓の大きさ2×2、ストライド2の場合、縦横に並んだ入力 から出力 を次の式で求めます。

ここで は入力の上から 行目・左から 列目の値、 は出力の 行目・ 列目の値です。 は、かっこの中の値のうち最も大きいものを返す記号です。出力の1マスは、入力の2×2の4マスから計算されます。ストライドが窓の大きさと同じ2なので、隣り合う窓は重ならず、入力のどのマスもちょうど1つの窓に入ります。

式の読み方は単純で、出力の値が大きいことは、窓の中のどこか1か所で大きな値が出ていたことを表します。一方で、その大きな値が窓の中のどの位置にあったかは、出力からは分かりません。

数値を使った計算例

以下の数値は説明のために作った架空の例です。4×4の入力を とします。

窓の大きさ2×2、ストライド2で区切ると、入力は左上・右上・左下・右下の4つの窓に分かれます。窓ごとに最大値を選びます。

左上の窓は1行目と2行目の1列目と2列目で、値は9、1、2、0です。 となります。

右上の窓は1行目と2行目の3列目と4列目で、値は5、0、3、1です。 となります。

左下の窓は3行目と4行目の1列目と2列目で、値は1、0、6、1です。 となります。

右下の窓は3行目と4行目の3列目と4列目で、値は0、2、0、0です。 となります。

出力 は次の2×2の並びになります。

4×4の16個の値が、2×2の4個の値にまとめられました。各窓からは最大値1つだけが残り、残りの3つの値は出力に現れません。

小さな並進に対する不変性を数値で確かめる

並進とは、向きや大きさを変えずに位置だけをずらすことです。同書は、プーリングが入力の小さな並進に対しておおむね不変な表現を作るのに役立つと述べ、並進に対する不変性を「入力を少しだけ並進させても、プーリングされた出力の大部分の値が変わらないこと」と説明しています。先の例で確かめます。

入力 の全体を右へ1列ずらし、空いた左端の列には0を入れ、右端からはみ出た列は捨てたものを とします。

と を同じ位置どうしで比べると、16マスのうち値が同じなのは2マスだけで、入力としてはほとんどの位置の値が変わっています。 に同じ最大値プーリングを当てはめます。

左上の窓の値は0、9、0、2で、最大値は9です。右上の窓の値は1、5、0、3で、最大値は5です。左下の窓の値は0、1、0、6で、最大値は6です。右下の窓の値は0、0、1、0で、最大値は1です。

出力の4つの値のうち、9、5、6の3つは と同じです。9も5も6も、1列ずれても元と同じ窓の中にとどまったためです。変わったのは右下の1つだけで、元の右下の最大値2が右端からはみ出して捨てられ、代わりに1が最大値になりました。入力の値は16マス中14マスで変わったのに、出力は4つ中3つが変わりませんでした。これが「出力の大部分の値が変わらない」の具体的な姿です。

同書はこの性質が役立つ場面として、画像に顔があるかどうかを判断する例を挙げています。その場合、目の位置を画素単位で正確に知る必要はなく、顔の左側と右側に目があることが分かれば足ります。最大値プーリングの出力は、窓の中のどこかに強い値があったかを示し、窓の中のどこだったかは示さないので、このような判断に向いています。

ほかのプーリング関数との違い

同書は、ほかによく使われるプーリング関数として、長方形の近傍の平均、長方形の近傍のL2ノルム、中心の画素からの距離に基づく加重平均を挙げています。L2ノルムとは、値をそれぞれ2乗して足し合わせ、その平方根を取った値です。

先の入力 の左上の窓の値9、1、2、0で比べます。最大値は9です。平均は です。L2ノルムは です。

最大値は窓の中で最も大きい1つの値だけで決まるので、ほかの3つの値が1、2、0から0、0、0に変わっても9のままです。平均は4つの値すべてに左右されるので、1つだけ大きい値があっても、ほかの値が小さければ出力は小さくなります。同じ窓でも、どの要約統計量を選ぶかで出力の値とその意味が変わります。

誤解しやすい点

最大値プーリングの不変性は、どれだけずらしても出力が変わらないという意味ではありません。先の例で入力 を右へ2列ずらしたもの を考えます。

これに同じ最大値プーリングを当てはめると、出力は次のようになります。

元の出力9、5、6、2のうち、9と6は並びの中で右の列へ移り、左の列は0になりました。2列ずらすと、最大値9と6が窓の境目を越えて隣の窓へ入るためです。同書が述べているのは、入力を少しだけ並進させた場合に出力の大部分が変わらないということです。

また、最大値プーリングの出力からは、窓の中の最大値以外の値も、最大値が窓の中のどこにあったかも読み取れません。左上の窓の値が9、1、2、0でも9、9、9、9でも、出力は同じ9です。位置の細かい情報が要らない判断では、この性質が先の不変性の元になります。細かい位置の情報が必要な場合には、捨てた情報が戻らないことに注意が要ります。

試験で問われること

G検定

  • 最大値プーリングは、ある位置の出力の値として、その周りの長方形の範囲(近傍)の中で最大の出力の値を使う演算です。要約統計量として最大値を使うプーリングにあたります。
  • 窓の大きさ2×2・ストライド2では、隣り合う窓は重ならず、4×4の入力は4つの窓に分かれて2×2の出力になります。各窓の4つの値のうち最大の1つだけが出力に残ります。
  • プーリングは、入力を少しだけ並進させても出力の大部分の値が変わらない、並進に対するおおむねの不変性をもたらします。大きくずらして最大値が窓の境目を越えると、出力は変わります。
  • 最大値プーリングの出力からは、窓の中の最大値以外の値も、最大値が窓のどの位置にあったかも分かりません。顔の中の目の正確な位置より、目が顔の左右にあるかが分かればよい判断に向きます。
  • ほかの代表的なプーリング関数には、長方形の近傍の平均、L2ノルム、中心の画素からの距離に基づく加重平均があります。値9、1、2、0の窓では、最大値プーリングは9、平均は3を返します。

最終更新日: 2026/09/23