📑Paper Review

[paper reivew] Deep Residual Learning for Image Recognition

date
Mar 13, 2023
slug
Deep-Residual-Learning-for-Image-Recognition
author
status
Public
tags
paper
DeepLearning
summary
Keyword : residual network, MS, resnet
type
Post
thumbnail
캡처.PNG
category
📑Paper Review
updatedAt
Sep 6, 2024 02:49 PM

Abstract

1) residual network는 이전 모델보다 깊게 하면서 학습을 용이하게 했다.
- Imagenet dataset에서 152 layer(VGG보다 8배)를 구성했음에도 complexity는 낮았다.
- 3.57% error로 2015 ILSVRC에서 1등했다.
2) deep representation을 구현하여 2015 ILSVRC, 2015 COCO에서 1등 했다.
 

Introduction

1) deep 한 CNN 모델이 최근 좋은 성능을 보여주고 있다.
2) layer를 쌓는 것만큼 좋은 network를 학습하는 것일까?
- vanishing/exploding gradient 문제가 있지만 이는 여러방법으로 보완되고 있다
- 예를 들어, 초기값 normalization, intermediate normalization 등
3) 단순히 deep한 network는 error가 성능이 더 안 좋은 걸 확인할 수 있다.
- 이를 증명하는 실험을 하였다. 기학습된 swallow net에 identity mapping 되는 layer를 추가했는데 이는 identity mapping layer를 추가하지 않은 기학습된 swallow net보다 error가 증가하였다.
* identity mapping layer : layer를 통과하여 나온 output feature가 input feature와 동일하게 되는 layer
4) 이런 문제를 해결하기 위해 deep residual learning framework를 제안
- x라는 input feature가 layer를 거치고 나온 desired feature를 H(x)라 하면, layer 내부에 nonlinear layer만 거치고 나온 feature를 F(x)라 한다. 그리고 F(x) = H(x) - x가 되도록 학습하게 되면 x는 최종적으로 F(x) + x feature가 될 것이다.
* F(x) = H(x) - x에서 F(x) 학습하는 것을 residual learning(잔차 학습)이라 하는데 잔차라는 정의와 비슷한 것 같다.(network 전체가 회귀식으로 볼 수 있고 H(x)는 회귀모델의 예측값이고 x는 실제값이라고 보면…)
** 잔차(residual) : 표본집단 based 회귀모델 예측값과 실제값의 차이
** 오차(error) : 모집단 회귀모델(절대 알 수 없음) 예측값과 실제값의 차이
- x없이 H(x)를 학습하는 것보다 F(x)를 학습하는것이 더 optimize가 잘 될 것이라 가정하였고 잘 되었음. 여러 competition에서 1등 먹음.
5)
notion image
- shortcut connection은 가로질러서 feedforward되는 걸 말하고 결국 상기 block은 identity shortcut connection이 된다. 그냥 쌓은 layer(plain layer)보다 더 성능이 좋았다.
 

Related Work

1) residual representations : VLAD, FIsher Vector
2) shortcut connections : inception
- highway network : shortcut connection을 그냥 더해주는게 아니고 gating function으로 더해준다(LSTM의 gating 개념). 이러한 gate는 data dependent 하고 parameter를 가지고 있다. highway network는 100 layer 이상 깊어질 때 정확도가 증가하지 않았다.
 
  1. Deep residual learning
1) residual learning
- plain한 network는 output이 identity를 reference 못한다(심지어 identity mapping layer를 추가해도 성능이 떨어지는걸 실험으로 보여줬음/2-3설명 참조).
- 그러나 residual network는 identity를 reference 할 수 있다. 극단적으로 identity가 optimal 하다면 residual layer의 weight는 0이 될 것이다.
- H(x)를 추정하는데 아무것도 없이 추정하는 것보다 preconditioning으로 x(identity)를 준다면 성능이 더 좋아질것이다.
 
layer를 거치면서 정보가 소실되는 문제 : weight를 거치면서 소실되고, nonlinear층을 거치면서 더 소실되는 듯
2) identity mapping by shortcuts
notion image
- F는 2개나 3개 layer를 거치며 만약 F(x)와 x(identity feature)가 dimension이 맞지 않을 때는 Ws를 곱해준다. 그리고 F(x)와 x가 더하는 것은 element wise 로 더해준다. 이렇게 더해주는 것은 plain net과 동일한 parameter 수 그리고 동일한 computation complexity를 가진다. 변인통제(parameter수 등)를 했기 때문에 후에 성능비교를 용이하게 해줄 수 있다.
- 수학적 원리
notion image
f는 activation function이며 모델에서는 ReLU를 쓴다. recurrent하게 표현한다면 아래 식과 같이 쓸 수 있다.
notion image
backpropagation을 위해 Xl(small L)의 gradient를 구한다면 아래 식과 같다.
notion image
우측 변에서 XL(large L)의 gradient는 마지막 층이기 때문에 gradient vanishing이 없으며 괄호 안은 1 + 어떤 값(Xl(small L)로 미분한 값들의 합)으로 최소 1을 보장하고 있어 전체적으로 보면 gradient vanishing 문제를 해결할 수 있다.
3) network architectures
notion image
- plain network : VGG based model로 설계했다. input output feature map size가 동일하다면 필터수는 그대로 유지, 반으로 줄어든다면 필터수를 2배로 했다(끝단까지 계속 time complexity를 유지).VGG보다 필터수도 적고 complexity도 적다(FLOP이 VGG의 18%에 불과)
* FLOPs(Floating point of OPeration) : 얼마나 많은 연산(사칙연산, 제곱, 제곱근 등)을 하는지 측정. conv layer의 경우 아래 식과 같이 된다. K는 커널 사이즈
notion image
- residual network : identity와 output feature가 dimension이 동일하다면 그냥 더해주면 되지만 feature map도 줄어들고 차원이 늘어나면 2가지 방법을 고려할 수 있다. 늘어나는 차원만큼 0을 더 넣어줘도 되고(option A) 아니면 1 by 1 conv layer를 곱해줘도 된다(option B / 4-2 식 참조).
4) implementation
- [256,480] 사이에서 scale을 증대시키기 위해 randomly하게 sample
- per-pixel mean substracted
- 224 by 224 crop이 이미지에 대하여 randomly sample
- batch size 256, SGD, learning rate 0.1, error가 local minimum에 빠질 때마다 1/10 해줌. weight decay 0.0001, momentum 0.9
- drop out 안씀
- 10-crop testing 적용. image에 대해서 10번 잘라서 보는 것.(큰 모서리 4번, 작은 모서리 4번, 작은 중앙 1번, 큰 중앙 1번)
notion image

Experiments

1) imagenet classification
- plain networks : 18 layer가 34 layer보다 error가 더 좋게 나온다. 그렇다고 이러한 deep한 network가 gradient vanishing 때문은 아니라고 확인되었다. 아마도 deep plain net은 convergence rate가 exponentially low하게 만드는 것 같다.
notion image
- residual networks : shortcut에 대해서 identity mapping 하고 만약 차원이 달라지는 경우 option A로 적용했다. 아래 결과를 통해서 알수 있는 사실은 deep한 resnet이 error가 낮았다(degradation problem이 잘 해결되었으며 accuracy도 증가). resnet은 error를 빠른 속도로 낮춰준다(converge fast).
notion image
- identity vs projection shortcuts
resnet-34 A : option A처럼 dimension 이 늘어나면 zero padding으로 늘려주기
resnet-34 B : option B처럼 dimension 이 늘어나면 weight 곱해서(1 by 1 conv)로 차원 늘리기
resnet-34 C : dimension 늘어나는 것과 상관없이 identity에 weight 곱하기(1 by 1 conv)
notion image
B가 A보다 조금 나은 건 zero padded dimension은 실질적으로 residual learning이 이루어지지 않았기 때문이다. C가 가장 error가 낮긴 하지만 ABC 모두 큰 차이는 나지는 않는다. (projection shorcut(option C)이 필수는 아니다). complexity, model size측면에서 오히려 손해 보는게 많기 때문에 C는 사용하지 않을 것이다.
- deeper bottleneck architectures : bottleneck resnet 모듈이 더 economical했기 때문에
아래와 같이 bottleneck module로 구성한다. 50/101/152로 구성했다. 위의 그래프 보면 deep 해질수록 error가 낮아진다.
notion image
- 내생각 : feedforward 되면서 원래 feature를 상실하면서 끝단으로 갈수록 원래 feature 정보가 소실됨. 그렇기 때문에 deep한 layer일수록 성능이 안좋게 나왔던 거고 이를 보완해주는게 residual net이다. 또한 이렇게 우리한 가정(상상력 동원)을 가지고 접근하는게 DL model이 black box라서 그러지 않을까.. 누가 추정을 잘하는가(근거에 기반한 상상력 발휘)가 DL 분야에서 나아가는 방법일듯..