1. 定義と概要
パディングとは、CNNの畳み込み演算を行う前に、入力データ(画像など)の外周を固定値、多くの場合0で埋める処理のことです。0で埋める場合はゼロパディングと呼ばれます。
目的は大きく2つあります。ひとつは、畳み込みによって出力される特徴マップ(畳み込み演算の結果として得られる、特徴を数値化したデータの集まり)のサイズが層を重ねるごとに縮小していくのを防ぐこと。もうひとつは、画像の端・角の画素が畳み込みに参加する回数が中央付近の画素より少なくなり、端の情報が結果に反映されにくくなる偏りを緩和することです。なお、暗号技術やデータ構造の分野にも同名の用語がありますが、この記事ではCNNにおけるパディングに絞って整理します。
畳み込み演算をパディングなしで行うと、カーネル(フィルタ。画像の特徴を抽出するために使う小さな行列〔数値の格子〕)が入力の外周に届く手前までしか動かせないため、出力される特徴マップは入力よりひとまわり小さくなります。
この状態で畳み込み層を何層も重ねると、層を経るごとに特徴マップが縮小し続け、深いネットワークを組む前に空間的な情報が失われてしまう点が課題です。また、画像の中央付近の画素は多数のカーネルの位置から重なって参照される一方、端・角の画素は参照される回数が少なく、特徴として反映されにくいという偏りも生じます。
この2つの課題に対応する調整弁として、入力の外周を0で埋めてから畳み込みを行うパディングが使われるようになりました。
2. 試験対策ポイント
まず整理したいのは、same(セイム)とvalid(バリッド)という設定名の違いです。「same」は出力の縦横サイズを入力と同じに保つようパディング量を自動的に調整する設定で、「valid」はパディングを行わない設定にあたります。この2つは対になる関係にあり、名称と内容の対応を取り違えやすい点です。
設定名とその中身を並べると、対応関係がつかみやすくなります。
| 設定名 | パディングの扱い | 出力の縦横サイズ |
|---|---|---|
| same(セイム) | 出力を入力と同じサイズに保つよう量を自動的に調整する | 入力と同じに保たれる(ストライドが1のとき) |
| valid(バリッド) | 行わない | 入力よりひとまわり小さくなる |
表のとおり「same」は出力サイズを保つ側、「valid」は保たない側という対比になります。ただし、ストライドが1のときはsameパディングで入力と出力のサイズが一致しますが、ストライドが2以上になると必ずしも一致しません。「same」という設定名から「常に入出力サイズが同じになる」と単純化しすぎないことが取り違えやすい点になります。
出力サイズの計算にも触れておきます。出力サイズは「(入力サイズ+2×パディング-カーネル幅)÷ストライド+1」という式で求められ、パディングの値をこの式に当てはめる計算問題があわせて整理したい論点です。パディングは分子側でサイズを押し戻す方向に働く要素という位置づけにあります。
埋める値として0が使われる理由もあわせて確認しておきたいところです。0は畳み込みの計算結果に余計な影響を与えにくく、形状だけを整えられる値として選ばれており、出力サイズの維持と端の情報の偏りの緩和という2つの目的を同時に達成する仕組みになっています。
3. 関連概念との比較・相違点
パディングは、ストライドやプーリング(畳み込み層の出力を集約してサイズを縮小する処理)と並べて整理しておきたい用語です。出力サイズに対してどちら向きに働き、処理がどこに入るのかで見比べると違いがはっきりします。
| 用語 | 出力サイズへの働き | 処理の位置づけ |
|---|---|---|
| パディング | 入力を0で埋めて縮小を抑える | 畳み込み演算の前処理 |
| ストライド | カーネルの移動幅を広げて縮める | 畳み込み演算のなかの設定 |
| プーリング | 出力を集約して縮小する | 畳み込み層の後の処理 |
ストライドとの最大の違いは、出力サイズに対して働く方向が逆になる点にあります。同じ計算式の中に登場する2つの要素でありながら、押し戻すか縮めるかという役割が正反対になっている組み合わせです。
プーリングとの違いは、処理が入る位置にあります。パディングは畳み込み演算そのものの前処理として入出力サイズを整える処理であるのに対し、プーリングは畳み込み層の出力に対して別途行うサイズの縮小処理という位置づけです。パディングが「畳み込みの前」、プーリングが「畳み込みの後」という順序の違いも、混同しやすい組み合わせといえます。
4. ビジネス・実務での活用シナリオ
画像認識モデルの設計では、多数の畳み込み層を積み重ねる深いCNNを組む際にsameパディングが採用されます。各層で特徴マップのサイズを保つことで、途中で情報が縮み切ってしまう事態を避けつつ、層を深く重ねられるようにするためです。層を重ねるほど表現力が高まる一方、パディングなしでは深さそのものに限界が生じてしまいます。
画像セグメンテーション(画像を画素単位でどの領域に属するかに分類する処理)では、出力を入力と同じ解像度に保つ必要があります。1枚の画像のどの画素がどの領域に属するかを画素単位で示す都合上、入力よりも出力が縮んでしまうと画素同士の対応が崩れるためです。パディングによって各層の入出力サイズを一致させる設計が、この用途では欠かせません。
医療画像・外観検査の分野でも、パディングの役割は実務上の意味を持ちます。病変や傷が画像の端に写り込む場合でも見落とせないため、端の画素の参照回数が少ないという偏りをそのままにはできません。パディングで端の画素の参照回数を補うことで、端に寄った特徴を検出しやすくする設計が取られています。
5. 要点まとめ
- パディングは畳み込み演算の前に入力データの外周を0などの固定値で埋める処理で、出力サイズの縮小を防ぐことと、端の画素の参照回数の少なさを緩和することの2つの目的があります。
- same(出力サイズを入力と同じに保つ設定)とvalid(パディングを行わない設定)という2つの設定名があり、出力サイズの計算式にパディングの値を当てはめる計算問題とあわせて整理したいところです。
- パディングは出力サイズの縮小を抑える方向、ストライドは出力サイズを縮める方向というそれぞれ逆の役割を持ち、畳み込み後に別途サイズを縮小するプーリングとも位置づけが異なります。
6. 確認問題
問1パディングとは、畳み込み演算を行う前に、入力データの外周を固定値(多くは0)で埋める処理を指す。
解答・解説をみる
○ 正しい
パディングは入力の外周を0などで埋めてから畳み込みを行う前処理で、出力サイズの縮小の抑制と端の情報の偏りの緩和という2つの目的を持ちます。
問2same(セイム)パディングとは、パディングを行わず入力データと同じ位置から畳み込みを開始する設定を指す。
解答・解説をみる
× 誤り
パディングを行わない設定はvalid(バリッド)であり、正しくは「same」が出力の縦横サイズを入力と同じに保つようパディング量を自動的に調整する設定です。名称と内容を入れ替えた記述は取り違えやすい典型になります。
問3パディングを行わずに畳み込み演算を繰り返すと、層を重ねるごとに特徴マップのサイズは縮小し続ける。
解答・解説をみる
○ 正しい
パディングなしではカーネルが入力の外周まで届かないため出力が入力よりひとまわり小さくなり、これを繰り返すと特徴マップは層を経るごとに縮小し続けます。

