- Convolution는 두 함수 $f$와 $g$를 이용하여 새로운 함수를 생성하는 과정을 의미한다. 연속 시스템에서 convolution은 다음처럼 정의된다.
$$
(f * g)(t) \triangleq \int_{-\infty}^{\infty} f(\tau)g(t-\tau) d\tau
$$
- 한편 이산 시스템에서 convolution은 다음과 같이 정의된다.
$$
(f * g)(n) \triangleq \sum_{m=-\infty}^\infty f[m]g[n-m]
$$
- 식을 보면 두 함수 $f$와 $g$가 반대 방향으로 진행되면서 연산이 되는 것을 볼 수 있다. 이래서 convolution 연산을 flip-and-drag 하면서 겹치는 영역에 대해 곱의 합을 구한다고 표현한다.
- convolution은 서로 다른 두 파동이 합쳐지는 것으로 상상할 수 있다. 두 파동의 만나는 지점에 의해 보강 되거나 상쇄 되는데, convolution 연산으로 신호에서 특징을 강조(보강)하거나 노이즈를 제거(상쇄)할 수 있다.
- 특징을 강조하거나 노이즈를 제거하는 능력은 filtering이나 feature extraction으로 확장 될 수 있다.
- convolution 연산에 대해 다음이 성립한다. 여기서 $f, g, h$는 함수이고 $a$ 는 스칼라이고 $d$는 미분연산이다.
$$
\begin{aligned} f * g &= g f \\ f * (g * h) &= (f * g) * h \\ f * (g + h) &= (f * g) + (f * h) \\ a(f * g) &= (af) * g = f * (ag) \\ d(fg) &= df * g = f * dg \end{aligned}
$$