Mathematics for Artificial Intelligence 9강: CNN 첫걸음

2023. 1. 5. 23:15BOOTCAMP/boostcamp AI Tech Pre-Course

Convolution 연산 이해하기

  • 지금까지 배운 다층신경망(MLP)은 각 뉴런들이 선형모델과 활성함수로 모두 연결된 (fully connected) 구조이다. (만일 i가 바뀌면 사용되는 가중치도 바뀐다.)
  • Convolution 연산은 이와 달리 커널(kernel)을 입력벡터 상에서 움직여가면서 선형모델과 합성함수가 적용되는 구조이다. (모든 i에 대해 적용되는 커널은 V로 같고, 커널의 사이즈만큼 x상에서 이동하면서 적용한다. / 활성화 함수를 제외한 Convolution 연산도 선형변환에 속한다.)
  • 커널 사이즈는 고정된 상태이기에 파라미터를 많이 줄일 수 있다.
  • Convolution 연산의 수학적인 의미는 신호(signal)를 커널을 이용해 국소적으로 증폭 또는 감소시켜서 정보를 추출 또는 필터링하는 것이다. 
    • Convolution을 수식으로만 이해하는 것은 매우 어렵다.
    • CNN에서 사용하는 연산은 사실 convolution이 아니고, cross-correlation이라 부른다.
  • 커널은 정의역 내에서 움직여도 변하지 않고(translation invariant) 주어진 신호에 국소적(local)으로 적용한다.

 

영상처리에서 Convolution

  • 여러 커널을 선택하면서 노이즈, 블러 등의 효과로 영상처리가 가능하다.

 

다양한 차원에서의 Convolution

  • Convolution 연산은 1차원뿐만 아니라 다양한 차원에서 계산 가능하다.
    • 1D-conv, 2D-conv, 3D-conv 데이터의 성격에 따라 사용하는 커널이 달라진다.

 

2차원 Convolution 연산 이해하기

  • 2D-Conv 연산은 이와 달리 커널(kernel)을 입력벡터 상에서 움직여가면서 선형모델과 합성함수가 적용되는 구조이다.
  • 입력 크기를 (H, W), 커널 크기를 (KH, KW), 출력 크기를 (OH, OW)라 하면 출력 크기는 다음과 같이 계산한다. 
  •   OH = H - KH + 1   OW = W - KW + 1
  • 가령 28X28 입력을 3X3 커널로 2D-Conv 연산을 하면 26X26이 된다.
  • 채널이 여러 개인 2차원 입력의 경우 2차원 Convolution을 채널 개수만큼 적용한다고 생각하면 된다.

 

커널 * 3차원 입력

- 3차원부터는 행렬이 아닌 텐서라 부른다.
- 채널이 여러개인 경우 커널의 채널 수와 입력의 채널수가 같아야 한다.

커널 * 2차원 입력 + 커널 * 2차원 입력 + 커널 * 2차원 입력
  • 채널이 여러개인 2차원 입력의 경우 2차원 Convolution을 채널 개수만큼 적용한다고 생각하면 된다. 텐서를 직육면체 블록으로 이해하면 좀 더 이해하기 쉽다.
    • 커널을 Oc개 사용하면 출력도 텐서가 된다.
  • 커널(KH, KW, C) * 3차원 입력(H, W, C) -> 출력(OH, OW, l)

 

Convolution 연산의 역전파 이해하기

  • Convolution 연산은 커널이 모든 입력데이터에 공통으로 적용되기 때문에 역전파를 계산할 때도 convolution 연산이 나오게 된다.
    • Discrete일 때도 마찬가지로 성립한다.
    • 역전파 단계에서 다시 커널을 통해 그레디언트가 전달된다.
    • 커널에는 델타에 입력값 x3을 곱해서 전달한다.