합성곱 (Convolution)

수학
한 줄 정의: 한 함수를 뒤집어 미끄러뜨리면서 다른 함수와 겹치는 부분을 계속 곱하고 더해, 두 함수가 서로에게 미치는 영향을 하나의 새 함수로 나타내는 연산입니다.

쉽게 풀면

스피커에서 소리를 내면 방 안 벽에 부딪혀 울림(잔향)이 남는 것을 떠올려 보세요. 원래 소리(입력 신호)와 그 방이 가진 울림의 특성(응답 함수)이 서로 겹쳐지면서 우리가 실제로 듣는 소리가 만들어집니다. 합성곱은 이렇게 "하나의 신호가 다른 신호(또는 시스템의 반응 특성)를 만나 어떻게 뒤섞이고 퍼지는지"를 수학적으로 계산하는 연산입니다. 한 함수를 좌우로 뒤집어 조금씩 이동시키면서, 겹치는 두 함수 값을 곱한 뒤 전부 더하는 과정을 반복해 새로운 함수를 얻습니다.

왜 중요한가

합성곱은 신호처리, 이미지 처리, 딥러닝, 확률론 등 매우 넓은 분야에서 반복적으로 등장하는 기본 연산입니다. 두 함수(또는 신호)가 서로 영향을 주고받는 과정을 일관된 수학적 틀로 표현할 수 있어, 필터링·특징 추출·시스템 응답 분석 같은 서로 다른 문제를 같은 언어로 다룰 수 있게 해줍니다. 특히 합성곱 신경망의 핵심 연산이라는 점에서, 컴퓨터 비전과 음성 인식을 비롯한 최근 머신러닝 연구 전반의 기초가 됩니다.

논문에서는 이렇게 쓰입니다

"입력 신호와 필터 커널의 합성곱(convolution)을 통해 노이즈를 제거하고 신호의 주요 특징을 강조하였다."

이 문장은 신호처리나 이미지 처리 논문에서 흔히 등장합니다. 원본 신호에 특정 패턴(필터)을 합성곱 연산으로 적용하면 노이즈가 줄어들거나 경계선 같은 특정 특징이 도드라지게 되는데, 이 원리를 설명할 때 쓰입니다.

"두 확률변수의 합의 분포는 각 확률변수 분포의 합성곱으로 표현됨을 이용하여, 오차 누적 모델의 해석적 형태를 유도하였다."

확률론과 통계학에서는 서로 독립인 두 확률변수를 더했을 때의 새로운 분포를 구하는 데 합성곱이 쓰인다는 뜻입니다. 여러 단계에서 발생하는 오차나 잡음이 누적되는 과정을 수학적으로 다룰 때 자주 활용됩니다.

"합성곱 계층의 커널 크기와 스트라이드를 조정하여 수용 영역(receptive field)을 넓히면서도 파라미터 수를 억제하였다."

딥러닝 논문에서는 합성곱 연산을 신경망의 한 층으로 사용하여, 이미지의 지역적 패턴을 학습하는 필터(커널)를 데이터로부터 자동으로 학습시킨다는 의미로 쓰입니다.

조금 더 깊게 보면

실제 계산에서 합성곱은 시간(공간) 영역에서 직접 곱하고 더하는 대신, 고속 푸리에 변환(FFT)을 이용해 주파수 영역의 곱셈으로 바꿔 계산하는 경우가 많은데, 이는 합성곱 정리에 근거한 방식입니다. 딥러닝의 합성곱 신경망에서는 엄밀한 수학적 합성곱 대신 커널을 뒤집지 않고 그대로 슬라이딩시키는 교차상관(cross-correlation) 연산을 흔히 사용하지만, 관례적으로 이 역시 합성곱이라 부릅니다. 또한 이산 신호를 다룰 때는 순환 합성곱(circular convolution)과 선형 합성곱을 구분해야 하며, 어떤 경계 처리(패딩) 방식을 쓰는지에 따라 결과가 달라진다는 점도 논문을 읽을 때 유의할 부분입니다.

주의할 점

합성곱은 푸리에 변환과 깊이 연결되어 있습니다. 시간(또는 공간) 영역에서의 합성곱은 푸리에 변환을 거치면 단순한 곱셈으로 바뀌는데, 이 성질(합성곱 정리) 때문에 실제 계산에서는 직접 합성곱을 계산하기보다 푸리에 변환을 이용해 더 빠르게 처리하는 경우가 많습니다.

관련 용어