Convolution 연산
Convolution 연산은 커널(kernel)을 입력벡터 상에서 움직여가면서 선형모델과 합성함수가 적용되는 구조이다.
Convolution 연산의 수학적인 의미는 신호(signal)를 커널을 이용해 국소적으로 증폭 또는 감소시켜 정보를 추출 또는 필터링하는 것이다.
- CNN에서 사용하는 연산은 실제로 cross-correlation이라 부른다.
- 범용적으로 Convolution이라고 불렀던 이유는 전체 공간에서는 신호 텀의 연산이 +인지, -인지 중요하지 않기 때문에 같은 것으로 성립한다.
커널은 정의역 내에서 움직여도 변하지 않고(translation invariant) 주어진 신호에 국소적(local)으로 적용된다.
Convolution 연산은 1차원뿐만 아니라 다양한 차원에서 계산 가능하다.
2D Conv 연산은 커널을 입력벡터 상에서 움직여가면서 선형모델과 합성함수가 적용되는 구조이다.
- 커널 연산은 입력 데이터와 행렬연산을 하는 형태가 아니라 element-wise 성분 곱 연산을 진행한 뒤 더한 값을 출력한다.
- 입력 크기가 (H,W)이고 커널 크기가 (KH,KW)이라면 출력 크기 (OH,OW)=(H−KH+1,W−KW+1)이다.
- 채널이 여러개인 2차원 입력의 경우 2차원 Convolution을 채널 개수만큼 적용한다.
- 입력데이터가 1D일 경우 Vector, 2D일 경우 Matrix, 3D 이상일 경우 Tensor라 부른다.
- 커널의 채널 크긱와 입력 데이터의 채널 크기가 같다면 Convolution 연산을 진행한 출력(Output)의 채널 크기는 1이 된다.
- 커널의 개수를 조절하여 출력의 채널 크기를 다양하게 조절할 수 있다.
- Convolution 연산은 커널이 모든 입력데이터에 공통으로 적용되기 때문에 역전파를 계산할 때도 Convolution 연산이 나오게 된다.