ニューラルネットワークがバッチを処理するとき、各レイヤーのすべてのアクティベーション値が各例に対して計算されます(ライブラリとハードウェアがサポートしている場合は、例ごとに並列で行われる場合があります)。これらの値は、後で使用できるように保存されます。つまり、バッチ内の例ごとにアクティブ化ごとに1つの値であり、決して集約されません。
バックプロパゲーション中、これらのアクティベーション値は、これまでに逆方向に作用して計算されたグラディエントおよび接続の重みとともに、グラディエントを計算する数値ソースの1つとして使用されます。フォワード伝播と同様に、バック伝播は例ごとに適用され、平均値または合計値では機能しません。すべての例が処理されたときのみ、バッチの合計または平均化された勾配を使用します。
これは、最大プールレイヤーにも同様に適用されます。バッチの各例のプーリングレイヤーからの出力が何であるかがわかるだけでなく、前のレイヤーを見て、プールへのどの入力が最大であるかを判断できます。
数学的には、NNレイヤーとニューロンのインデックスを定義する必要がないため、ルールは次のように表現できます。
m = m a x (a 、b )
∂J∂メートル
∂J∂a∂J∂b
場合a > b
∂J∂a=∂J∂ma>b∂J∂a=0
∂J∂b=∂J∂mb>a∂J∂b=0
バックプロパゲーションが最大プーリングレイヤーを通過するとき、グラデーションは例ごとに処理され、最大であった前のレイヤーからの入力にのみ割り当てられます。他の入力はゼロ勾配を取得します。これをバッチ処理しても、違いはありません。例ごとに並列に処理されるだけです。バッチ全体で、これは、最大プールへの入力アクティベーションの1つ以上、おそらくすべてが、勾配の一部のシェアを取得することを意味する可能性があります-それぞれバッチ内の例の異なるサブセットから。
m
a=b