1. Convolution의 정의
사전적 정의는 얽혀 있음 뒤섞여 있음이라는 의미이다. 그 의미를 제대로 이해하면 정말로 뒤섞여 있다는 것을 알 수 있는데 수학적 정의를 살펴보자.
Continuous한 영역에서 input 와 impulse response , output 에 대하여 아래와 같다.
또는 Discrete한 영역에서는 아래와 같다.
2. Convolution의 작동 원리 이해
공식은 위처럼 나오는데 그래서 이게 뭘 하는 건가 싶을 것이다. 여러 과목에서 공부를 했음에도 매번 헷갈리는데 이번에 확실히 이해해서 설명해본다.
2.1. 또는 이 0일 때를 먼저 가정한다.
먼저 쉽게 이해하기 위해서는 가 0일 때를 먼저 보는 것이 좋다. 그럴 경우 아래처럼 될 것이다.
2.2. 움직일 그래프를 좌우 대칭시킨다.
Convolution은 교환법칙이 성립하기 때문에 움직일 함수를 둘 중 고를 수 있다. 여기서는 를 골라보자.
이후 해당 함수를 y축 기준으로 좌우 대칭이동시킨다.
그리고 이 식에서 나온 대로 고정된 함수와 대칭이동 시킨 움직이는 함수의 곱을 전 구간에서 적분한다.
그 값이 바로 0일 때의 값이다. 이제 다른 값일 때도 살펴보자.
2.3. 가 커질 수록 움직일 함수를 오른쪽으로 움직인다.
식을 보면 한 번에 납득이 되지 않을 수 있는데 결론부터 말하자면 왼쪽에서 오른쪽으로 를 움직이며 서로 곱해서 적분하면 된다.
왼쪽에서 오른쪽으로 가는 이유는 생각보다 간단하다.
우선 가 존재한다고 생각해보자.
우리는 첫 번째로 대칭이동을 했다. 그러면 가 될 것이다. 이제 이 상태에서 만큼 평행이동을 한다면 자리에 를 대입하면 된다.
그러면 가 됨을 알 수 있다.
따라서 만큼 평행이동시킨 것이므로 가 커질 수록 오른쪽으로 움직이며 구하면 된다.
3. 예시로 이해하기
위와 같은 식이 있다고 해보자.
일 때 그림을 그려보면 아래와 같다.

놀랍게도 인데 이걸 한 번 이해해보자.
3.1. 이 0일 때를 가정하기.
가장 간단하게 이 0일 때를 보자.
그러면 위 식이 아래처럼 된다.
3.2. 움직일 함수를 좌우 대칭시킨다.
파란 함수를 좌우 대칭시키면 빨간색 함수가 될 것이다. 이때 서로 곱해서 값이 존재하는 곳은 인 곳 뿐이므로 값이 1이 된다.

3.3. 이 커질 수록 오른쪽으로 옮기기
옮김에 따라 아래 gif 짤처럼 생성되게 된다.

3.4. 시험장에서 헷갈린 점
머릿속으로 생각한다고 했을 때 아래 식에서 일 때 값이 이 되면서 최댓값이 된다. 그런데 만일 covolution인 건 알긴 아는데 정확히 이 맞는지 아니면 과 같이 조금 평행이동을 해야하는지 확실하지 않을 수 있다.
이를 확인하기 위해 convoluted된 값을 계산해서 이 나오는지 확인을 해봐야할 것이다.
그래서 대입을 해보면 아래처럼 된다.
그랬을 때 아래 식에서 는 확실히 가 일 때 이 된다.
그런데 는 어떤가. 이거는 어떻게 그려야할까? 여기서 헷갈렸는데 생각하는 방법이 2가지이다.
3.4.1. 대칭이동 후 평행이동
우선 를 에 대해 좌우 대칭이동시킨다.
그러면 가 된다.
이후 를 만큼 평행이동시킨다. 그러기 위해 자리에 대신 을 넣는다.
그러면 가 되어 원래 식인 가 같음을 알 수 있다.
이를 상상해보면 원래 와 완전히 겹쳐짐을 알 수 있을 것이다. 왜냐하면 부터 까지 의 값을 가지기 때문이다.
3.4.2. 평행이동 후 대칭이동
또 다른 방법은 평행이동을 먼저 할 수 있다.
우선 를 만큼 평행이동시킨다. 그러기 위해 자리에 대신 을 넣는다.
그러면 가 된다.
이제 대칭이동을 해야한다. 이때 주의해야 하는 것은 에 대해 좌우 대칭이동시키면 안 된다는 것이다.
그 이유는 이라고 했을 때 를 에 대해 좌우 대칭이동시키면 대신 를 넣게 되어 가 되고 원래 식과 다른 식이 된다.
따라서 에 대해 좌우 대칭이동시켜야 한다. 그러기 위해서는 에서 대신 를 넣으면 된다. 그러면 아래처럼 원래 식과 같아진다.
따라서 오직 주의해야할 점은 평행이동 후 대칭이동을 한다면 그 평행이동한 곳을 축으로 두고 대칭이동시키면 된다는 것이다. 다만 헷갈리기 때문에 대칭이동 후 평행이동으로만 기억하는 게 좋다고 생각한다.
4. Interactive demo로 이해하기
위 링크에서 쉽게 이해할 수 있는 demo가 있으니 이를 살펴봐도 좋다.
또는 아래에서 바로 Play할 수 있다.ㅅ

