[CVPR 2016]Deep Residual Learning for Image Recognition

안녕하세요 첫 X-Review로 ResNet 논문을 가져오게 되었습니다. 제가 연구실에 들어오고 처음 꼼꼼하게 읽게 된 논문입니다. 제가 읽은 논문이 많은 것은 아니지만 ResNet에서 쓰이는 skip connection이 이후 많은 연구에서 기본적으로 사용되므로 그 배경에 있는 ResNet을 알아두면 좋을 것 같습니다.

1.서론(introduction)

해당 논문이 나오기 전까지 이미지 분류에 있어서 신경망의 깊이를 늘리는 것이 하나의 해결책으로 자리잡고 있었습니다.
깊은 신경망의 특징은 low/mid/high level feature 들을 통합하고 end-to-end로 분류하는게 가능하게 했고, 층의 깊이에 따라 feature의 level들이 질적으로 좋아지는 경향이 있었습니다.
논문에서는 한가지 질문을 하게됩니다. “Is learning better networks as easy as stacking more layers?
layer를 쌓는것만큼 네트워크를 더 잘 학습시키는 것은 어렵다고 말하는데, 그 이유로서 Degradation problem 을 언급합니다.

Vanishing / Exploding gradients problem

Degradation problem을 설명하기에 앞서 깊은 신경망을 학습하기 어려운 문제로 gradient의 흐름 문제가 먼저 존재했었습니다. 다만 이러한 문제는 2가지 방법으로 어느정도 해결이 되었습니다.

  1. normalized initializatoin ( he 초기화, xavier 초기화 )
  2. intermediate normalization layers ( batch norm)

해당 방법들을 이용하여 gradient 들이 너무 작아지거나 너무 커지는 것을 막아줄 수 있었습니다, 이 문제를 해결하고 나서 어려움에 봉착하게 된 것이 Degradation problem 입니다.

Degradation problem

네트워크의 깊이를 더 깊게 했더니 test error 뿐만 아니라 training error조차 더 커지는 현상입니다.
이는 overfitting이나 gradient flow의 문제가 아닙니다. overfitting의 경우 training error는 더 낮지만 test error 가 더 높은 과적합 상황이어야 합니다. gradient 문제는 앞서 언급했던 방식들로 해결이 되어서 새로운 문제로 Degradation을 언급하게 됩니다.

Degradation 문제는 단순한 identity 함수조차 학습이 잘 되지 않으므로 생기는 문제입니다. 이는 함수의 표현 방식 자체가 비효율적이라고 생각하여 저자는 모델이 학습해야 할 함수를 재설정하는 방식으로 Degradation 문제를 해결하게 됩니다. 함수를 재설정하는 방법은 기존 모델에 identity mapping 을 추가하는 것 뿐입니다.

원래는 H(x) 를 학습했다면 F(x):=H(x) – x 를 학습하게 하는 것인데, 결국 H(x) = F(x)+x 형태로 표현이 됩니다.
저자는 F(X) (잔차) 를 학습하는 것이 직접적으로 H(x)를 학습하는 것 보다 최적화 관점에서 더 쉽다고 가정합니다.
이는 극단적인 예시로 만약 우리가 최종적으로 학습해야할 최적함수가 항등함수라면, 비선형 계층을 여러 개 쌓아서 항등함수를 근사하는 것보다, 잔차를 0으로 만드는 것이 더 쉽다는 생각에서 비롯됩니다.
더 쉽게 말하자면 파라미터들이 학습되는 과정에서 이전 입력을 그대로 출력할 것은 어렵지만, 이전 입력에서 얼마나 변하는지 잔차를 0으로 학습하는 것이 더 쉽다는 가정입니다.

저자는 이러한 shortcut 연결에 항등함수(identity mapping)만 적용하였으며, 따라서 추가적인 파라미터나 연산량을 증가시키지 않고 Degradation 문제를 해결하게 됩니다.

2. Related Work

저자의 이러한 identity mapping기반 shortcut 구성 방식은 여러 기존 기법들로부터 영감을 받았습니다.

VLAD 에서 로컬 discriptor 여러개 뽑고, 전체 이미지를 하나의 vector로 표현할때 residual vectors로 표현됩니다.
이때 vector quantization 과정에서 residual vectors 가 original vecotors 보다 효과적으로 encoding 되는 것을 보입니다.

Multigrid & Hierarchical basis preconditioning 방법들은 최적함수를 좋은 형태로 바꾸거나, 좋은 precondition에서 수렴이 빠르다는 것을 보여줍니다.

이전에도 shortcut 을 사용한 방식들이 존재하기는 했습니다. ex) highway networks, U-net
하지만 layer를 100층이상 늘릴 수 없었고 ResNet은 learnable parameter 없이 매우 깊은 신경망을 만들어내는데 의가 있습니다.

3. Deep Residual Learning

3.1. Residual Learning

저자는 하나의 가설에서부터 skip connection을 구성하게 됩니다.
가설 : multiple nonlinear layers 는 점근적으로 복잡한 함수를 근사시킬 수 있다.
(해당 가설은 Universal Approximation Theorem 으로 추가적으로 알아보면 좋을 것 같습니다.)

해당 가설로부터 x를 input으로 하는 multi nonlinear layer를 H(x)라 할때,
H(x) – x 도 (x와 H(x)의 차원이 같을때) 점근적으로 근사가 가능합니다.
위에 설명했듯이 F(x):=H(x) -x 를 에측해서 근사시키며, 기존의 H(x) = F(x) + x 의 형태가 됩니다.
제가 이해한 표현으로는, 최적의 함수가 identity mapping에 가깝다면, 처음부터 전체 함수를 학습하기보다는, 입력 x에서 얼마나 변화가 있는지를 학습하는 것이 더 쉽다라고 이해했습니다.

3.2. Identity Mapping by Shortcuts

저자가 구성한 building block은 이런 형태입니다. 다만 F와 x의 차원이 다르다면 linear projection인 Ws를 추가할 수 있습니다.

저자는 skip connectoin은 2개나 3개의 block 단위로 하는데 F가 하나의 layer만 가진다면 선형 layer와 비슷한 효과이기 때문에 2개부터 적용합니다.

3.3. Network Architectures

Plain network 와 Residual Network 모두 VGG에서 영감을 받았으며, 전체 parameter의 대부분을 차지하는 fc layer 연산부분을 없애서 더 적은 parameter로 더 좋은 성능을 낼 수 있게 됩니다.

plain network

VGG에서 영감을 받았고 2개의 규칙을 따릅니다.
1. output feature map size 가 같으면 layer들은 filter 개수가 같다.
2. feature map size가 절반이 된다면, filters를 2배로 늘려서 시간복잡도를 유지하고 정보량을 보존시킨다.
downsampling은 stride가 2인 convolution layer로 만드는데, max pool 같은 pooling 기법은 사용하지 않고 마지막 분류기로 갈때만 avg pool로 1000개 class를 softmax로 분류하게 됩니다.

Residual Network

plain network + shortcut connection 구조
identity shortcut은 input과 output 차원수가 같을때만 적용합니다.
input과 output 차원수가 다르다면 적용할 2가지 방법이 존재합니다.
(A) in 64 out 128인 경우, 앞은 64 뒤는 0으로 채우는 방식 (논문 표현으로는 with extra zero entries padded)
(B) in 64 out 128인 경우, conv1*1 적용 (Learnable parameter) : Conv2D(in,out,filter=1,stride=2)
(A)와 (B)방식 모두 stride를 2로 둬서 F(x)와 x의 element wise addition 과정에서의 차원을 맞춰줘야합니다.

3.4. Implementation (ImageNet)

1. Image random sampled in [256,480]
2. random crop by [224,224] or per-pixel mean subtracted를 적용한 horizontal flip
3. standard color augmentation
4. Batch normalization 을 각 convolution이후, ReLU 이전에 적용

  • Optimizer: SGD
  • Batch size: 256
  • 초기 learning rate: 0.1 → plateau 시마다 10배씩 감소
  • Total iterations: 약 60만 (60 × 10⁴)
  • Weight decay: 0.0001
  • Momentum: 0.9
  • Dropout 미사용: BN과 중복되는 regularization 효과 때문에 사용하지 않음

4.Experiments

4.1. ImageNet Classification

Plain과 ResNet을 비교함으로써 Degradation problem을 확인하고 ResNet이 이를 해결하는 점을 보였습니다.
수학적으로 보면 34-layer model은 18-layer model의 파라미터 공간을 포함하고 있으므로 더 유연한 표현력을 가지고 있습니다.
하지만 gradient-based optimizer 입장에서는 이 커진 공간 안에서 identity를 근사해야 하는 것은 훨씬 어려운 문제입니다. 저자는 그 이유로 plain 구조에서는 nonlinear layer가 쌓이면서 “거의 아무것도 안하는 층”을 만드는 것이 매우 어렵기 때문이라고 표현헀습니다.

Top-1 error 성능은 18layers 에서 plain과 ResNet은 별 차이가 없지만, 수렴속도는 차이가 납니다. 위의 Figure 4 그래프를 보면 같은 iteration 에서 초기 error 성능이 더 빠르게 낮아지는 것을 볼 수 있습니다.

Identity vs. Projection Shortcuts.

(A) zero padding used for increasing dimensions, and other shortcuts are identity
(B) projection shortcuts used for increasing dimensions, and other shortcuts are identity
(C) all shortcuts are projections
A<B<C 순서대로 성능이 좋아집니다. (모두 plain 보다는 높은 성능)
다만 projection shortcuts가 degradation problem을 해결하는 주 역할이 않고 학습 속도만 느려지므로 저자는 B를 채택했다고 합니다.

Deeper Bottleneck Architectures.

저자는 50층 이상의 구조에서 building block 형태를 bottleneck 구조로 변경하여 적용하였는데, 이는 training time을 낮추기 위해서입니다. 기존 3X3 conv 연산 2개를, 1X1 , 3X3, 1X1 로 바꾸되 중간 3X3 과정에서의 channel 수를 낮춰 연산량을 비슷하거나 더 낮게 맞췄습니다.

저자는 top-5 error on the test set 에서 ILSVRC 2015 SOTA를 달성하게 됩니다.
저자는 CIFAR-10 에서는 SOTA는 달성하지 못하지만 SOTA에 준하는 성능을 보여줬습니다.

Exploring Over 1000 layers


152layer로 SOTA를 달성하고 1202 layer를 쌓아봤지만 성능은 오히려 더 떨어진 모습을 보여줬습니다. 다만 저자는 이 이유가 Degradation을 해결하지 못해서가 아닌 overfitting 문제라고 주장하며 layer층에 비해 데이터규모가 작다고 주장했습니다.


해당 논문을 읽으면서 들 수 있는 생각으로 BN, ReLU 등을 적용하는 순서에 대한 ablation study가 있는지 궁금할 수 있습니다.
여러 순서로 Ablation study를 진행한 후속 논문이 존재하여 궁금하시면 읽어보시면 좋겠습니다.
Identity Mappings in Deep residual Networks : https://arxiv.org/abs/1603.05027
해당 논문에는 skip connection이 역전파 과정에서 gradient flow를 좋게 만든다는 표현도 존재합니다. 이는 Residual 구조가 이론상 첫 역전파에도 맨처음 x에 영향을 줄 수 있으므로 ReLU의 dying ReLU문제도 어느정도 해결한다고 생각합니다. 중간에 gradient가 흐르지 않을 부분이 존재하더라도 skip connection을 통해 gradient가 흐를 수 있어 초기 최적화에 좋은 영향을 주는 것이라 생각합니다.
첫 x-review 인 만큼 부족하거나 빠진 부분이 있으면 질문이나 조언해주시면 감사하겠습니다.

Author: 신 인택

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다