1. Introduction
Question
- 네트워크의 층을 깊게 쌓는 것이 매우 중요하다는 것이 당시의 연구를 통해 밝혀짐
- 그러나 네트워크의 깊이가 깊어질 수록 정확도는 포화되고 점점 떨어지는 degradation problem이 발생함. 그리고 이는 오버피팅에 의한 것이 아님
- 저자들은 이러한 문제점을 deep residual learning framework를 적용함으로써 해결
Residual Learning
- Shortcut 연결은 한 개 이상의 레이어를 건너뛰는 연결을 의미함
- 이는 단순히 identity mappling을 수행하며 레이어의 출력에 더해짐
- 추가적인 파라미터나 계산 복잡도를 증가시키지 않음
- 여전히 SGD와 역전파를 통해 end-to-end로 학습될 수 있음
2. Related Works
Residual Representations
- 이미지 인식 분야에서 원본 벡터를 인코딩하는 것보다 잔차 벡터(residual vectors)를 인코딩하는 것이 더 효과적임이 증명되었음. e.g. VLAD, Fisher Vector
- 저수준 비전(low-level vision) 및 컴퓨터 그래픽스에서는 좋은 재구성(reformulation)이나 전처리(preconditioning)가 최적화를 단순화할 수 있음. e.g. Multigrid method
Shortcut Connections
- 몇몇 중간 레이어는 소실되는/폭발하는 기울기 문제를 해결하기 위해 보조 분류기(auxiliary classifiers)에 직접 연결됨
- 몇몇 논문들은 레이어 반응, 기울기 및 전파 오류를 중심으로 배치하는 방법을 제안했으며, 이는 쇼트컷 연결로 구현됨
Highway Networks
- 이러한 게이트는 데이터에 의존하며 파라미터를 가지고 있는 반면, identity shortcut은 파라미터가 없음
- 게이트 쇼트컷이 닫히면 하이웨이 네트워크의 레이어는 비잔차(non-residual) 함수를 나타냄. 반면에, 아이덴티티 쇼트컷은 절대 닫히지 않으며, 모든 정보는 항상 통과되며 추가적인 잔차 함수를 학습함
- 또한, 하이웨이 네트워크는 깊이를 극도로 증가시켰을 때(100 레이어 이상) 정확도 향상을 입증하지 못하였음
3. Deep Residual Learning
Residual Learning - Hypothesis
- 저자들은 만약 원래 네트워크에 단순히 입력된 것과 동일한 것을 출력하는 identity mapping 역할만 하는 레이어를 더 쌓으면 원래 네트워크보다 에러가 더 클 수 없을 것이라고 생각했음
- 즉 degradation problem은 층을 깊게 쌓으면서 이러한 identity mapping을 근사하는 데에 어려움이 있기 때문에 발생하는 것이라고 가정함
- 또한 저자들은 일반적으로 모델이 함수 H(x)를 근사할 수 있다면 residual function인 H(x) - x 또한 근사할 수 있을 것이라고 생각함
- 이에 따라 모델은 보다 명시적으로 F(x) := H(x) − x 를 근사할 수 있도록 학습 되고 보다 구체적으로는 optimal에 가까워졌을 때 F(x) = 0, 즉 H(x) = x로 수렴할 수 있도록 설계
Identity Mapping by Shortcuts
- identity shortcut 연결은 어떠한 부가적인 파라미터나 계산 복잡성의 증가가 없음
- \( x \)와 \( F \)의 차원이 동일하지 않다면 linear projection \( W_{s} \)을 통해 이를 맞춰줌 (\( y = F(x, {W_{i}}) + W_{s}x \))
- 실험에서 F는 2~3개 레이어 정도로 구성했지만 더 많이도 가능 (그러나 하나의 레이어로는 이점을 관찰하지 못했음)
Network Architectures – 34-layer Plain Network
- VGG 네트워크를 사용하고 주로 3x3 필터의 conv layer 사용. 아래는 두 가지 설계 규칙
- (i) 동일한 출력 feature map 크기를 위해 층들은 동일한 수의 필터를 가짐
- (ii) 특징 맵 크기가 절반으로 줄어들면 필터의 수를 두 배로 늘려 각 층의 시간 복잡성을 유지
- downsampling은 stride가 2로 설정된 conv layer에서 직접 수행
- global average pooling으로 네트워크를 마무리하고 1000-way FC layer와 softmax로 연결
- VGG 네트워크보다 적은 필터와 낮은 복잡도. FLOPs(multiply-adds)은 36억으로 VGG-19(196억 FLOPs)의 18% 수준
Network Architectures – 34-layer Residual Network
- 앞선 plain network에 shortcut connections 삽입
- 입력과 출력 차원이 동일한 경우에는 identity shortcuts을 바로 연결할 수 있음
- 입력과 출력 차원이 다른 경우에는 아래 두 가지 옵션
- (A) zero padding으로 차원을 맞춰줌 (no extra parameter)
- (B) 앞서 \( W_{s}x \)와 같이 projection shortcut 수행 (done by 1×1 convolutions)
Implementation
- scale augmentation을 위해 이미지의 짧은 변이 [256, 480] 값이 되도록 random resizing
- resizing된 이미지에서 224x224 random crop
- Horizontal flip, with the per-pixel mean subtracted
- Standard color augmentation
- conv layer 직후 Batch normalization (activation 이전에)
- He weight initialization
- SGD with a mini-batch size of 256
- learning rates는 0.1에서 시작해서 정체될 때 10씩 나눠줌
- Weight decay of 0.0001 and a momentum of 0.9
4. Experiments
Basics
- ImageNet 2012 dataset
- 1000 classes, training (1.28M), validation (50K), and testing (100K)
- Classification performance
- top-1 error : multi-class classification error, . the proportion of incorrectly classified images
- top-5 error : computed as the proportion of images such that the ground-truth category is outside the top-5 predicted categories. The main evaluation criterion used in ILSVRC
Plain Networks
- 18-layer, 34-layer plain 네트워크 평가
- 더 깊은 34-layer plain 네트워크가 18-layer plain 네트워크 보다 validation error가 큰 것을 표를 통해 확인할 수 있음
- 그 이유는 degradation problem인데, 그래프를 보면 34-layer plain 네트워크의 경우 학습 전반에 걸쳐 training error(얇은 선)가 더 높음 (오버피팅의 경우 training error는 낮음)
- BN을 사용했기 때문에 gradient 소멸 문제 또한 아님
Residual Networks
- 18-layer, 34-layer residual 네트워크 평가
- shortcut connection이 모든 3×3 filter 마다 추가 (zero-padding으로)
- 세 가지 주요한 관찰
- 34-layer ResNet > 18-layer ResNet (앞선 plain 네트워크와 반대)
- 또한 34-layer ResNet은 training error(얇은 선)가 validation error(굵은 선)보다 낮음
- 이는 degradation problem이 ResNet 구조에서 발생하지 않았음을 의미하며 증가되는 깊이로 더 높은 정확도를 얻을 수 있다는 것을 시사함
- 34-layer ResNet에서 3.5% 가량 the top-1 error 성능 향상
- 깊은 네트워크에서 residual learning의 효과 입증
- ResNet의 수렴 속도가 더 빠름
- 기울기를 보면 ResNet이 plain에 비해 더 빠르게 수렴하는 것을 확인할 수 있음. 이를 통해 ResNet이 초기 단계에서 최적화가 더 쉽게 이루어지면서 빠른 수렴이 발생하는 것을 알 수 있음
- 34-layer ResNet > 18-layer ResNet (앞선 plain 네트워크와 반대)
Identity vs. Projection Shortcuts
- shortcut 세 가지 옵션 비교
- (A) zero-padding shortcuts (모든 shortcuts은 parameter-free)
- (B) 차원을 증가시킬 때 projection shortcuts, 나머지 shortcuts은 identity
- (C) 모든 shortcuts을 projections으로
- 기본적으로 모든 옵션 모두 plain 보단 성능이 좋았음
- A < B: zero-padding된 부분이 실제로 잔차 학습의 효과는 없음
- B < C: 더 많은 projection shortcuts으로 인한 부가적인 파라미터 때문
- 그러나 차이는 미비하고 projection shortcuts이 degradation problem을 해결하는 데에 필수는 아님
Deeper Bottleneck Architectures
- 50-layer 이상의 ResNet의 경우 왼쪽 그림과 같이 잔차 함수 F를 2개의 레이어로 구성하는 것이 아니라 1x1, 3x3, 1x1 조합의 3개 conv layer Bottleneck 구조로 구성하였음
- 그 이유는 시간 복잡도 때문인데 만약 그림 우측의 identity shortcut이 projection shortcut이라면 시간 복잡도와 모델 크기가 두 배가 됨
- 이를 방지하고자 1x1 conv layer로 차원을 줄이고 늘리면서 맞춰줌
- 50-layer ResNet
- 34-layer 네트워크의 2-layer block을 3-layer bottleneck block으로 교체
- 차원이 증가하는 경우에는 옵션 (B) 적용
- 101-layer and 152-layer ResNets
- 3-layer block 을 더 많이 사용
- 눈에 띄는 점은 층을 매우 깊게 쌓았음에도 152-layer ResNet (11.3 billion FLOPs)이 VGG-16/19 nets (15.3/19.6 billion FLOPs)보다 더 낮은 복잡도를 가짐
- 50/101/152-layer ResNet이 34-layer 보다 유의미하게 높은 성능 (degradation problem 해결)
Comparisons with State-of-the-art Methods
- 단일 모델로 4.49%의 top-5 validation error (152-layer ResNet). 이는 이전의 모든 앙상블 모델 성능 능가
- 2개의 152-layer ResNets를 포함하여 6개의 깊이가 다른 모델로 앙상블한 결과 테스트 데이터셋에 대해 3.57%의 top-5 error
Layer Responses on CIFAR-10
- CIFAR-10 이미지에 대해 3x3 convolution 통과 이후 reponse를 확인함 (BN까지 거치고 ReLU 직전)
- 일반적으로 ResNet들이 response가 더 작음
- response가 작다 = 잔차 함수 F가 0에 수렴한다 = 시그널이 튀지 않고 잘 전달된다
Exploring Over 1000 layers
- 1202-layer 네트워크와 110-layer 네트워크끼리 training error는 비슷하지만 1202-layer 네트워크의 test error가 더 높음
- 이는 오버피팅 때문
5. Conclusion
- Identity Shortcut을 통해 잔차 함수를 설계함으로써 간단하지만 매우 강력한 모델을 만듦
- 이를 통해 degradation 문제도 해결하고 층을 더욱 더 깊이 쌓음
- 그 과정에서 오버피팅도 발생하지 않고 VGG에 비해 계산 비용도 적음
Code Review
References
- https://inhovation97.tistory.com/46
- https://phil-baek.tistory.com/entry/ResNet-Deep-Residual-Learning-for-Image-Recognition-%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0
- https://github.com/pytorch/vision/blob/main/torchvision/models/resnet.py