안녕하세요 이번에 제가 리뷰할 논문은 ‘ResNet: Deep Residual Learning for Image Recognition’입니다. 2015년에 Kaiming He 등의 연구진은 Residual Networks(ResNet)라는 아키텍처를 제안하며 네트워크의 깊이가 증가함에 따라 생기는 문제들에 대해 새로운 해결책을 제시했습니다. ResNet은 잔차 학습 방법을 통해 수백 layer로 이뤄진 신경망을 구축할 수 있게 하면서 망이 깊어질 수 있는 토대를 마련하였습니다. 본 리뷰에서는 ResNet 논문의 주요 아이디어와 구조가 무엇인지 찬찬히 알아보도록 하겠습니다.
Introduction
일반적으로 CNN 신경망은 어느정도까지 층이 깊어질수록 성능이 좋아지는 특성을 가지고 있습니다. 하지만 층이 너무 깊어진다면 오히려 성능이 나빠질 수 있습니다. 이를 비교한 실험은 Fig 1을 통해 확인할 수 있습니다. 실험 결과를 보면 Training error와 Test error 모두 56 layer가 20 layer보다 더 나쁘게 나온 것을 확인할 수 있습니다. 이러한 결과가 도출된 이유는 층이 깊어질 수록 더 많은 레이어를 가지고 있어, gradient vanishing 또는 exploding gradient 문제를 야기할 수 있기 때문입니다. 따라서 이 논문에서는 Deeper neural neworks 훈련을 용이하게 하는 “residual learning framework”를 제안합니다. 이 framework는 훨씬 깊은 네트워크를 쌓을 수 있도록 도와주고 정확도 향상에 도움을 줄 수 있다고 합니다.
Residual Learning
Residual Learning 구조는 다음과 같습니다. 기존의 방식은 각 레이어가 원하는 기본 매핑(H(x))을 직접 맞추게 하였지만 제안된 블록은 residual mapping을 맞추도록 변형하였습니다. residual mapping은 원래 매핑과 현재 입력 간의 차이를 나타내는 F(x) := H(x)−x와 같은 형태로 정의가 됩니다. 원래 함수 H(x)는 이제 F(x) + x로 다시 정의되는데 기존 방식처럼 H(x)를 근사하기를 기대하지 않고 레이어들이 잔여 함수 F(x)를 근사하도록 합니다. 이러한 재정의는 degradation problem를 해결하는데 도움을 줄 수 있는데 만약 추가된 레이어를 Identity Mapping으로 구성할 수 있다면 모델을 더 깊게 쌓아도 얕게 쌓은 모델과의 훈련 오차의 차이가 크지 않게 될 것입니다.
F(x) + x 형태의 residual mapping은 “shortcut connections“를 사용하여 구현할 수 있습니다. Shortcut connections는 하나 이상의 레이어를 건너뛰는 연결을 나타내고 논문에서는 이러한 연결이 identity mapping을 수행하며 결과를 스택된 레이어의 출력에 추가합니다. 이러한 identity shortcut connections는 추가 매개 변수나 계산 복잡성을 증가하지 않는 장점을 가지고 있습니다.
Shortcuts의 수식
x : 입력 , y : 출력 , F(x, {Wi}) 함수 : 학습해야 하는 잔여 매핑
두 개의 레이어를 가진 Fig. 2는 F = W2σ(W1x)로 정의됩니다. 여기서 σ는 ReLU 활성화 함수를 나타내며 bias는 생략되었습니다. 덧셈 이후에 활성화 함수가 한 번 더 사용됩니다.
(1) 수식은 입력 x와 F의 차원이 같아야 합니다. 그러나 input과 output차원이 달라지면 식 (2)처럼 linear projection Ws를 추가하여 차원을 일치시킬 수 있습니다.
Network Architectures
그림을 통해서 네트워크의 구조를 살펴보겠습니다.
Plain Network
Plain Network는 VGG net을 기반으로 합니다. convolutional layer는 주로 3×3 필터를 사용하고 2가지의 설계 규칙을 따릅니다.
첫 번째 규칙은 출력 특징 맵 크기가 동일한 경우, layer는 동일한 수의 필터를 갖습니다.
두 번째 규칙은 특징 맵 크기가 절반으로 줄어든 경우, layer의 필터 수도 두 배로 증가하여 레이어 당 시간 복잡성을 보존합니다. 절반으로 downsampling할 때는 stride가 2인 convolutional layer로 직접 downsampling을 수행합니다. 네트워크는 global average pooling layer 와 softmax를 포함하는 1000개의 클래스로 분류되는 fully-connected layer로 끝납니다. weighted layers의 수는 총 34개 입니다.
Plain Network 모델은 VGG-19 와 비교했을 때 더 적은 필터와 낮은 복잡성을 갖습니다. 34 layer은 3.6 billion개의 FLOPs(곱셈-덧셈 연산)을 수행하며, 이는 VGG-19의 19.6 billion FLOPs의 18%에 해당합니다.
Residual Network
Residual Network은 Plain Network에서부터 출발하며 shortcut connections을 추가하여 만들어집니다.
Identity shortcuts(수식(1))은 입력과 출력의 차원이 동일한 경우에 직접 사용되고(Fig. 3에서 실선에 해당) 차원이 증가하는 경우(Fig. 3에서 점선에 해당)에는 두 가지 옵션을 고려합니다.
- (A) shortcut은 identity mapping을 수행하고 차원을 늘리기 위해 zero 패딩을 추가합니다.
- (B) 차원을 일치시키기 위해 수식(2)에 있는 projection shortcut가 사용됩니다.
Implementation
이러한 설계 규칙을 가지고 구현된 방법은 다음과 같습니다.
- 이미지 224 * 224
- Batch normalization 사용
- Initialize Weights
- SGD, mini batch 256
- Learning rate 0.1 , Iteration 60 * 10^4, weight decay 0.0001, momentum 0.9
- No dropout
Experiments
이 논문에서는 image classification에서 총 3가지 포인트에서 실험을 진행합니다.
첫 번째는 Plain network와 ResNet network를 비교하는 실험 두 번째는 Identity shortcut과 Projection shortcut이 ResNet의 성능에 어떤 영향을 미치는지 마지막 세 번째는 ResNet의 layer를 늘렸을 때의 성능 비교 입니다.
먼저 plain , ResNet 18,34 layer의 실험 결과 입니다.
Table 2와 Fig 4로부터 알 수 있는 관측 결과는 다음과 같습니다. 첫째, residual learning으로 34층 ResNet이 낮은 훈련 오류를 나타내며 검증 데이터에 대해서도 좋은 성능을 보이며 일반화가 가능하다는 것입니다. 이는 degradation problem이 잘 해결되었다는 것을 의미하고 깊이가 증가해도 높은 정확도를 얻을 수 있었다는 것을 나타냅니다.
둘째, Fig 4로 부터 ResNet이 더 좋은 정확도를 가짐에도 초기 단계에서 Plain net보다 더 빠르게 수렴함을 알 수 있고 이는 최적화를 더 쉽다는 것을 알 수 있는 부분입니다.
두 번째 실험인 Identity shortcut과 Projection shortcut 이 ResNet에서 어떻게 쓰이는지 알아보는 실험입니다. 여기서는 총 세가지 형태의 ResNet있습니다.
A. 차원 증가를 위해 zero-padding을 사용 -> 추가 파라미터 없음
B. 차원 증가를 위해 projection shortcuts을 사용하고 다른 shortcuts은 Identity shortcut을 사용
C. Projection shortcut만 사용
논문의 결과에 따르면 C > B > A 순으로 C의 결과가 가장 좋았다고 합니다. 하지만 그 차이가 미세하고 ResNet-C가 ResNet-A보다 메모리 타임 및 complexity가 훨씬 높기 때문에 효율적이지 않다고 여겨서 이 논문에서는 C옵션을 사용하지 않는다고 합니다.
마지막으로 ResNet layer의 깊이를 늘려 성능을 비교한 실험입니다.
ResNet 34-layer에서는 Fig 5의 왼쪽 그림과 같이 building block을 사용하였지만 ResNet 50/101/152에서는 오른쪽 그림과 같은 bottleneck 구조를 사용하게 됩니다. 이러한 이유는 ImageNet에 대하여 학습을 진행할 때 training time이 길어질 것을 고려해서 변형을 시켜줬다고 합니다. Bottleneck 구조는 1×1, 3×3, 1×1으로 구성이 되어있습니다. Bottleneck 구조라고 이름을 붙인 이유는 차원을 줄였다가 다시 차원을 늘려주기 때문입니다. 이렇게 구성을 하면 연산 시간을 줄일 수 있습니다. Bottleneck 구조의 첫 1×1 convolution은 dimension을 줄이기 위한 목적이며, 이후에 3×3 convolution을 수행 한 뒤에 마지막 1×1 convolution을 사용하여 다시 dimension을 증가시켜줍니다. 결과적으로 왼쪽그림에서 3×3 convolution 2개를 곧바로 연결시킨 구조에 비해 연산량을 절감시킬 수 있게 됩니다.
50/101/152 layer의 Single model에 대한 실험 결과는 다음 그림과 같습니다. 152-layer에 대한 top-5 error율은 4.49% 수준까지 떨어졌으며 가장 좋은 성능을 보임을 확인할 수 있습니다.
최종적으로 층의 깊이가 다른 모델들을 ensemble 한 모델을 ILSVRC에 제출했을때 결과는 아래와 같고 top-5 err율을 3.57%까지 떨어트렸습니다.
추가적으로 ImageNet 말고도 CIFAR-10의 데이터 셋을 이용해서도 모델을 학습하고 검증하였는데 실험 결과는 다음과 같습니다.
Table 6의 결과처럼 ResNet의 층이 깊어질수록 성능이 좋아짐을 확인할 수 있지만 1202 layer에서 부터는 성능이 떨어짐을 확인할 수 있습니다. 이는 1202 layer에서 overfitting 문제가 일어났다는 것을 Fig 6의 3번째 결과를 통해 알 수 있습니다. 물론 overfitting을 방지하기 위해 max out이나 drop out 같은 정규화 기법을 사용할 수 있지만 이 논문에서는 ResNet architecture만 소개하기 위해 그러한 기법을 사용하지 않았다고 합니다.
결론
ResNet은 residual learning framework을 통해 신경망에 대해 최적화를 더 잘 수행할 수 있게 만들어줬다는 점에서 의미를 갖습니다. 이후 개발되는 CNN구조에서 Shortcut 연결을 이용한 모델이 많이 활용되엇고 성능 면에서도 뛰어난 모습을 보였습니다. 또한 ResNet은 관점을 조금 바꿨을 뿐이지만 많은 효과를 얻을 수 있었기 때문에 baseline 네트워크로 자리잡게 되었고 많은 후속 연구들에서 새로운 구조를 개발하거나 비교 실험을 하는 경우에 ResNet을 우선적으로 검토하거나 사용한다고 합니다.
정의철 연구원님, 좋은 리뷰 감사합니다. 해당 논문은 8년이 지난 지금까지도 수많은 연구에서 backbone으로 사용되고 있는 ResNet을 최초로 제안한 논문으로, 19만회에 육박하는 인용수를 보입니다. 본 논문에서 최초로 제안된 skip connection과 identity mapping은 이후 등장하는 CNN backbone(DenseNet, U-Net 등)에서 계속 등장하는 매우 중요한 개념이니, 잘 정리해 두시기 바랍니다. 간단한 질문 남기겠습니다. 답변 기대하겠습니다.
1. plain network 부분에서 ‘특징 맵 크기가 절반으로 줄어든 경우, layer의 필터 수도 두 배로 증가하여 레이어 당 시간 복잡성을 보존합니다’ 라고 하셨습니다. feature map 크기가 절반으로 줄어드는데 layer의 필터 수를 증가시키는 이유가 무엇인가요?
2. Residual network의 (b)에서 차원을 일치시키기 위해 수식(2)의 linear projection을 수행한다고 하셨는데, 구체적으로 어떻게 수행되나요?
3. ResNet은 VGG에 비해 깊은 네트워크를 구성하였을 때 gradient vanishing과 degradation을 해결하면서 높은 성능을 달성하였습니다. 이는 온전히 residual learning(identity mapping)의 추가 만으로 이루어진 결과인가요? 다른 결정적인 요소는 없나요?
이 논문 이후에도 ResNet과 skip connection을 분석한 논문이 많습니다. ResNet은 앙상블 모델처럼 동작하며(https://arxiv.org/abs/1605.06431), skip connection이 loss landscape에 convexity를 부여해서(https://proceedings.neurips.cc/paper_files/paper/2018/file/a41b3bb3e6b050b6c9067c67f663b915-Paper.pdf) 성능에 긍정적인 영향을 미친다는 분석 등이 있습니다. 이후에 참고하시면 좋을 것 같습니다.
리뷰 작성하시느라 수고 많으셨습니다.
안녕하세요 재연님 좋은 질문 감사합니다!!
1 . feature map은 더 깊은 레이어로 갈수록 더 복잡하고 추상화된 특징을 담을 수 있습니다. 따라서 feature map이 압축될 수록 더 많은 필터를 사용해서 모델이 다양한 패턴을 학습할 수 있도록 도움을 줄 수 있고 유의미한 정보를 많이 가져갈 수 있기 때문에 layer의 필터 수를 증가시키게됩니다.
2. 차원을 증가시킬 때 고려할 수 있는 옵션은 총 2가지가 있습니다.
(A) 의 방식같은 경우 identity mapping을 사용하지만 차원을 늘려주기 위해서 zero padding을 사용합니다. 예시로 x = 14*14*32(H,W,C) building block의 입력으로 들어가고 F(x) = 7*7*64 와 합쳐줘야한다면 x에 MaxPool을 적용해서 사이즈를 줄인뒤 7*7*32 크기의 zero padding을 x에 붙여 x와 F(x)를 더하게 됩니다.
반면 (B)의 경우에는 x에 MaxPool을 적용까지는 동일하고 1×1 convolutions을 사용해서 channel을 맞춰주고 F(x)와 더하게 됩니다.
추가로(A) 방식은 (B)방식과는 다르게 추가적인 파라미터가 없다는 특징를 가지고 있습니다.
3 . ResNet이 VGG에 비해 높은 성능을 달성할 수 있었던 이유는 residual learning이라는 새로운 학습법의 역할이 컸다고 생각합니다. 하지만 이번에 ResNet논문을 읽고 직접 모델을 구현해보는 과정 속에서 하이퍼파라미터를 잘못 설정하거나 옵티마이져, loss 함수에 따라 성능이 많이 좌지우지 되는 것을 확인할 수 있었습니다. 그리고 VGG 논문을 찾아 봤을 때 하이퍼파라미터 등이 완전히 같은 것은 아니였기에 ResNet 모델의 성능이 좋게 나온 것은 최적의 하이퍼파라미터나 적절한 옵티마이져, loss 함수의 조합도 어느 정도 영향을 끼쳤다고 생각합니다.
하지만 성능뿐만 아니라 ResNet 모델은 layer을 깊게 쌓을 수 있는 토대를 마련했다는 점과 빠른 수렴 속도를 보여줬다는 것에 큰 의미가 있기 때문에 많은 모델에도 적용이 되고 baseline 모델로도 활용이 되지 않나 싶습니다.
좋은 질문 감사드리고 시간될 때 추천해 주신 논문도 읽어보도록 하겠습니다. 혹시 답변에 수정할 부분이 있다면 알려주시면 감사하겠습니다!!
좋은 답변 감사합니다. 제가 추천해 드린 논문 내용을 알아두면 skip connection에 대한 더 깊은 이해를 도와주겠지만, 지금은 주어진 main task에 집중하시고 나중에 여유가 생길 때 둘러보는 것을 추천드립니다(시험 공부와 주어진 task가 최우선입니다). 3번 질문에 대해 추가적인 답변을 드리면, VGG network는 2014년에 제안되었으며, Batch normalization은 2015년에 제안되었습니다. 배치 정규화 적용 유무도 VGG와 ResNet의 큰 차이 중 하나입니다. URP 시절을 떠올려보시면, SSD의 backbone인 VGG network에 배치 정규화를 적용해 성능 향상을 시도한 기억이 있으실 겁니다.
ResNet 공부하시는게 쉽지 않으셨을텐데, 수고 많으셨습니다.
안녕하세요 정의철 연구원님 좋은 리뷰 감사합니다.
간단한 질문이 있는데요, [Fig.1]과 [Fig.6-3]은 모두 깊이가 다른 두 CNN 모델을 비교하는 결과이며, 모두 깊은 모델의 성능이 좋지 않은 것을 나타내고 있습니다. 그렇다면 이때 각 현상의 원인을 [Fig.1]는 gradient vanishing 또는 exploding gradient, [Fig.6-3]은 overfitting로 판단하는 이유를 설명해 주실 수 있나요?
감사합니다.
안녕하세요 혜원님! 질문에 답변을 드리면
[Fig.1]는 gradient vanishing 또는 exploding gradient / [Fig.6-3]은 overfitting로 판단한 된 것은 논문에 기재된 내용입니다. [Fig.1]에 있는 실험 내용은 논문’ K. He and J. Sun. Convolutional neural networks at constrained time cost. In CVPR, 2015.’ / ‘R. K. Srivastava, K. Greff, and J. Schmidhuber. Highway networks. arXiv:1505.00387, 2015.’ 의 논문에서 증명이 되어서 찾아보시면 좋을 것 같고
[Fig.6-3] 같은 경우 1202-layer network는 데이터셋이 작은데 비해 모델의 크기가 너무 크기 때문에 overfitting이 발생했다고 주장하고 있습니다.
질문 감사합니다!