Convolution 연산 이해하기 for CNN

mincheol2·2022년 1월 21일
1

AI_math

목록 보기
5/9

이 글은 부스트캠프 AI Tech 3기 강의를 듣고 정리한 글입니다.

기존 MLP와 비교

기존 MLP에서의 결과값 연산

  • 기본적인 다층신경망(MLP)는 각 뉴런들이 선형모델과 활성함수로 fully-connected된 구조
  • hih_i 에 대응하는 가중치 행 WiW_i 가 필요한데
    * 이때 i가 바뀌면서 사용되는 가중치도 바뀌게 된다.

Convolution을 이용한 연산

  • Convolution연산은 커널(kernal)을 입력벡터 상에서 움직여 가면서 선형 모델과 함성함수가 적용되는 구조
  • 모든 i에 대해 적용되는 커널은 VV로 같고 커널의 사이즈만큼 x상에서 이동하면서 적용
    * 이때 Parameter size를 줄여주기 떄문에 연산량이 줄어든다
  • 커널은 고정된 형태로 유지된다는 것을 기억하자

Convolution 수식

  • convolution 연산의 수학적 의미는 신호(signal)을 커널을 이용해 국소적으로 증폭or감소 시켜 정보를 추출하거나 필터링 하는 것을 의미한다.

  • CNN에서 사용하는 Convolution은 관용적 표현이고 사실 Cross-Correlation이라 부른다.
    - Cross-Correlation은 신호처리 분야에서 한 신호가 다른 신호와 얼마나 닮았는지 정량화 하는데 사용한다고 한다.

  • 커널은 정의역내에서 움직여도 변하지 않고 주어진 신호에 국소적으로 적용
    • 파란색이 신호
    • 빨간색은 신호
    • 검은색이 결과

다양한 차원에서의 Convolution

Convolution연산은 1차원 뿐 아니라 다양한 차원에서 계산 가능한데
데이터의 성격에 따라 사용하는 커널이 달라진다
이때 커널로 정의 되는 ff 는 이동하여도 값이 바뀌지 않는다는 것이 포인트다

2차원 이상의 Convolution 연산

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

  • 출력의 크기를 구하는 방법은 다음과 같다.



  • 채널이 여러개인 2차원 입력의 경우 2차원 Convolution을 채널 개수만큼 적용
    • 3차원부터는 행렬이 아닌 텐서로 부른다
  • 이때 커널의 채널 수 == 입력의 채널수 이어야 함
  • 각 채널은 2D-Conv 연산 후에 다 더해주기 때문에 결과값의 채널수는 1이 됨

  • 단 커널을 OCO_C 개 사용하면 출력도 텐서가 된다.

Convolution 연산의 역전파

그림으로 이해하면 쉽다

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


각 커널에 들어오는 모든 그레디언트를 더하면 결국 Convolution 연산과 같음을 볼 수 있다.

profile
옹오옹오오오옹ㅇㅇ

0개의 댓글