[ Math ] Convolution(합성곱)의 원리와 목적
[ Math ] Convolution(합성곱)의 원리와 목적
Convolution
Convolution (합성곱) 많이들 들어 보셨을 겁니다.
의미적으로는 두 함수를 서로 곱해서 합한다는 것이지요.
합성곱을 공부하셨다면 아래의 질문을 답하실 수 있으신가요?
- 두 함수를 어떻게 곱해서 합하나요?
- 왜 합성곱을 사용하나요? 어떤 역할을 하나요?
하나씩 알아가 봅시다.
두 함수를 어떻게 곱해서 합하나요?
두 연속함수
이해하셨나요?
먼저, 합성곱을 위해서는 두 함수중 하나를 반전 (reverse)시켜야 합니다.
위의 식을 보면 연속함수
즉 함수
다음으로, 반전시킨 함수를 전이 (shift) 시켜야 합니다.
마찬가지로 함수
마지막으로 이동시킨 함수
이때 변수 타우(
어떨때는 두 함수가 겹치게 되고, 또 어떨때는 겹치는게 없어서 합쳐도 0이 되기도 합니다.
자 이제 대략적인 개념은 이해했으니 그림을 보며 위의 3가지 순서를 시뮬레이션 해보세요.
하나의 함수(
좌우측으로 옮기며 두 함수를 곱해서 적분한다.
적분을

참고로 이산함수 합성곱은 적분(integral)이 아닌 단순 합(summation)으로 표현하면됩니다.
아래 유투버분이 잘 정리해주셔서 구체적인 식이 궁금하시다면 보시는걸 추천드려요
https://www.youtube.com/watch?v=HLYxnTV1N5k&t=1099s
왜 합성곱을 사용하나요?
가장 중요하지만 공부를 하다보면 놓치기 쉬운게 왜? WHY? 인 것 같아요.
공식에만 집중하다 보면 정작 왜 그걸 사용하는지는 잊혀지거든요..
각설하고, 먼저 합성곱은 어디에 사용할까요.
제가 생각해봤을때 행렬의 합성곱(딥러닝), 신호의 필터(샘플링), 라플라스변환, 푸리에변환 등에서 사용되는 것 같습니다.
합성곱 식을 살펴보면 두 함수
일반적으로 사용될때 함수
이때 함수
이 두 함수를 합성곱 하면? 주어진 신호, 행렬, 이미지를 우리가 원하는 함수로 만들어낼 수 있게 됩니다.
즉, 함수
이러한 이유로 합성곱은 다양한 분야에서 활발하게 활용 되는 것이지요.
한가지 예를들어보면, 딥러닝에서 유명한 CNN(Convolutional Neural Network)가 있습니다.
조그만 필터로 이미지를 좌우상하 convolution을 하면서 그 부분의 특징값들을 뽑아내게 됩니다.
입력에 가까울 수록 가장자리(edge), 곡선(curve)과 같은 저수준(low level) 특징을 학습합니다. 출력에 가까워 질 수록 질감(texture), 물체 일부분(object parts)과 같은 고수준(high level) 특징을 인식합니다.
아래 블로그에 정리가 잘 되어 있습니다. 더 궁금하신분은 찾아 보시길..
https://lynnshin.tistory.com/7
[5강] Convolutional Neural Networks
이번에는 Convolutional Layer에 대해 배울 것이다. 먼저 CNN의 역사를 알아보자. <간단한 역사> 1957년 Frank Rosenblatt가 Mark I Perceptron machine 을 개발했다. 이 기계는 perceptron이라고 불리는 알고리즘..
lynnshin.tistory.com
Time domain에서의 합성곱을 잘 설명해놓은 동영상입니다.
다음글
2021.08.04 - [AI/Math] - 푸리에 변환과 합성곱의 관계(Convolution Theorem)
푸리에 변환과 합성곱의 관계(Convolution Theorem)
Convolution(합성곱)의 원리와 목적 Convolution Convolution (합성곱) 많이들 들어 보셨을 겁니다. 의미적으로는 두 함수를 서로 곱해서 합한다는 것이지요. 합성곱을 공부하셨다면 아래의 질문을 답하실
supermemi.tistory.com