포스트

Squeeze-and-Excitation Networks: 채널 어텐션으로 CNN 성능 끌어올리기

목차

  1. 개요
  2. 배경과 관련 연구
  3. 방법론
  4. 주요 결과
  5. Ablation Study
  6. SE 블록의 역할 분석
  7. 한계와 주의사항
  8. 결론
  9. Reference

개요

Squeeze-and-Excitation Networks는 Jie Hu, Li Shen, Samuel Albanie, Gang Sun, Enhua Wu가 발표한 논문이다. 합성곱 신경망(CNN)의 핵심 연산자인 컨볼루션은 각 레이어의 지역 수용 영역(local receptive field) 안에서 공간 정보와 채널 정보를 함께 융합해 특징을 만든다. 기존 연구 대부분은 이 관계 중 공간(spatial) 성분을 강화하는 데 집중해 왔다.

이 논문은 대신 채널 간의 관계에 주목한다. 채널 간 상호 의존성을 명시적으로 모델링하여 채널별 특징 응답을 적응적으로 재보정하는 아키텍처 단위인 Squeeze-and-Excitation(SE) 블록을 제안한다. SE 블록은 여러 개를 쌓아 SENet 아키텍처를 구성할 수 있고, 기존 최신 CNN에 드롭인 방식으로 삽입해도 매우 작은 연산 비용 증가만으로 유의미한 성능 향상을 얻는다.

SENet은 ILSVRC 2017 분류 부문 제출의 기반이 되어 1위를 차지했다. 테스트셋 top-5 error를 2.251%까지 낮추었으며, 이는 전년도 우승 기록인 2.991% 대비 약 25%의 상대적 개선이다. 모델과 코드는 hujie-frank/SENet 저장소에 공개되어 있다.

배경과 관련 연구

기존 연구의 초점은 공간 정보였다

VGGNet과 Inception 계열은 네트워크의 깊이를 늘리는 것이 표현력 향상으로 이어진다는 점을 보였다. Batch Normalization은 각 레이어 입력 분포를 조절해 깊은 네트워크의 학습을 안정화하고 최적화 표면을 매끄럽게 만들었다. ResNet은 identity 기반 스킵 연결로 훨씬 깊고 강력한 네트워크의 학습이 가능함을 입증했고, Highway network는 숏컷 연결의 정보 흐름을 조절하는 게이팅 메커니즘을 도입했다.

한편 네트워크 내부 연산 요소의 함수 형태를 개선하려는 흐름도 있었다. 그룹 컨볼루션은 학습된 변환의 cardinality를 늘리는 방식으로 널리 쓰였고, 멀티 브랜치 컨볼루션은 그룹 연산자의 자연스러운 확장으로 볼 수 있다. 기존 연구에서 채널 간 상관관계는 주로 공간 구조와 독립적으로, 또는 1x1 컨볼루션을 포함한 표준 필터를 통해 결합된 형태의 새로운 특징 조합으로 매핑되었다.

이런 연구 대부분은 모델과 연산 복잡도를 줄이는 것을 목표로 했고, 채널 관계를 지역 수용 영역을 갖는 인스턴스 비의존적(instance-agnostic) 함수의 조합으로 표현할 수 있다는 가정을 반영했다. 반면 이 논문은 전역 정보를 사용해 채널 간의 동적이고 비선형적인 의존성을 명시적으로 모델링하는 메커니즘을 제공하면 학습이 쉬워지고 표현력이 크게 향상된다고 주장한다.

어텐션과 게이팅 메커니즘

어텐션은 신호에서 가장 정보량이 많은 부분으로 가용 연산 자원의 배분을 편향시키는 수단으로 해석할 수 있다. 시퀀스 학습, 이미지 내 위치 파악과 이해, 이미지 캡셔닝, 독순(lip reading) 등 다양한 과제에서 유용성이 입증되었다. 공간 어텐션과 채널 어텐션을 결합해 사용하는 연구들도 존재한다.

Wang 등은 hourglass 모듈에 기반한 trunk-and-mask 어텐션 메커니즘을 깊은 잔차 네트워크의 중간 단계에 삽입했다. 이와 대조적으로 SE 블록은 채널 간 관계를 연산 효율적으로 모델링해 표현력을 높이는 데 집중하는 경량 게이팅 메커니즘이다.

아키텍처 자동 탐색 관점에서도 SE 블록은 탐색 알고리즘의 원자적 구성 요소로 사용될 수 있으며, 동시기 연구에서 이 용도로 매우 효과적임이 확인되었다.

방법론

SE 블록의 전체 구조

SE 블록은 입력 X를 특징 맵 U로 매핑하는 임의의 변환 Ftr 위에 구축되는 연산 단위다. Ftr을 컨볼루션 연산자로 두고 학습된 필터 커널 집합을 V = [v1, v2, …, vC]로 표기하면 출력은 다음과 같이 쓸 수 있다.

1
u_c = v_c * X = sum_{s=1..C} (v_c^s * x^s)

여기서 *는 컨볼루션, v_c = [v_c^1, v_c^2, ..., v_c^C], X = [x^1, x^2, ..., x^C]이며 u_c는 H x W 크기의 특징 맵이다. v_c^sv_c의 단일 채널을 나타내는 2D 공간 커널로, X의 대응 채널에 작용한다. 표기 단순화를 위해 bias 항은 생략했다.

출력이 모든 채널에 대한 합으로 생성되기 때문에 채널 의존성은 v_c 안에 암묵적으로 내재되지만, 필터가 포착한 지역 공간 상관관계와 뒤엉켜 있다. 즉 컨볼루션이 모델링하는 채널 관계는 (최상위 레이어를 제외하면) 본질적으로 암묵적이고 지역적이다. 저자들은 채널 상호 의존성을 명시적으로 모델링하면 네트워크가 정보량이 큰 특징에 대한 민감도를 높일 수 있고, 이를 후속 변환이 활용할 수 있다고 본다.

따라서 다음 변환으로 넘기기 전에 squeeze와 excitation이라는 두 단계를 거쳐 전역 정보에 접근하고 필터 응답을 재보정한다.

Squeeze: 전역 정보 임베딩

각 학습 필터는 지역 수용 영역에서 동작하므로, 변환 출력 U의 각 유닛은 그 영역 밖의 문맥 정보를 활용할 수 없다. 이 문제를 완화하기 위해 전역 공간 정보를 채널 서술자(channel descriptor)로 압축한다. 구현은 글로벌 평균 풀링(global average pooling)이다.

1
z_c = F_sq(u_c) = (1 / (H * W)) * sum_{i=1..H} sum_{j=1..W} u_c(i, j)

여기서 z는 C 차원 벡터이며, U를 공간 차원 H x W 방향으로 축소해 얻는다. 변환 출력 U는 이미지 전체에 대해 통계적으로 표현력을 갖는 지역 서술자들의 모음으로 해석할 수 있다. 저자들은 가장 단순한 집계 기법인 글로벌 평균 풀링을 선택했으며, 더 정교한 전략도 사용 가능하다고 언급한다.

Excitation: 적응형 재보정

squeeze로 모은 정보를 활용하기 위해 채널 간 의존성을 완전히 포착하는 두 번째 연산을 이어 붙인다. 이 함수는 두 가지 조건을 만족해야 한다. 첫째, 채널 간 비선형 상호작용을 학습할 수 있을 만큼 유연해야 한다. 둘째, one-hot 활성을 강제하지 않고 여러 채널이 동시에 강조될 수 있도록 상호 배타적이지 않은 관계를 학습해야 한다.

이 조건을 충족하기 위해 sigmoid 활성을 사용하는 단순한 게이팅 메커니즘을 채택한다.

1
s = F_ex(z, W) = sigmoid(g(z, W)) = sigmoid(W2 * ReLU(W1 * z))

여기서 W1(C/r) x C 행렬, W2C x (C/r) 행렬이다. 모델 복잡도를 제한하고 일반화를 돕기 위해 비선형성 주위에 두 개의 완전 연결(FC) 레이어로 병목 구조를 만든다. 즉 reduction ratio r을 갖는 차원 축소 레이어, ReLU, 그리고 변환 출력 U의 채널 차원으로 되돌리는 차원 확장 레이어 순이다.

블록의 최종 출력은 활성값 s로 U를 재스케일링해 얻는다.

1
x_tilde_c = F_scale(u_c, s_c) = s_c * u_c

F_scale(u_c, s_c)는 스칼라 s_c와 특징 맵 u_c 사이의 채널별 곱셈을 의미한다. excitation 연산자는 입력에 특화된 서술자 z를 채널 가중치 집합으로 매핑한다. 이 점에서 SE 블록은 본질적으로 입력에 조건부인 동역학을 도입하며, 컨볼루션 필터의 지역 수용 영역에 국한되지 않는 채널 단위 셀프 어텐션 함수로 볼 수 있다.

기존 아키텍처와의 통합

SE 블록은 VGGNet처럼 표준적인 아키텍처에서 각 컨볼루션 뒤의 비선형성 다음에 삽입하는 방식으로 통합할 수 있다. 유연성 덕분에 표준 컨볼루션 이외의 변환에도 직접 적용된다.

Inception 네트워크의 경우 변환 Ftr을 Inception 모듈 전체로 두면 된다. 아키텍처의 모든 Inception 모듈에 이 변경을 적용하면 SE-Inception 네트워크가 된다.

잔차 네트워크에서는 SE 블록의 변환 Ftr을 잔차 모듈의 비항등(non-identity) 브랜치로 둔다. squeeze와 excitation은 모두 identity 브랜치와 합산되기 전에 작용한다. 같은 방식으로 ResNeXt, Inception-ResNet, MobileNet, ShuffleNet과 결합한 변형도 구성할 수 있다.

SE-ResNet-50과 SE-ResNeXt-50(32x4d)의 구체적 구성은 논문 Table 1에 정리되어 있으며, 각 스테이지의 SE 모듈은 두 FC 레이어의 출력 차원을 fc [16, 256], fc [32, 512], fc [64, 1024], fc [128, 2048] 형태로 갖는다.

모델 복잡도와 연산 비용

SE 블록이 실용적이려면 성능 향상과 복잡도 증가 사이에 좋은 트레이드오프를 제공해야 한다. ResNet-50과 SE-ResNet-50 비교가 대표적이다.

ResNet-50은 224 x 224 입력 이미지 한 장의 순전파에 3.86 GFLOPs를 필요로 한다. 각 SE 블록은 squeeze 단계의 글로벌 평균 풀링, excitation 단계의 작은 FC 레이어 두 개, 그리고 저렴한 채널별 스케일링 연산을 추가한다. reduction ratio r을 16으로 설정하면 SE-ResNet-50은 3.87 GFLOPs를 요구하며, 이는 원본 ResNet-50 대비 0.26%의 상대적 증가다.

이 약간의 연산 부담으로 SE-ResNet-50의 정확도는 ResNet-50을 넘어서고, 7.58 GFLOPs를 요구하는 더 깊은 ResNet-101에 근접한다.

실행 시간 측면에서는 미니배치 256 기준 순전파와 역전파 1회에 ResNet-50이 190 ms, SE-ResNet-50이 209 ms 걸린다(NVIDIA Titan X GPU 8장 서버). 임베디드 환경을 고려한 CPU 추론 시간은 224 x 224 입력 기준 ResNet-50이 164 ms, SE-ResNet-50이 167 ms다. 저자들은 글로벌 풀링과 작은 내적 연산이 GPU 라이브러리에서 더 최적화되면 이 오버헤드가 더 줄어들 수 있다고 본다.

추가 파라미터는 게이팅 메커니즘의 두 FC 레이어에서만 발생한다.

1
추가 파라미터 수 = (2 / r) * sum_{s=1..S} (N_s * C_s^2)

여기서 r은 reduction ratio, S는 스테이지 수(같은 공간 해상도의 특징 맵에서 동작하는 블록 집합), C_s는 출력 채널 차원, N_s는 스테이지 s의 반복 블록 수다. FC 레이어에 bias를 사용하는 경우 추가되는 파라미터와 연산 비용은 대체로 무시할 수 있다.

SE-ResNet-50은 ResNet-50의 2500만 파라미터에 250만 개를 추가하며, 이는 약 10% 증가에 해당한다. 실제로 이 파라미터 대부분은 채널 수가 가장 많은 네트워크 마지막 스테이지에서 나온다. 그런데 마지막 스테이지의 SE 블록을 제거해도 ImageNet top-5 error 손실이 0.1% 미만에 그치면서 상대적 파라미터 증가율을 4%까지 낮출 수 있다.

주요 결과

ImageNet 분류

실험은 ImageNet 2012 데이터셋(학습 128만 장, 검증 5만 장, 1000 클래스)에서 수행되었다. 각 베이스라인과 대응 SE 버전은 동일한 최적화 방식으로 학습되었다.

학습 설정은 다음과 같다. 스케일과 종횡비를 이용한 랜덤 크롭으로 224 x 224(Inception-ResNet-v2와 SE-Inception-ResNet-v2는 299 x 299)로 데이터 증강하고 랜덤 수평 뒤집기를 적용한다. 입력 이미지는 RGB 채널 평균 차감으로 정규화한다. 모멘텀 0.9의 동기 SGD, 미니배치 1024, 초기 학습률 0.6, 30 에폭마다 1/10 감소, 총 100 에폭 학습이며 reduction ratio r의 기본값은 16이다. 평가 시에는 짧은 변을 256으로 리사이즈한 뒤 224 x 224 중앙 크롭을 사용한다.

주요 결과는 다음 표와 같다.

모델재구현 top-1 err.재구현 top-5 err.재구현 GFLOPsSENet top-1 err.SENet top-5 err.SENet GFLOPs
ResNet-5024.807.483.8623.296.623.87
ResNet-10123.176.527.5822.386.077.60
ResNet-15222.426.3411.3021.575.7311.32
ResNeXt-5022.115.904.2421.105.494.25
ResNeXt-10121.185.577.9920.705.018.00
VGG-1627.028.8115.4725.227.7015.48
BN-Inception25.387.892.0324.237.142.04
Inception-ResNet-v220.375.2111.7519.804.7911.76

깊이에 따른 효과를 보면 SE 블록은 극히 작은 연산 복잡도 증가만으로 모든 깊이에서 일관되게 성능을 개선한다. SE-ResNet-50은 single-crop top-5 검증 error 6.62%를 달성해 ResNet-50(7.48%)을 0.86% 앞서고, 총 연산량의 절반(3.87 GFLOPs 대 7.58 GFLOPs)만으로 훨씬 깊은 ResNet-101(6.52%)의 성능에 근접한다. 같은 패턴이 더 깊은 구간에서도 반복되어 SE-ResNet-101(6.07%)은 더 깊은 ResNet-152(6.34%)를 0.27% 능가한다.

SE 블록 자체가 깊이를 더하는 것은 사실이지만, 매우 연산 효율적인 방식으로 그렇게 하며 기반 아키텍처의 깊이 확장이 수확 체감에 도달한 지점에서도 좋은 이득을 낸다.

최신 아키텍처와의 결합에서도 결과는 일관된다. SE-ResNeXt-50은 top-5 error 5.49%로 직접 대응되는 ResNeXt-50(5.90%)뿐 아니라, 파라미터와 연산 오버헤드가 거의 두 배인 더 깊은 ResNeXt-101(5.57%)까지 능가한다. SE-Inception-ResNet-v2(4.79%)는 재구현 Inception-ResNet-v2 베이스라인(5.21%)을 0.42% 앞선다.

비잔차 네트워크에서도 효과가 확인된다. VGG-16은 학습 편의를 위해 각 컨볼루션 뒤에 Batch Normalization을 추가한 상태로 학습되었고, SE 버전은 top-1 error를 1.80% 개선했다. 학습 곡선상으로도 SE 블록은 최적화 전 과정에 걸쳐 꾸준한 개선을 보이며, 이 경향은 다양한 베이스라인 아키텍처에서 상당히 일관되게 나타난다.

모바일 아키텍처와 CIFAR

모바일 최적화 네트워크 대표 격인 MobileNet(1.0 MobileNet-224)과 ShuffleNet(1x, g = 3)에서도 실험이 진행되었다. 이 실험에서는 미니배치 256, 다소 완화된 데이터 증강과 정규화를 사용했고, 8 GPU에서 모멘텀 0.9의 SGD와 초기 학습률 0.1로 학습하되 검증 손실이 정체될 때마다 학습률을 1/10로 줄였다. 총 학습은 약 400 에폭이 소요되었다.

모델재구현 top-1 err.재구현 top-5 err.재구현 MFLOPs재구현 ParamsSENet top-1 err.SENet top-5 err.SENet MFLOPsSENet Params
MobileNet28.49.45694.2M25.37.75724.7M
ShuffleNet32.612.51401.8M31.011.11422.4M

MobileNet은 top-1 error가 3.1%, ShuffleNet은 1.6% 개선되었으며 연산 비용 증가는 각각 3 MFLOPs, 2 MFLOPs에 불과하다.

ImageNet 밖으로의 일반화를 확인하기 위해 CIFAR-10과 CIFAR-100에서도 실험이 수행되었다. 두 데이터셋은 32 x 32 RGB 이미지 학습 5만 장, 테스트 1만 장으로 구성되며 각각 10개, 100개 클래스를 갖는다. 학습 시 랜덤 수평 뒤집기, 각 변에 4픽셀 제로 패딩 후 랜덤 32 x 32 크롭, 평균과 표준편차 정규화를 적용했고 하이퍼파라미터는 원 논문 설정을 따랐다.

데이터셋모델원본 errorSENet error
CIFAR-10ResNet-1106.375.21
CIFAR-10ResNet-1645.464.39
CIFAR-10WRN-16-84.273.88
CIFAR-10Shake-Shake 26 2x96d + Cutout2.562.12
CIFAR-100ResNet-11026.8823.85
CIFAR-100ResNet-16424.3321.31
CIFAR-100WRN-16-820.4319.14
CIFAR-100Shake-Even 29 2x4x64d + Cutout15.8515.41

모든 비교에서 SENet이 베이스라인을 앞선다.

Places365 장면 분류

Places365-Challenge 데이터셋은 365개 카테고리에 걸쳐 학습 800만 장, 검증 36,500장으로 구성된다. 장면 이해는 더 복잡한 데이터 연관을 다루고 외형 변화에 강건해야 하므로 모델의 일반화와 추상화 능력을 다른 각도에서 평가한다. 저자들은 강한 베이스라인으로 ResNet-152를 선택하고 모델을 처음부터 학습시켰다.

모델top-1 err.top-5 err.
Places-365-CNN41.0711.48
ResNet-152 (본 논문)41.1511.61
SE-ResNet-15240.3711.01

SE-ResNet-152는 top-5 error 11.01%로 ResNet-152(11.61%)보다 낮고, 기존 state-of-the-art인 Places-365-CNN(11.48%)도 넘어선다.

COCO 객체 검출

객체 검출 일반화는 COCO 데이터셋에서 minival 프로토콜로 평가되었다. 80k 학습셋과 35k val 부분집합의 합집합으로 학습하고 남은 5k val 부분집합에서 평가한다. 가중치는 ImageNet 학습 모델 파라미터로 초기화하고, Faster R-CNN 검출 프레임워크에서 end-to-end ‘2x’ 학습 스케줄을 따랐다. 목적은 검출기의 트렁크 아키텍처(ResNet)를 SE-ResNet으로 교체했을 때의 효과를 격리해 측정하는 것이다.

트렁크 아키텍처AP at IoU 0.5AP
ResNet-5057.938.0
SE-ResNet-5061.040.4
ResNet-10160.139.9
SE-ResNet-10162.741.9

SE-ResNet-50은 COCO 표준 AP 지표에서 ResNet-50 대비 2.4%(상대 6.3% 개선), AP at IoU 0.5에서는 3.1% 앞선다. 더 깊은 ResNet-101에서도 AP 기준 2.0%(상대 5.0%) 개선이 확인된다.

ILSVRC 2017 우승

SENet은 ILSVRC 대회 제출의 기반이었고 1위를 기록했다. 우승 엔트리는 표준적인 multi-scale, multi-crop 융합 전략을 적용한 SENet 소규모 앙상블이었으며 테스트셋 top-5 error 2.251%를 달성했다. 이 제출을 위해 수정된 ResNeXt에 SE 블록을 통합한 SENet-154 모델이 추가로 구성되었다.

모델224 x 224 top-1 err.224 x 224 top-5 err.320 또는 299 crop top-1 err.320 또는 299 crop top-5 err.
ResNet-15223.06.721.35.5
ResNet-20021.75.820.14.8
Inception-v3--21.25.6
Inception-v4--20.05.0
Inception-ResNet-v220.45.319.94.9
ResNeXt-101 (64x4d)22.156.1219.14.4
Attention-92--19.54.8
DPN-13119.935.1218.554.16
SENet-15418.684.4717.283.79

SENet-154는 224 x 224 중앙 크롭 평가에서 top-1 error 18.68%, top-5 error 4.47%를 기록해 당시 보고된 가장 강력한 결과였다.

SENet-154는 64x4d ResNeXt-152를 수정한 버전에 SE 블록을 통합해 만들어졌다. 이 ResNeXt-152는 ResNet-152의 블록 적층 전략을 채택해 원래의 ResNeXt-101을 확장한 것이다. SE 블록 사용 외의 설계와 학습 차이는 다음과 같다.

  • 각 병목 빌딩 블록의 첫 1x1 컨볼루션 채널 수를 절반으로 줄여 성능 손실을 최소화하면서 연산 비용을 낮췄다
  • 첫 7x7 컨볼루션 레이어를 연속된 3개의 3x3 컨볼루션 레이어로 교체했다
  • stride-2 컨볼루션의 1x1 다운샘플링 프로젝션을 3x3 stride-2 컨볼루션으로 교체해 정보를 보존했다
  • 분류 레이어 앞에 dropout 비율 0.2의 dropout 레이어를 삽입해 과적합을 줄였다
  • 학습 시 label-smoothing 정규화를 사용했다
  • 학습과 테스트 간 일관성을 위해 마지막 몇 에폭 동안 모든 BN 레이어 파라미터를 고정했다
  • 8개 서버(64 GPU) 병렬 학습으로 배치 크기 2048을 사용했고 초기 학습률은 1.0이었다

대회 이후에도 ImageNet 벤치마크는 계속 발전했다. ImageNet 데이터만 사용한 최고 성능은 강화학습으로 데이터 증강 정책을 학습하는 AmoebaNet-C(331 crop, top-1 16.5%, top-5 3.5%)에서 보고되었다. 전체 최고 성능은 약 10억 장의 약한 레이블 이미지로 사전학습하고 ImageNet에 파인튜닝한 ResNeXt-101 32x48d(top-1 14.6%, top-5 2.4%)였다. 저자들은 이런 정교한 데이터 증강과 대규모 사전학습에서 오는 개선이 아키텍처 변경과 상호 보완적일 수 있다고 본다.

Ablation Study

모든 ablation 실험은 단일 머신(8 GPU)에서 ImageNet 데이터셋으로, ResNet-50을 백본으로 수행되었다. 경험적으로 ResNet 계열에서는 excitation 연산의 FC 레이어 bias를 제거하는 편이 채널 의존성 모델링에 유리했으므로 해당 설정을 사용한다. 각 변형의 성능 상한을 보기 위해 학습률을 0.1로 초기화하고 검증 손실이 정체될 때까지 학습한 뒤 학습률을 1/10로 줄이는 과정을 총 3회 반복했다(총 300 에폭). 학습 시 label-smoothing 정규화를 사용했다.

Reduction ratio r

r은 SE 블록의 용량과 연산 비용을 조절하는 하이퍼파라미터다.

Ratio rtop-1 err.top-5 err.Params
222.296.0045.7M
422.256.0935.7M
822.265.9930.7M
1622.286.0328.1M
3222.726.2026.9M
original (ResNet-50)23.306.5525.6M

성능은 넓은 범위의 r 값에 대해 견고하다. 복잡도를 늘린다고 성능이 단조적으로 개선되지는 않는 반면, r이 작아지면 파라미터 크기가 급격히 증가한다. r = 16이 정확도와 복잡도 사이에서 좋은 균형점이다. 다만 레이어마다 역할이 다르므로 네트워크 전체에 동일한 비율을 쓰는 것이 최적은 아닐 수 있고, 기반 아키텍처에 맞춰 비율을 조정하면 추가 개선 여지가 있다.

Squeeze 연산자

글로벌 평균 풀링과 글로벌 최대 풀링을 비교했다.

Squeezetop-1 err.top-5 err.
Max22.576.09
Avg22.286.03

둘 다 효과적이지만 평균 풀링이 약간 더 나은 성능을 보여 squeeze 연산의 기본 선택을 정당화한다. 동시에 SE 블록 성능은 구체적인 집계 연산자 선택에 상당히 견고하다.

Excitation 활성 함수

sigmoid를 ReLU, tanh로 교체해 비교했다.

Excitationtop-1 err.top-5 err.
ReLU23.476.98
Tanh23.006.38
Sigmoid22.286.03

sigmoid를 tanh로 바꾸면 성능이 약간 나빠지고, ReLU를 쓰면 성능이 크게 나빠져 SE-ResNet-50이 ResNet-50 베이스라인(23.30 / 6.55) 아래로 떨어진다. SE 블록이 효과를 내려면 excitation 연산자의 세심한 설계가 중요하다는 점을 보여준다.

스테이지별 적용

ResNet-50에 SE 블록을 한 스테이지씩 통합해 효과를 확인했다.

Stagetop-1 err.top-5 err.GFLOPsParams
ResNet-5023.306.553.8625.6M
SE Stage 223.036.483.8625.6M
SE Stage 323.046.323.8625.7M
SE Stage 422.686.223.8626.4M
SE All22.286.033.8728.1M

각 스테이지에 도입해도 성능 이득이 발생하며, 서로 다른 스테이지에서 얻는 이득은 상호 보완적이어서 결합하면 성능이 더 향상된다.

통합 위치

제안된 SE 설계 외에 세 가지 변형을 비교했다. SE-PRE는 SE 블록을 잔차 유닛 앞으로 옮긴 형태, SE-POST는 identity 브랜치와 합산된 뒤(ReLU 이후)로 옮긴 형태, SE-Identity는 잔차 유닛과 병렬로 identity 연결 위에 배치한 형태다.

Designtop-1 err.top-5 err.
SE22.286.03
SE-PRE22.236.00
SE-POST22.786.35
SE-Identity22.206.15

SE-PRE, SE-Identity, 제안된 SE는 서로 비슷하게 잘 동작하는 반면 SE-POST는 성능이 떨어진다. 브랜치 합산 이전에 적용되기만 하면 SE 유닛의 위치에 대해 성능이 상당히 견고하다는 뜻이다.

위 실험에서 SE 블록은 모두 잔차 유닛 구조 바깥에 배치되었다. SE 블록을 잔차 유닛 내부, 즉 3x3 컨볼루션 레이어 바로 뒤로 옮긴 변형도 구성했다. 3x3 컨볼루션 레이어는 채널 수가 적으므로 대응 SE 블록이 도입하는 파라미터도 줄어든다.

Designtop-1 err.top-5 err.GFLOPsParams
SE22.286.033.8728.1M
SE 3x322.486.023.8625.8M

SE 3x3 변형은 표준 SE 블록보다 적은 파라미터로 비슷한 분류 정확도를 달성한다. 저자들은 이 논문의 범위를 벗어나지만 특정 아키텍처에 맞춰 SE 블록 사용을 조정하면 추가적인 효율 개선이 가능할 것으로 예상한다.

SE 블록의 역할 분석

깊은 신경망이 학습한 표현에 대한 엄밀한 이론적 분석은 여전히 어렵다. 저자들은 SE 블록의 실질적 기능을 최소한이라도 이해하기 위해 경험적 접근을 택했다.

Squeeze의 효과

squeeze가 만드는 전역 임베딩이 실제로 중요한지 확인하기 위해, 동일한 수의 파라미터를 추가하되 글로벌 평균 풀링을 수행하지 않는 변형을 실험했다. 풀링 연산을 제거하고 excitation의 두 FC 레이어를 동일한 채널 차원의 1x1 컨볼루션으로 교체한 NoSqueeze 변형이며, 여기서 excitation 출력은 입력과 같은 공간 차원을 유지한다. SE 블록과 달리 이 점별(point-wise) 컨볼루션은 지역 연산자 출력의 함수로만 채널을 재매핑할 수 있다.

모델top-1 err.top-5 err.GFLOPsParams
ResNet-5023.306.553.8625.6M
NoSqueeze22.936.394.2728.1M
SE22.286.033.8728.1M

전역 정보 사용이 모델 성능에 유의미한 영향을 미친다는 점이 확인되며, squeeze 연산의 중요성을 뒷받침한다. 또한 NoSqueeze 설계와 비교하면 SE 블록은 이 전역 정보를 훨씬 연산 절약적인 방식으로 활용한다(3.87 대 4.27 GFLOPs).

Excitation의 동작 방식

SE-ResNet-50 모델의 활성값을 서로 다른 클래스와 서로 다른 입력 이미지, 다양한 깊이에서 분석했다. 의미와 외형이 다양한 네 개의 ImageNet 클래스(goldfish, pug, plane, cliff)를 골라 검증셋에서 클래스당 50개 샘플을 뽑고, 각 스테이지의 마지막 SE 블록(다운샘플링 직전)에서 균등하게 샘플링한 50개 채널의 평균 활성값 분포를 그렸다.

관찰은 세 가지다.

첫째, 네트워크 초기 레이어(예: SE_2_3)에서는 클래스별 분포가 매우 유사하다. 초기 단계에서 특징 채널의 중요도가 여러 클래스 사이에 공유될 가능성이 크다는 뜻이다.

둘째, 깊이가 깊어질수록 각 채널의 값이 훨씬 클래스 특화적으로 변한다(예: SE_4_6, SE_5_1). 서로 다른 클래스가 특징의 판별 가치에 대해 서로 다른 선호를 보이기 때문이다. 이는 초기 레이어 특징이 더 일반적이고 후기 레이어 특징이 더 특수하다는 기존 연구 결과와 일치한다.

셋째, 네트워크 마지막 스테이지에서는 다소 다른 현상이 나타난다. SE_5_2는 대부분의 활성값이 1에 가까워지는 포화 상태로 향하는 경향을 보인다. 모든 활성값이 1이 되는 지점에서 SE 블록은 항등 연산자로 축소된다. 분류기 직전 글로벌 풀링이 뒤따르는 SE_5_3에서는 여러 클래스에 걸쳐 비슷한 패턴이 나타나며, 분류기가 조정할 수 있는 정도의 스케일 변화만 존재한다. 이는 SE_5_2와 SE_5_3이 이전 블록들에 비해 재보정 기여가 작다는 것을 시사하며, 마지막 스테이지 SE 블록을 제거해도 성능 손실이 미미했던 앞선 실험 결과와 일관된다.

마지막으로 같은 클래스 내 이미지 인스턴스들의 활성값 평균과 표준편차를 goldfish와 plane 두 클래스에 대해 살펴보면, 클래스 간 시각화와 일관된 경향이 나타난다. SE 블록의 동적 동작이 클래스 간에도, 같은 클래스 내 인스턴스 간에도 달라진다는 의미다. 특히 단일 클래스 내에서도 표현의 다양성이 큰 후기 레이어에서 네트워크는 특징 재보정을 활용해 판별 성능을 높이는 법을 학습한다.

정리하면 SE 블록은 인스턴스에 특화된 응답을 생성하면서도, 아키텍처의 각 레이어에서 점점 더 클래스 특화적으로 변하는 모델의 요구를 뒷받침하는 기능을 수행한다.

한계와 주의사항

파라미터 증가는 무시할 수 없는 수준이다. SE-ResNet-50 기준 250만 개, 약 10%의 파라미터 증가가 발생하며 이 대부분은 채널 수가 가장 많은 마지막 스테이지에서 온다. 파라미터 사용량이 중요한 환경이라면 마지막 스테이지 SE 블록을 제거해 증가율을 4%로 낮추는 선택지가 있고, 이때 ImageNet top-5 error 손실은 0.1% 미만이다.

연산량 증가는 작지만 실행 시간 오버헤드는 그보다 크게 나타난다. GFLOPs 기준 증가율은 0.26%인 반면, 학습 시 순전파와 역전파 1회 기준 190 ms에서 209 ms로 늘어난다. 글로벌 풀링과 작은 내적 연산이 GPU 라이브러리에서 충분히 최적화되지 않은 데 기인하며, 향후 최적화로 줄어들 여지가 있다.

excitation 연산자의 설계는 견고하지 않다. sigmoid를 ReLU로 바꾸면 SE-ResNet-50의 성능이 ResNet-50 베이스라인보다도 나빠진다. 반면 squeeze 연산자 선택(평균 대 최대 풀링)과 블록 배치 위치는 브랜치 합산 이전이기만 하면 상대적으로 견고하다.

reduction ratio를 네트워크 전체에 동일하게 적용하는 것이 최적이라는 보장은 없다. 레이어마다 역할이 다르므로 기반 아키텍처의 필요에 맞춰 비율을 조정하면 추가 개선이 가능하다고 저자들도 언급한다.

마지막 스테이지 SE 블록의 기여도가 낮다는 점은 SE 블록이 모든 깊이에서 균일하게 유용하지는 않음을 보여준다. SE_5_2에서 활성값이 1 근처로 포화되면 SE 블록은 사실상 항등 연산자가 된다.

논문의 분석은 이론적 증명이 아니라 경험적 관찰에 기반한다. 저자들 스스로 깊은 신경망 표현에 대한 엄밀한 이론적 분석이 여전히 어렵다는 점을 인정하고, 실질적 기능에 대한 초보적 이해를 얻는 것이 목표라고 밝힌다.

또한 대회 이후 보고된 정교한 데이터 증강이나 대규모 약한 레이블 사전학습 기반 모델들은 SENet-154보다 낮은 error를 기록했다. 저자들은 이런 개선이 아키텍처 변경과 상호 보완적일 수 있다고 보지만, 아키텍처 개선만으로 도달할 수 있는 지점에는 한계가 있음을 시사한다.

결론

이 논문은 네트워크가 동적인 채널별 특징 재보정을 수행하도록 함으로써 표현력을 개선하는 아키텍처 단위인 SE 블록을 제안했다. squeeze는 글로벌 평균 풀링으로 전역 공간 정보를 채널 서술자로 압축하고, excitation은 FC-ReLU-FC-Sigmoid 병목 구조로 채널별 변조 가중치를 생성하며, 이 가중치가 원래 특징 맵을 스케일링한다.

광범위한 실험은 SENet이 여러 데이터셋과 과제에서 state-of-the-art 성능을 달성함을 보여준다. ImageNet 분류, CIFAR-10과 CIFAR-100, Places365 장면 분류, COCO 객체 검출에서 일관된 개선이 확인되었고, ILSVRC 2017 분류 부문에서 top-5 error 2.251%로 1위를 기록했다.

SE 블록은 이전 아키텍처들이 채널별 특징 의존성을 충분히 모델링하지 못했다는 점을 드러낸다. 저자들은 이 통찰이 강한 판별 특징을 요구하는 다른 과제에도 유용할 수 있기를 기대하며, SE 블록이 생성하는 특징 중요도 값이 모델 압축을 위한 네트워크 가지치기 같은 과제에 활용될 가능성도 제시한다.

Reference