본문 바로가기
Data Science/Deep Learning

1*1 합성곱층 (Convolution layer) 원리 및 목적 설명

by Queen2 2022. 12. 22.
728x90
반응형

😮 등장 배경

일반적으로 신경망이 깊어 질수록 풀링을 통해 레이어의 층 면적은(가로,세로) 줄어들더라도, 층의 깊이(피처맵의 수)는 늘어나게 됩니다. (VGG16그림 참조) 이때 5*5, 7*7같은 큰 필터까지 사용하게 되면 연산해야 하는 파라미터의 수를 급격히 증가하게 되고, 이는 곧 "비싼연산 비용 " 라는 문제를 발생시켰습니다.

*CNN에서 파라미터 수 계산식: (filter.width*filter.height*이전 레이어층 수 +1)*필터의 수

 

VGG16 구조 (src: Researchgate)

(각 w*h*c 수식의 3번째값을 따라보다보면 64->128->256->512 이런식으로 깊이가 늘어나는 것을 볼 수 있습니다)

 

그래서 어떻게 하면 CNN의 층이 깊이 구현하면서 Computational cost를 획기적으로 줄일 수 있을까?라는 질문에서 나온게 바로 1*1 합성곱층입니다.


🙄  1*1 Conv 의 목적 => 채널 수 축소를 통한 연산량 감소

자료를 보다보면 1*1 Conv을 여러가지 명칭으로 부르고 있음을 알 수 있는데요.

  • 1*1 합성곱층은 channel-wise pooling 을 제공한다
  • feature map pooling
  • projection layer

명칭은 조금씩 다르지만 강조하는 바는 같습니다. 피처맵의 차원(채널 수)을 효과적으로 줄여준다는 것입니다.

=> channel 의 수를 조절한다 = 차원의 수 조절 (dimensionality reduction)

 

 

 1*1 Conv 의 원리

처음 이 개념을 접했던 Andrew Ng 교수님의 강의 자료를 가지고 왔는데요. 우선 처음에는 단순히 1*1크기의 필터를 적용한다고 생각해보겠습니다. 그러면 결과값으로 1*1필터에 있는 2라는 상수값을 기존 레이어에 곱한 값이 도출되겠죠?

 

여기서 우리가 기존에 적용한 1*1*1 형태의 필터를 깊게 뒤로 쭉 빼서 1*1*n 의 크기를 가진 필터로 생각해보겠습니다. 그러면 결과값은 어떻게 변할까요? 6*6의 면적을 1*1면적이 픽셀간격으로 돌기 때문에 가로세로 6*6는 변하지 않지만 뒤에 n의 크기가 몇이냐에 따라 결과값은 6*6*n의 피처맵이 도출되게 됩니다.

src: Andrew Ng (deeplearning.ai)

어떻게 보면 연구자가 n 의 값을 무엇으로 선정하느냐에 따라서 얼마든지 결과값의 깊이를 조절할 수 있기 때문에

매우 유용하면서 경제적인 방법으로 볼 수 있을 것 같습니다.

 

 

**오류나 수정이 필요한 사항이 있으면 알려주시길 바랍니당

 

728x90
반응형

댓글