사실 CNN의 기본적인 convolution 연산에는 문제가 존재한다.
- 파라미터 수와 계산량이 많다. 3차원 공간에서 한꺼번에 가중 합산을 하기 때문에 필터도 크고 계산량도 많다.
- 죽은 채널(Dead channel)이 발생해도 알기 어렵다. 채널이 죽으면 의미 있는 특징이 생성되지 않고 출력에 대한 영향이 사라진다.
- 여러 채널에 대해 한꺼번에 연산하므로 공간 특징과 채널 특징이 구분되지 않는다. 특히 채널 간 상관관계가 낮은 채널은 잡음과 같이 작용하여 학습 속도를 저하시킨다.
이러한 문제를 해결하기 위해 어떤 발전을 해왔는지 살펴보자.
팽창 콘벌루션
뉴런의 수용 영역을 넓힐 때 생기는 문제점을 해결하기 위해 고안됨 방법이다.
문제점
필터의 크기를 키우거나 신경망의 깊이를 늘리거나, subsampling 계층을 추가하면 되지만 이러한 방법에 생기는 문제점들이다.
- 필터의 크기나 신경망의 깊이를 늘리면 파라미터 수와 계산량이 많이 진다.
- subsampling 계층을 추가하면 이미지의 공간 특징이 손실되기 때문에 segmentation과 같이 공간 특징을 활용하는 모델에는 성능 저하를 일으킬 수 있다.
아이디어
convolution 필터의 수용 픽셀 간격을 띄워서 필터를 넓게 만들어 수용 영역을 넓히는 방법이다. 이러한 종류의 필터를 팽창 콘벌루션 필터(dilated convolution filter)라고 한다.
팽창 콘벌루션을 사용하면 공간 특징을 유지할 수 있지만 activation map의 크기는 줄어들지 않기 때문에 메모리 사용량이 증가한다는 단점이 있다.
점별 콘벌루션
점별 콘벌루션(pointwise convolution)은 가로x세로 크기가 1x1인 콘벌루션 필터를 사용하므로 1x1 콘벌루션이라고 부르기도 한다.
픽셀별로 채널에 대해서만 콘벌루션하기 때문에 activation map의 가로 x 세로 크기는 변하지 않고 채널 수만 달라진다.
점별 콘벌루션을 사용하면 채널 특징을 학습할 수 있으며 죽은 채널의 영향을 줄일 수 있다. 또한 채널 수를 줄이거나 늘릴 수 있어서 콘벌루션 계산량을 조절할 때 사용한다.
inception, ResNet, Mobile Net, SqueezeNet 과 같은 모델에서 사용한다.
그룹 콘벌루션
그룹 콘벌루션(grouped convolution)은 채널을 여러 그룹으로 나눠서 콘벌루션하는 방식이다. 표준 콘벌루션보다 파라미터와 계산이 절약되며, 채널 간에 상관관계를 갖는 구조를 학습할 수 있다.
2012년 AlexNet에서 2개의 GPU로 모델을 병렬 처리하기 위해 처음으로 제안되었으며 최신 모델 중에는 ResNet에서 사용한다
표준 콘벌루션의 경우 인접한 두 계층의 콘벌루션 필터 간에 상관관계가 잘 생기지 않지만, 그룹 콘벌루션은 인접한 두 계층의 필터 그룹 간에 높은 상관관계가 있으며 구조적인 학습을 할 수 있다. 따라서 상관관계가 낮은 채널 간에는 연결되어 있지 않으므로 파라미터 수가 줄어들고 과적합이 방지되는 정규화 효과가 생긴다.
깊이별 콘벌루션
표준 콘벌루션의 경우 여러 채널에 대해 한꺼번에 콘벌루견 연산을 하게 되므로 채널별로 공간 특징을 학습할 수 없다. 깊이별 콘벌루션(depthwise convolution)은 각 채널의 공간 특징을 학습할 수 있도록 채널별로 콘벌루션 연산을 수행하고 그 결과를 다시 결합한다.
깊이별 콘벌루션은 입력과 출력의 채널 수가 동일하며 표준 콘벌루션보다 파라미터와 계산이 절약된다. 그룹 콘벌루션의 그룹별 채널 수가 1개면 깊이별 콘벌루션과 같다 . 즉 깊이별 콘벌루션은 그룹 콘벌루션의 특수한 경우이다.
깊이별 분리 콘벌루션
깊이별 분리 콘벌루션(depthwise seperable convolution)은 깊이별 콘벌루션과 점별 콘벌루션을 결합한 방식이다. 공간 특징과 채널 특징을 별로로 학습하여 표준 콘벌루션보다 8~9배 정도 계산량이 줄어든다.
깊이별 분리 콘벌루션은 MobileNet에서 사용한다.
셔플 그룹 콘벌루션
그룹 콘벌루션은 같은 채널 그룹 안에서만 정보가 흐르고 그룹 간에 서로 정보를 교환하지 않지만 채널 간에 정보를 교환하면 표현이 강화될 수 있다. 이런 아이디어를 시작으로 만들진 것이 셔플 그룹 콘벌루션(shuffled grouped convolution)이다.
셔플 그룹 콘벌루션은 주기적으로 그룹 간에 채널을 섞어서 정보가 교환되도록 만든 그룹 콘벌루션 방식이다.
공간 분리 콘벌루션
공간 분리 콘벌루션(spatially separable convolution)은 정사각형 콘벌루션 필터를 가로 방향 필터와 세로 방향 필터로 인수분해한 방법이다.
예를 들어 3x3 콘벌루션 필터가 있다면 1x3 필터와 3x1 필터로 인수분해한다. 이 방식은 inception V3, V4에서 사용한다.
이 방법은 계산량은 낮아지지만 모든 콘벌루션을 인수분해 할 수는 없기에 최적해가 아닌 준최적해를 찾을 수 있다.
'Vision' 카테고리의 다른 글
CLIP 모델 활용 및 학습 (0) | 2023.12.12 |
---|---|
[CNN] 업샘플링 Upsampling (0) | 2023.01.27 |
[CNN] CNN의 성질 (0) | 2023.01.26 |
[CNN] 서브샘플링 Subsampling (0) | 2023.01.25 |
[CNN] CNN의 구조 (0) | 2023.01.25 |