Altifigence Academy

2 / 24 · 개념

합성곱과 교차상관

첫 창 [1,2;4,5]와 커널 [1,0;0,-1]의 교차상관 결과와 커널을 뒤집은 결과는 무엇인가요?

커널 방향을 먼저 확인하기

신경망에서 합성곱이라고 부르는 연산은 흔히 커널을 뒤집지 않는 교차상관입니다. 수학적 합성곱의 정의에서는 커널 방향을 뒤집지만 이 과정은 저장된 가중치를 그대로 입력 창과 대응시킵니다. 이름보다 인덱스 식이 정확한 계약입니다. 커널이 대칭이면 뒤집은 결과도 같아 오류가 숨겨집니다. 따라서 첫 검증에는 방향이 다른 비대칭 가중치를 사용합니다.

패딩과 dilation이 없는 한 채널 연산은 다음과 같습니다. h,w는 출력 위치이고 r,s는 커널 안의 위치입니다. 이 식에는 커널 역순 접근이 없습니다.

y[h,w]=b+∑r=0R−1∑s=0S−1x[h+r,w+s]k[r,s]y[h,w]=b+\sum_{r=0}^{R-1}\sum_{s=0}^{S-1}x[h+r,w+s]k[r,s]

손으로 비교하는 예제

입력 창을 첫 줄 [1,2], 둘째 줄 [4,5]로 놓고 커널을 첫 줄 [1,2], 둘째 줄 [3,4]로 놓습니다. 교차상관 결과는 1×1+2×2+4×3+5×4=37입니다. 커널을 양 축에서 뒤집어 [4,3;2,1]로 쓰면 1×4+2×3+4×2+5×1=23입니다. 바이어스를 2로 정했다면 각각 39와 25가 됩니다. 어느 하나를 정답이라고 고르기 전에 연산의 정의를 확인해야 합니다.

입력을 [1,2,3;4,5,6;7,8,9]로 확장해 원래 2×2 커널을 적용하면 출력은 [37,47;67,77]입니다. 오른쪽으로 한 칸 옮길 때 새 창은 [2,3;5,6]이고 2+6+15+24=47입니다. 커널을 옮기는 것이지 가중치의 순서를 바꾸는 것이 아닙니다. 음수 가중치도 같은 인덱스 규칙으로 다룹니다. 예를 들어 [1,0,-1]은 왼쪽 값에서 오른쪽 값을 빼는 방향을 정합니다.

여러 채널로 확장하기

입력 채널마다 공간 창을 곱한 뒤 같은 출력 채널의 누적기에 더합니다. 출력 채널마다 다른 커널 묶음과 바이어스를 사용합니다. 채널은 공간 축처럼 옆으로 미끄러지는 축이 아닙니다. 채널 0의 곱과 채널 1의 곱은 같은 출력 원소에 기여합니다. 그룹 합성곱은 이 연결 범위를 나누는 별도 조건이므로 이후 기준 모델에서 그룹 번호를 명시합니다.

검증 로그에는 입력 창, 사용한 가중치 순서, 부분합과 바이어스를 적으세요. 정답 배열만 비교하면 뒤집기와 채널 순서 오류가 서로 보정되어 작은 대칭 예제를 통과할 수 있습니다. 이 과정의 비대칭 예제는 의도적으로 그런 우연을 줄입니다. 연산자의 채널·가중치 모양 계약은 ONNX Conv 공식 문서와 비교할 수 있습니다. 여기의 수치 예제는 그 문서의 예제를 복사한 것이 아니라 손계산을 위해 만든 별도 자료입니다.

직접 생각해 보기

첫 창 [1,2;4,5]와 커널 [1,0;0,-1]의 교차상관 결과와 커널을 뒤집은 결과는 무엇인가요?

해설 보기

교차상관은 1−5=−4입니다. 뒤집은 커널 [−1,0;0,1]은 −1+5=4를 만듭니다. 방향이 바뀌면 부호도 달라지는 검증 예제입니다.

선택은 이 브라우저에만 적용됩니다. 언제든 푸터에서 변경할 수 있습니다.