CNN

yst3147·2022년 1월 21일
0

공부 내용

  • Convolution 연산
  • 다양한 차원에서 연산방법
  • 2차원 Convolution 연산
  • Convolution 연산의 역전파

Convolution 연산

  • Convolution 연산은 커널(kernel)을 입력벡터 상에서 움직여가면서 선형모델과 합성함수가 적용되는 구조

    • 활성화 함수를 제외한 convolution 연산도 선형변환에 속함

  • 커널은 정의역 내에서 움직여도 변하지 않고(translation invariant) 주어진 신호에 국소적(local)으로 적용

Convolution 연산의 수학적인 의미

  • 신호(signal)을 커널을 이용해 국소적으로 증폭 또는 감소시켜서 정보를 추출 또는 필터링

  • CNN에서 사용하는 연산은 사실 convolution이 아니고 cross-correlation이라고 부름
    • 전체 공간에서는 convolution과 cross-correlation이 똑같이 성립하여 convolution 연산이라고 부름

다양한 차원에서의 Convolution

  • Convolution 연산은 1차원 뿐만 아니라 다양한 차원에서 계산 가능
    • 데이터의 성격에 따라 사용하는 커널이 달라짐
    • 신호의 위치가 바뀌어도 커널의 값은 변하지 않음
  • 1차원
    • 예 : 음성, text

  • 2차원
    • 예 : 흑백 영상

  • 3차원
    • 예 : 칼라 영상

2차원 Convolution 연산

  • 2D-Conv 연산은 커널(kernel)을 입력벡터 상에서 움직여가면서 선형모델과 합성함수가 적용되는 구조

  • 입력 크기를 (H,W)(H, W), 커널 크기 (KH,KW)(K_H, K_W), 출력 크기를 (OH,OW)(O_H, O_W)라 하면 출력 크기는 다음과 같이 계산

    ex) 28×2828\times28 입력, 3×33\times3 커널로 2D-Conv 연산 -> 26×2626\times26 출력

    • OH=HKH+1O_H = H - K_H + 1
    • OW=WKW+1O_W = W - K_W + 1
  • 채널이 여러개인 2차원 입력의 경우 2차원 Convolution을 채널 개수만큼 적용

    • 3차원부터는 행렬이 아닌 텐서라고 부름

    • 채널이 여러개인 경우 커널의 채널 수와 입력의 채널 수가 같아야 함
  • 텐서를 직육면체 블록으로 이해

    • 커널을 OCO_C개 사용하면 출력도 텐서가 됨

Convolution 연산의 역전파

  • Convolution 연산은 커널이 모든 입력데이터에 공통으로 적용되기 때문에 역전파를 계산할 때도 convolution 연산이 나옴

    • 역전파 단계에서 커널을 통해 그레디언트가 전달

    • 커널에는 미분값에 입력값을 곱해서 전달

    • 각 커널에 들어오는 모든 그레디언트를 더하면 결국 convolution 연산과 같음
      • i : 입력값 위치, j : 커널 위치

0개의 댓글

관련 채용 정보