Pynote

Python、機械学習、画像処理について

Deep Learning - プーリングについて

概要

Deep Learning で用いられるプーリングの仕組み及び種類を紹介する。

プーリング層

プーリング層も畳み込み層同様、フィルタを適用して出力を計算する処理は同じである。
ただし、プーリング層のフィルタはパラメータを持たず、位置の情報を荒くする役割を持つ。
プーリングは各チャンネルごとに独立して行う。

プーリングの種類

Max Pooling

フィルタに重なる入力の要素の最大値を出力とする。
フィルタの形状が H_f \times W_f、プーリング層の入力を u_{ijk}、出力を y_{ijk} とした場合、

\displaystyle
y_{ijk} = \max_{i + s, j + t} u_{stk}, (s = 0, 1, \cdots, H_f - 1, t = 0, 1, \cdots ,W_f - 1)


Average Pooling

フィルタに重なる入力の要素の平均値を出力とする。
フィルタの形状が H_f \times W_f、プーリング層の入力を u_{ijk}、出力を y_{ijk} とした場合、

\displaystyle
y_{ijk} = 
\frac{1}{H_f \times W_f} \sum_{i + s, j + t} u_{stk}, (s = 0, 1, \cdots, H_f - 1, t = 0, 1, \cdots, W_f - 1)


Global Max Pooling

チャンネルごとに全体の最大値を出力とする。
入力の形状が H_x \times W_x \times C_x、プーリング層の入力を u_{ijk}、出力を y_{ijk} とした場合、

\displaystyle
y_{ijk} = \max_{s, t} u_{stk}, (s = 0, 1, \cdots, H_x - 1, t = 0, 1, \cdots ,W_x - 1)


Global Average Pooling

チャンネルごとに全体の平均値を出力とする。
入力の形状が H_x \times W_x \times C_x、プーリング層の入力を u_{ijk}、出力を y_{ijk} とした場合、

\displaystyle
y_{ijk} = \frac{1}{H_x \times W_x} \sum_{s, t} u_{stk}, (s = 0, 1, \cdots, H_x - 1, t = 0, 1, \cdots, W_x - 1)