1行定義
パディングとは、畳み込みの前に入力の周囲を0などの値で埋めて、縦横のサイズを広げておく処理のことです。
くわしく
パディングは、CNNの畳み込み層で、入力の外側に余白を足しておく処理です。最もよく使われるのは、余白をすべて0で埋めるゼロパディングです。
なぜ必要か
フィルタは入力の内側にしか置けません。そのため、パディングなしで畳み込むと、出力の特徴マップは入力より小さくなります。たとえば縦横6×6の入力に3×3のフィルタを当てると、出力は4×4です。層を重ねるたびに縮んでいくため、深いネットワークを組みにくくなります。
また、端の画素はフィルタの窓に入る回数が、中央の画素より少なくなります。周囲を広げておくと、端の情報も中央に近い形で計算に使われます。
出力サイズの計算
縦または横の出力サイズは、次の式で求めます。
出力サイズ = (入力サイズ + 2 × パディング − フィルタサイズ) ÷ ストライド + 1
パディングは両側に付けるので2倍します。割り切れない場合は、小数点以下を切り捨てるのが一般的です。
ストライド1で奇数サイズのフィルタを使うなら、パディングを(フィルタサイズ − 1) ÷ 2にすると、出力は入力と同じサイズになります。3×3のフィルタならパディング1、5×5ならパディング2です。
種類と呼び方
出力サイズを保つ設定は「same」、パディングなしは「valid」と呼ばれることがあります。0で埋める代わりに、端の値を複製する方法や、鏡のように折り返す方法もあります。どの方法でも、足した余白は学習するパラメータではありません。
ストライドが「フィルタをどれだけずらすか」を決めるのに対し、パディングは「入力の外側をどれだけ広げるか」を決めます。どちらの値を変えても出力サイズが変わります。
覚え方
「額縁を足して、絵の端まで筆を届かせる」と覚えます。
G検定での出題
出題のされ方
出力される特徴マップのサイズを保つという目的、端の画素の情報を使いやすくする効果、ストライドやフィルタサイズと組み合わせた出力サイズの計算が問われます。
混同しやすい用語
| 用語 | 意味 |
|---|---|
| パディングこのページの用語 | 畳み込みの前に入力の周囲を0などの値で埋めて、縦横のサイズを広げておく処理 |
| ストライド | 畳み込みやプーリングで、フィルタを入力の上でずらしていくときの移動の幅 |
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
縦横5×5の入力に3×3のフィルタをストライド1で適用するとき、周囲に幅1のパディングを加えると、出力は5×5になる。
答えを見る
答え ◯ 正しい
(5 + 2×1 − 3) ÷ 1 + 1 = 5です。パディングを加えない場合は3×3に縮みます。
-
パディングをしないと、画像の端の画素は、中央の画素よりもフィルタの計算に使われる回数が少なくなる。
答えを見る
答え ◯ 正しい
端の画素は、フィルタの窓に入る位置が限られるためです。外側を広げておくと、端の情報も使われやすくなります。
-
ゼロパディングで入力の周囲に足した部分にも重みがあり、学習によって値が更新される。
答えを見る
答え × 誤り
足した部分は0で埋めた固定の値で、学習するパラメータではありません。学習で更新されるのはフィルタの重みです。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目18 畳み込み層)
- Vincent Dumoulin, Francesco Visin, A guide to convolution arithmetic for deep learning (2016)
- Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, MIT Press (2016) (9.5 Variants of the Basic Convolution Function)