畳み込みは重ねてずらして足す
片方の信号を反転し、ずらしながら重ねて掛けて足す。その合計が出力の1点になる (f∗g)[n]=Σ f[m]·g[n−m] を体感します。
0
ずらし量 n
—
重なりの積の和(この点の出力)
—
出力の最大値
—
上: 入力 f[m](青)と 反転してずらしたカーネル g[n−m](紫)/重なり=積(橙) 下: 出力 (f∗g)[n](緑)
畳み込みは「反転(flip)→ ずらす(slide)→ 掛けて足す(multiply & sum)」の3手順をくり返すだけの操作です。
カーネル
ずらし量
カーネル
g を左右反転して位置 n までずらし、入力 f と重なった所どうしを掛けて全部足す。その1つの合計値が、出力 (f∗g) の位置 n での値になります。ずらし量
n を1つ動かすたびに出力が1点ずつ描かれます。これが連続/離散の畳み込みの定義そのもの(ディープラーニングの2D画像カーネルもこの拡張です)。
いま何が起きている?
ここがポイント
- 反転がポイント ── 定義
g[n−m]の−mがカーネルを左右反転させる。相関(相互相関)との違いはここだけ。 - 1点ずつ足し算 ── 出力の各点は「重なった部分の積の総和」1つの数。ずらすほど重なりが移動して出力が形づくられる。
- カーネルが意味を決める ── box なら平滑化(なまる)、差分なら境目(エッジ)が立つ、恒等なら入力そのまま。
- 端で重なりが減る ── 信号の両端では重なる範囲が狭く、出力は小さくなる(縁の効果)。