Day to_day

1 x 1 convolution이란? 직관적으로 이해해보기 본문

Deep Learning

1 x 1 convolution이란? 직관적으로 이해해보기

m_inglet 2024. 2. 25. 18:17
728x90
반응형

들어가며

1x1 convolution의 역할에 대해 이해해 보고, 그 특징을 정리하고자 한다.

 

 

직관적으로 1x1 Convolution 이해해보기

1x1 Convolution은 직관적으로 1x1 크기를 가지는 Convolution Filter를 사용한 Convolution Layer이다. 

 

1x1 convolution은 입력되는 feature map의 채널 수에 맞춰 생성된다.

위의 그림과 같이, 하나의 feature는 같은 weight를 공유하니까 결국 하나의 feature에 하나의 weight를 모두 곱하는 것이라고 보면 된다.

그것을 식으로 표현하면 F1 * weight_1 + F2 * weight_2 + F3 * weight_3로 둘 수 있고, 결국엔 weighted sum으로 표현 가능 한 것이다.

이때 feature map의 output 사이즈는 C x input size x input size로 채널만 변화가 있고, feature의 size는 변하지 않는다.

 

그렇다면 feature map을 weighted sum 한다는 것은 어떤 의미일까?

→ feature가 여러 개가 있을 때 어떤 feature를 더 중요하게 볼 것인지를 고르기 위해서 weight를 학습시켜서 알아내라는 것이다!

 

1x1 Convolution의 특징

1x1 Convolution은 크게 3가지 특징이 있다. 

 

1. 채널 수 조절
feature map의 차원을 축소시킨다. (feature map의 채널을 줄인다)
ResNet에서는 1x1 convolution을 이용해서 채널 수를 조절해서 bottle neck 구조를 만든다. 이렇게 사용하는 이유는 1x1 convolution layer가 파라미터 수를 줄여 효율적으로 모델을 구성하면서도 만족할 만한 성능을 얻을 수 있기 때문이다.


아래의 그림은 ResNet 구조에서 bottle neck을 그린 것이다.

 

256의 채널에서 1x1 conv를 이용해 채널 수를 64로 줄이고, 다시 1x1 conv를 이용해서 256으로 채널 수를 늘리는 것을 볼 수 있다. 왼쪽의 숫자는 컨볼루션 필터의 개수 x (채널 x 행 x 열)로 나타낸 것이다.

 

2. 비선형성 적용

1x1 convolution을 적용하면서 입력과 가중치 간의 내적 연산을 수행하고 그 결과에 활성화 함수를 적용하기 때문에 비선형적인 변환을 추가하여 모델의 복잡한 함수를 학습시키는데 도움이 된다고 할 수 있다

 

3. 메모리 효율

만약 128 채널을 64로 변할 때 3x3을 바로 통과하는 것1x1 convolution을 추가해 128 → 32 → 64 채널로 조절하여 3x3 kernel을 통과시키는 것을 예시로 들어 보겠다.

첫 번째 경우의 컨볼루션 필터의 파라미터 수는 64 x 128 x 3 x 3가 될 것이다. (64개의 128x3x3 사이즈 필터)

두 번째 경우는 컨볼루션 필터의 파라미터 수는 32 x 128 x 1 x 1 + 64 x 32 x 3 x 3가 될 것이다.

 

결과적으로 두 개의 파라미터 수를 비교해 보면, 73,728 vs 22,528이 되어 1x1 convolution으로 채널 수를 한번 줄이고 3x3를 적용하는 것이 연산량에 더욱 효과적임을 알 수 있다.

 

 

Reference

https://hwiyong.tistory.com/45

728x90
반응형