일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 데이터 전처리
- NVL
- nvl2
- SQL
- 오차 행렬
- 빠르게 실패하기
- LAG
- 데이터 프로젝트
- five lines challenge
- DecisionTree
- 정밀도
- sorted
- NULLIF
- ifnull
- Normalization
- 평가 지표
- 비지도학습
- beautifulsoup
- 재현율
- 감정은 습관이다
- layer normalization
- Batch Normalization
- 결정트리
- CASE WHEN
- 웹서비스 기획
- 데이터 분석
- 백엔드
- recall
- 강화학습
- 지도학습
- Today
- Total
Day to_day
1 x 1 convolution이란? 직관적으로 이해해보기 본문
들어가며
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
'Deep Learning' 카테고리의 다른 글
CBOW & Skip gram 개념 완벽 이해하기!! (0) | 2024.03.26 |
---|---|
Batch Normalization, Layer Normalization 비교 (5) | 2024.03.16 |
Global Average Pooling이 뭐길래? (3) | 2024.02.24 |
Knowledge Distillation 이해하기 (0) | 2024.02.03 |
Cross Entropy 개념 / KL divergence 정리 (추가) (1) | 2024.01.02 |