畳み込みを行うと、出力は入力より少し小さくなってしまいます。層を重ねるほど縮んでいくこの問題を防ぐシンプルな工夫が「パディング」です。ストライドとセットで出力サイズの計算問題にも直結する、G検定頻出の基本キーワードを解説します。

📖 ひと言でいうと

パディングとは、畳み込み処理の前に入力データの周囲に0などの値を追加して「額縁」を付ける手法です。これにより、畳み込みで出力サイズが縮小するのを防ぎ、入力と同じサイズの特徴マップを得ることができます。

身近な例えでいうと、小さめの写真を規定サイズの台紙に貼るとき、周囲に余白を足してサイズを合わせるようなものです。中身の写真(本来のデータ)はそのままに、外側に無地の縁(0の値)を付け足すことで、後工程で扱いやすい大きさを保ちます。厳密には見た目の調整ではなく、フィルタが画像の端でも中央と同じように計算できるようにするための追加です。

🖼 1枚でわかるパディング

パディング=入力の周囲に値を足して縮小を防ぐ
  • 定義 — 入力データの周囲に特定の値を追加する手法
  • 目的 — 畳み込みによる出力サイズの縮小を防ぐ
  • ゼロパディング — 周囲を0で埋める代表的な方式
  • 効果 — 出力サイズを入力と同じに保ち、深い層の積み重ねが可能に
  • 量の目安 — (フィルタサイズ-1)/2 で入力と同サイズを維持
つくもち屋「G検定対策」SUMMARY

📘 公式テキストの説明

入力データの周囲に特定の値を追加する手法を指す。通常、畳み込み演算を行うと、出力のサイズは入力よりも小さくなる。これは、フィルタが入力データをスライドしながら適用される際、端の部分で計算できる領域が減少するためである。このままでは、層を重ねるごとに出力サイズがどんどん縮小し、最終的には有用な特徴を抽出できなくなる可能性がある。そこで、パディングを用いて入力データの周囲にピクセルを追加し、出力サイズの縮小を防ぐ。特に、ゼロパディングと呼ばれる手法では、入力データの周囲を0の値で埋めることで、出力サイズを入力と同じに保つことができる。これにより、畳み込み層を重ねても出力サイズを維持し、深いネットワークの構築が可能となる。

論理の流れを追うと、「畳み込みは端で計算領域が足りず出力が縮む」→「層を重ねると縮みすぎて特徴抽出ができなくなる恐れ」→「だから周囲に値を足して縮小を防ぐ」→「特に0で埋めるゼロパディングなら入力と同サイズを保てる」→「結果として深いネットワークが組める」となります。原因から効果までの一本道をそのまま覚えるのが得策です。

🔍 しっかり理解する

なぜ畳み込みで出力が縮むのか

3×3のフィルタを画像に適用する場面を考えます。フィルタの中心を画像の左上隅のピクセルに合わせようとすると、フィルタの上側と左側が画像からはみ出してしまい、計算に必要な画素が存在しません。そのため、フィルタ全体が画像に収まる位置だけで計算すると、出力は上下左右に少しずつ削れた小さいサイズになります。たとえば5×5の入力に3×3フィルタ(ストライド1)なら、出力は3×3です。

1層だけなら小さな縮みでも、10層、20層と重ねれば出力はどんどん小さくなり、いずれ特徴を抽出する余地がなくなってしまいます。これが、深いCNNにとってパディングが不可欠な理由です。

パディングありとなしを比べる

🅰 パディングなし
  • 出力は入力より小さくなる(5×5入力+3×3フィルタ→3×3)
  • 層を重ねるたびに縮小が進む
  • 端のピクセルはフィルタが通る回数が少なく情報が反映されにくい
🅱 ゼロパディングあり
  • 周囲を0で埋め、出力サイズを入力と同じに保てる(5×5→5×5)
  • 何層重ねてもサイズを維持でき、深いネットワークが可能
  • 端のピクセルにもフィルタの中心が届き、端の情報を活かせる

出力サイズの計算式で確かめる

入力の幅W、フィルタサイズF、パディング量P、ストライドSのとき、出力の幅は次の式になります。

出力サイズ = (W + 2P - F) / S + 1

Pに2が掛かっているのは、パディングが左右(上下)の両側に付くためです。たとえば入力5×5、フィルタ3×3、ストライド1でパディングなし(P=0)なら (5+0-3)/1+1 = 3 で出力3×3。パディング1を付ける(P=1)と (5+2-3)/1+1 = 5 となり、入力と同じ5×5を維持できます。

入力と同サイズを保つためのパディング量は、一般に (フィルタサイズ - 1) / 2 とされます。3×3フィルタなら (3-1)/2 = 1、5×5フィルタなら (5-1)/2 = 2 です。このように出力サイズが入力と変わらない設定は「sameパディング」、パディングを行わない設定は「validパディング」と呼ばれることもあります。

💡 具体例で考える

代表的なCNNのVGG16は、3×3の畳み込み層を13層も重ねた構造です。もしパディングなしで224×224の画像を処理すると、1層ごとに縦横が2ずつ縮み、13層で26ピクセルも失われます。実際のVGG16では各畳み込み層にパディング1を設定して同サイズを保ち、サイズの縮小はプーリング層だけに任せる設計になっています。「縮めるのはプーリングの仕事、畳み込みではパディングでサイズ維持」という役割分担は、多くのCNNに共通する設計思想です。

また、端の情報が重要なタスクを考えてみましょう。書類スキャン画像の文字認識では、ページの端ぎりぎりに文字が印刷されていることがあります。パディングなしでは端のピクセルがフィルタの中心に来ることがなく、端の文字の特徴が十分に抽出されません。ゼロパディングを施すことで、端の文字にもフィルタがきちんと届くようになります。

⚠️ よくある誤解・紛らわしい用語

💡 ポイント
  • ストライドとの混同 — ストライドはフィルタを動かす間隔で出力を小さくする方向、パディングは周囲への追加で出力の縮小を防ぐ方向に働きます。計算式でもSは分母、Pは分子側です。
  • 「パディング=画像の拡大」ではない — 中身のデータを引き伸ばすのではなく、周囲に値を付け足すだけです。元の画素は一切変わりません。
  • プーリングとの混同 — プーリングは特徴マップを意図的に縮小する処理、パディングは意図しない縮小を防ぐ処理で、方向が逆です。
  • 「0以外は使えない」わけではない — 定義は「特定の値を追加する手法」であり、0で埋めるゼロパディングはその代表例という位置づけです。試験では「ゼロパディング=周囲を0で埋める」という対応を確実に。

📝 試験でのポイント

💡 ポイント
  • 「入力データの周囲に特定の値を追加する手法」という定義と、「出力サイズの縮小を防ぐ」という目的のセットが正誤問題の定番です。
  • 「なぜ縮むのか(端で計算領域が減少)」「放置するとどうなるか(層を重ねると特徴抽出不能に)」という理由付きの選択肢が出ても対応できるようにしましょう。
  • 出力サイズ計算 (W+2P-F)/S+1 にパディング量を含めた計算問題は要練習です。同サイズ維持のパディング量 (F-1)/2 も覚えておくと安心です。
  • ストライド・プーリングと役割を入れ替えた誤答選択肢が典型パターンです。

📚 まとめ

パディングは、入力データの周囲に0などの値を追加して、畳み込みによる出力サイズの縮小を防ぐ手法です。畳み込みは端で計算領域が減るため出力が縮み、層を重ねると特徴抽出ができなくなる恐れがあります。ゼロパディングを使えば出力サイズを入力と同じに保て、深いネットワークの構築が可能になります。出力サイズの式 (W+2P-F)/S+1 とあわせて、ストライドとの違いを明確にして覚えましょう。