떼닝 2022. 6. 18. 08:29

Convolution 연산 이해하기

  • Convolution 연산은 Kernel을 입력벡터 상에서 움직여가면서 선형모델과 합성함수가 적용되는 구조
Convolution 연산
  • 고정된 가중치 커널 V를 입력벡터 상에서 움직여가면서 계산 적용
  • 활성화 함수를 제외한 Convolution 연산도 선형변환에 속함
  • kernel이 공통적으로 적용되기 때문에, parameter size 줄일 수 있음
  • Convolution 연산의 수학적인 의미는 신호를 커널을 이용해 국소적으로 증폭 또는 감소시켜서 정보를 추출 또는 필터링하는 것
    • f : 커널 / g : 신호 / z : 커널의 범위 / x - z : 신호의 term
      위가 연속적 공간, 아래가 이산적 공간에서의 Convolution 연산
  • CNN에서 사용하는 연산은 사실 convolution이 아니라 cross-correlation
    • 위의 식에서 -로 되어있는 부분 +로도 변환 가능
  • 커널은 정의역 내에서 움직여도 변하지 않고(translation invariant) 주어진 신호에 국소적(local)으로 적용
그래프로 보는 Convolution 연산
  • 커널(빨간색) 움직여가면서 연산(파란색)에 적용될 때 국소적으로 적용되는 연산(노란색 박스)의 결과가 검은색 그래프
  • http://setosa.io/ev/image-kernels 으로 영상처리에서의 Convolution 확인 가능. 선택하는 kernel의 종류에 따라 이미지가 다르게 보이는 것을 확인할 수 있음

다양한 차원에서의 Convolution

  • 데이터의 성격에 따라 사용하는 커널이 달라짐
차원에 따른 Convolution 연산
  • convolution이 어떤 상황으로 움직이는가 가 기준이 됨
  • 커널이 위치에 따라 바뀌지 않기 때문에, i, j, k가 바뀌어도 커널 f의 값은 바뀌지 않음
    • 1D-conv : 한 변수에 대해 좌우로만, 음성이나 텍스트에서 사용
    • 2D-conv : 두 개의 좌표계에서 동시에 상하좌우로 움직이며, 사진에서 사용
    • 3D-conv : 세 개의 좌표계에서 동시에 상하좌우 + 높이로 움직이며, 영상(사진들, 그리고 시간)에서 사용

2차원 Convolution 연산 이해하기

  • 2D-Conv 연산은 kernel을 입력벡터 상에서 움직여가면서 선형모델과 합성함수가 적용됨
2차원 convolution 연산의 예시
  • i, j는 고정시키고 p, q로 이동시킴
  • 커널과 입력벡터 사이에 성분곱을 수행함으로써 결과 도출
  • 입력 크기를 \((H, W)\), 커널 크기를 \((K_H, K_W)\), 출력 크기를 \((O_H, O_W)\)라 할 때 출력 크기는
2차원 Convolution 연산 식
  • 채널이 여러개인 2차원 입력의 경우, 2차원 Convolution을 채널 개수만큼 적용
  • 채널이 여러개인 경우, 커널의 채널 수와 입력의 채널 수가 같아야
3차원 Convolution 연산 과정

Convolution 연산의 역전파 이해하기

  • Convolution 연산은 커널이 모든 입력데이터에 공통으로 적용되기 때문에 역전파를 계산할 때도 convolution 연산이 나옴
역전파 Convolution 연산. 이산형일 때도 마찬가지
Convolution 연산의 역전파
  • 출력 size : 입력 size - kernel size + 1
  • \(X_3\) -> \((O_1, O_2, O_3)\)에 적용되는 가중치에 따라 gradient vector에 연결되는 가중치 결정
  • 각 kernel에 들어오는 모든 gradient를 더하면 결국 convolution 연산과 같음