Paper Review

[Paper Review] Deep Residual Learning for Image Recognition (ResNet)

Eugene129 2022. 11. 21. 00:25

본 논문은 2015 년도에 Kaming He 가 작성한 논문이다.

7년이 지난 논문이지만 본 논문의 영향력은 현재까지도 지대하다.

 

일단.. 이 논문은 2022년 10월 기준 약 14만회에 이르는 피인용횟수를 기록하고 있다.

 

 

ResNet 논문의 피인용 횟수가 약 140,000 회에 이르고 있다 !

 

1. ResNet 은 Skip Connection 이라는 개념을 제시했다.

YOLO, Transformer, U-Net 등 여러 최신 딥러닝 모델들은 Skip Connection 을 사용하고 있다.

 

2. ResNet 은 층을 "극단적으로 깊게" 하는 것을 가능케 해주었다. (그것도, 매우 효율적으로)

 

Deep Learning 에서의 "Deep" 을 가능케 해준 것이다.

이로부터, ResNet 이 딥러닝 분야에서 얼마나 중요한 위치에 있는지 가늠할 수 있다.

 

본 리뷰는 독자가 기본적인 FCN, CNN 에 대해서 이해하고 있다고 가정한다.

또한 본 리뷰에는 독자의 이해를 돕기 위한 나의 생각이 첨부되어 있다.

 

FCN 에 대한 이해가 부족하다면 다음 영상을 참고하라.

https://www.youtube.com/watch?v=aircAruvnKk&ab_channel=3Blue1Brown 

 

CNN 에 대한 이해가 부족하다면 다음 블로그를 참고하라. (CNN 을 이해하기에 완벽한 그림들이 첨부되어 있다..!)

https://towardsdatascience.com/a-comprehensive-guide-to-convolutional-neural-networks-the-eli5-way-3bd2b1164a53

 

A Comprehensive Guide to Convolutional Neural Networks — the ELI5 way

Artificial Intelligence has been witnessing a monumental growth in bridging the gap between the capabilities of humans and machines…

towardsdatascience.com

 

그럼 시작해보자 !

논문의 핵심을 먼저 짚고 넘어가는 것이 논문 이해에 도움이 될 것이다.

 

논문의 핵심

  • 문제점 관찰
    • 층을 극단적으로 깊게 하니 정확도가 오히려 떨어졌다.

  • 해결 방법
    • 새로운 신경망 ResNet 을 만들었다.

      • ResNet  층을 깊게 해도 학습이 잘 이루어졌다.

      • ResNet 매우 깊음에도 불구하고, 학습시키기 쉽다.

 

Abstract 와 Introduction 은 모든 단락이 매우 중요한 내용들을 포함하고 있어서 단락 별로 리뷰한다.

Introduction 이후에는 Figures 와 Tables 별로 리뷰한다.


 

Abstract

  • 극단적으로 깊은 신경망의 원활한 최적화를 위해서 어떠한 방법을 썼는지 간략히 소개
    • layers 를 Reformulate 했다고 한다. 잘 와닿지 않는다. 본문에서 자세한 내용을 살펴보자.

 

  • 이 방법으로 실험해보았을 때, 매우 훌륭한 성능을 기록
    • ILSVRC 2015 Classification task 에서 우승
    • ImageNet 데이터셋 뿐만 아니라 CIFAR-10 등 여러 데이터셋에서 실험과 분석을 수행했다.

 

  • 이렇게 성능이 개선된 것이 오직 '층을 깊게 만든 것' 의 영향
    • 실험에 영향을 미칠 수 있는 다른 변수들은 통제한 상태에서 '층의 깊이' 만 다르게 해서 실험을 했나보다.

 

 

 

 

 


Introduction 의 1 번째 단락

  • "Deep convolutional neural netwokrs" 에 대한 기존의 관점을 소개

    • 기존의 관점 : 층을 깊게 하는 것은 효과적이다.

      • 신경망의 성능은 층을 깊게 함으로써 많이 개선되어왔다.

      • 층을 깊게하면, 추출해내는 특징들의 수준이 더욱 풍부해질 수 있다.

      • 최근 ImageNet 에서 좋은 성능을 보여준 모델들은 16~30 층의 깊은 신경망이었다.

 

 


Introduction 의 2 번째 단락

  • 질문 하나를 던진다. "정말로 층을 쌓으면 쌓을수록 학습이 잘 이루어질까?" 답은 NO.

  • 그러나 이 문제가 최근에 해결되었음을 알려주고, 해결한 방법을 언급한다.
    (아래가 이해 안되면 그냥 넘어가자.)
    • 최근 기울기 소실 문제가 알려졌었다.
      • 가중치 초깃값을 평균이 0 이고 표준편차가 1 인 정규 분포로 초기화해왔다.
      • 이렇게 초기화하면 활성화 함수의 출력값이 0 과 1 양 극단에 주로 존재하게 된다는 것이 관찰되었다.
      • 활성화 함수의 출력값이 0 과 1 극단에 존재하면 활성화 함수의 미분 값은 0 에 가깝게 된다.
        (sigmoid 함수의 미분 값을 살펴보자. output * (1-output) 이다.)
      • 그러면, 층이 깊으면 깊을수록 역전파되는 값이 0 에 수렴하게된다. 기울기가 소실되는 것이다.
      • 즉, 학습 자체가 이루어지지 않게 된다.

    • 어쨌든, 해결했다.
      • Xavier Glorot 과 Yoshua Bengio 의 Normalized Initialization 같은 방법으로 해결되었다.

 

그러나... 새로운 문제가 등장한다.


Introduction 의 3 번째 단락

  • "정말로 층을 쌓으면 쌓을수록 성능이 개선될까?"

    • 기울기 소실 문제가 해결되어 일단 학습 자체는 이루어졌다.

    • 그러나 Degradation 문제가 관찰되었다.

      • 신경망의 깊이가 깊어질수록, 정확도가 "포화" 되는 현상이었다.

      • "Training error" 가 증가했으므로, overfitting 때문은 아니었다.

Figure 1 의 왼쪽을 살펴보자. 층을 깊게 했더니 오히려 Training error 가 증가했다. 오른쪽과 같이 Test error 도 증가했다.

 

그럼 뭐가 문제지?


Introduction 의 4 번째 단락

  • 네 번째 단락에서는 문제를 탐색하기 위해 수행한 실험을 설명하고 있다.

  • 이 단락은 그림을 곁들여 설명해야할 것 같다.

 

 

 

 

 

 

 

 

그림 출처 : https://developer.nvidia.com/discover/artificial-neural-network

위의 그림에 나타난 인물이 "Sara" 임을 학습시킨 2개의 FCN 이 있다고 가정해보자.

그 중 하나는 다음과 같은 구조를 가지며 Sara 이미지를 학습했다.

다음 웹 사이트에서 신경망 그림을 그렸다. https://alexlenail.me/NN-SVG/index.html

 

이렇게 학습된 신경망을 그대로 복사해서, 뒤에 레이어들을 추가한다.

 

 

다음 웹 사이트에서 신경망 그림을 그렸다. https://alexlenail.me/NN-SVG/index.html

 

이상적으로는, 추가된 각각의 layer 들이 identity mapping 으로 기능하면 좋겠다.

즉 Identity Function 을 근사해내는 레이어로 최적화된다면 매우 이상적일 것이다.

(Identity Function 이란, input 을 그대로 출력해내는 함수이다.)

그렇다면 이 "Deeper" 신경망도 여전히 Sara 를 올바르게 추론해낼 수 있을 것이다.

 

만약 추가된 layer 들이 Identity Function 을 성공적으로 근사해냈다면,

"Deeper" 신경망은 "Shallower" 신경망보다 성능이 더 좋거나, 최소한 비슷한 성능을 보여주어야 한다.

 

그러나 실험 결과는 그렇지 않았다.

 

Figure 1 의 왼쪽을 살펴보자. 층을 깊게 했더니 오히려 Training error 가 증가했다. 오른쪽과 같이 Test error 도 증가했다.

 

따라서, 이것은 심층 신경망의 최적화 난이도에 관한 문제이다. 매우 Fundamental 한 문제인 것이다.

그저 overfitting 으로 치부할 그런 문제가 아니라는 것이다.

 

(사실 신경망 레이어가 Identity Function 을 근사하도록 하는 것은 쉬운 일이 아니다.

아마도, 추가된 레이어들은 Zero Function 에 가까울 것이다.

왜냐하면 애초에 깊은 신경망에 흐르는 가중치들은 "0" 에 가까워지려는 성질이 있기 때문이다.)

 

그렇다면, 최적화 난이도를 어떻게 낮출 수 있을까?

 


여기서는 5번째 단락과 6번째 단락을 동시에 요약, 설명하겠다.

 

Introduction 의 5 번째 단락

  • 최적화 난이도를 낮추기 위한 방법 제시

    • Residual Mapping

 

 

 

 

 

 

 

 

 

Introduction 의 6 번째 단락

 

  • Shorcut Connections 설명

 

 

 

 

 

 

 

 

 

이쯤에서 한번 짚고 넘어가야할 내용이 있다.

바로 "함수의 정의" 이다.

 

"함수란, 정의역의 원소마다 공역의 원소가 오직 하나씩 대응되는 관계이다"

즉 특정한 input 에 대해서 output 을 일관되게 출력해주는 모든 것이 함수이다.

위의 그림을 보자. Input X 에 대해서 Output H(x) 를 출력해주는 함수 H 가 있다.

이 함수의 출력물인 H(x) = x 라면, 함수 H 는 Identity Function 이다.

input x = output H(x) 이기 때문이다.

 

어떤 레이어가 Identity Function 을 근사해내려면, H(x) = x 로 만들어주는 함수 H 를 근사해내어야 한다.

문제는 위에서 언급한 것처럼 신경망 레이어가 Identiy Function 을 근사해내는 것은 쉬운 일이 아니다.

 

그런데, 만약에 H 가 아니라 H(x) - x 를 학습할 수 있다면?

H(x) - x = F(x) 라고 둘 때, F(x) 를 학습할 수 있다면?

"이상" H(x) 이 아니라 "이상과 현실의 괴리" H(x)-x , 즉 Residual 을 학습하게 되는 것이다.

 

위의 그림을 참고해서 Figure 2 를 조금 변형해보자.

Figure 2 의 그림을 파란색 상자로 가려보았다. 저 파란색 상자는 함수 H 를 나타낸다.

 

저 파란색 상자 속 함수 H 는 F(x) + x 를 나타낼 것이다.

한번 파란색 상자를 제거해보자.

 

함수 H 에 해당하는 연산은 빨간색 원으로, 함수 F 에 해당하는 연산은 파란색 원으로 표시했다.

 

함수 F 는 "Convolution 연산 - ReLu 활성화함수 연산 - Convolution 연산" 으로 이루어져있다.

함수 H 는 "Convolution 연산 - ReLu 활성화함수 연산 - Convolution 연산 - Input x 를 F(x) 에 더해주는 연산" 으로 이루어져 있다.

 

이 때, "Input x 를 F(x) 에 더해주는 연산"은 학습해야할 파라미터가 존재하지 않는, "명령" 이다.

Input x 를 더해주라는 "명령" 일 뿐이다.

 

이렇게 되면 3 가지 효과를 거둘 수 있다.

 

1. 파라미터를 업데이트 할 때, 함수 H 가 아니라 함수 F 를 학습시키게 된다.

H = F(x) + x 에서 + x 에는 학습시킬 파라미터가 없기 때문이다.

함수 F = H - x 이다.

추가적으로 학습해야할 파라미터 없이, 이상과 현실의 괴리인 Residual 을 학습하게 되는 것이다.

 

2. 함수 H 가 Identiy Function 을 근사해내는 것이 쉬워진다.

함수 H = F(x) + x 이므로, F(x) 가 0 이 되기만 하면 H = 0 + x = x 가 되어 H(x) = x 가 된다.

즉 F 를 Zero Function 으로 근사해내면, H 는 Identity Function 이 된다.

Zero Function 을 근사해내는 것은 비교적 쉬운데, 필요한 모든 파라미터가 0 이 되면 되기 때문이다.

(FCN 이든 CNN 이든 그러하다. 결국, 곱해서 더해주는 원리이기 때문에.)

또한 심층 신경망을 흐르는 가중치들은 0 에 가까워지려는 성질이 있기 때문에 Zero Function 은 근사해내기 쉽다.

 

3. 추가적으로 학습해야할 파라미터가 없으므로,

Residual Connections 가 적용되지 않은 "Plain Networks" 와

Residual Connections 가 적용된 "Residual Networks" 간에

공평한 비교를 할 수 있다.

 


Introduction 의 7 번째 ~ 9 번째 단락

 

ResNet 을 구성해 실험한 결과를 요약하고 있다.

  • ResNet 을 사용하면 깊이를 극단적으로 늘리더라도, 최적화하기 쉬웠다.
    • Plain net 은 깊이를 늘렸더니 오히려 Training error 증가했었지.

  • 깊이를 늘릴수록, 정확도가 증가했다.
    • 보고된 신경망 중 역대 최고 성능 기록했다.

  • ImageNet 이든 CIFAR-10 이든 실험 결과 비슷했다.
    • 특정 데이터셋에 국한된 결과가 아니다.

  • 152 층의 엄청난 깊이를 갖는 ResNet 은 역대 최고 깊이이지만,
    VGG net
    보다도 학습할 파라미터 수 적었다.
    • Shortcut Connections 덕분이다.

  • ResNet 으로 다음 대회에서 우승했다.
    • ImageNet detection in ILSVRC 2015
    • ImageNet localization in ILSVRC 2015
    • COCO detection in COCO 2015
    • COCO segmentation in COCO 2015

 

 

 

 

이제부터는 Figures 와 Tables 를 위주로 살펴보자.


Figure 3

 

Figure 3 는 실험에 사용한 Network Architectures 를 VGG-19 와 함께 한눈에 시각화하고 있다.

  • Plain Network
    • Feature map size 가 절반으로 줄었다면,
      filters
      의 수는 2배가 되어서 레이어 마다의 “time complexity” 를 보존해야함. (Inspired by VGG philosophy)

      The time complexity of an algorithm is the number of basic operations, such as multiplications and summations, that the algorithm performs.
 
  • Residual Network = Plain Network + Shortcuts
    • Dimension Staying Shortcuts : Identity Shortcuts
    • Dimension Increasing Shortcuts
      • stride 2 convolution 을 진행할 때는 Height Width 는 축소하고,
        Channel
        수는 늘림

      • 그런데, F(x) + x 연산을 수행하려면
        F(x) x 는 같은 dimensions 를 가져야함.

        F(x) x 의 차원이 같도록 조정해주어야한다 !

        • 방법 1 : Zero padding shortcuts
        • 방법 2 : Projection shortcuts

 

 

 

 

 

 

 

 


Table 1

 

Table 1 은 ImageNet Dataset 에 대한 실험에 사용된 ResNet 모델들의 architecturs 를 layer 깊이에 따라 요약하고 있다.

Table 1. Architectures for ImageNet. Building blocks are shown in brackets (see also Fig. 5), with the numbers of blocks stacked. Downsampling is performed by conv3 1, conv4 1, and conv5 1 with a stride of 2.

 

 

conv2_x 레이어 진입 시 stride 2 로 convolution 을 진행하고, conv3_x 레이어 진입 시 stride 2 로 convolution 을 진행하고,

conv4_x 레이어와 conv5_x 레이어 진입시에도 마찬가지이다.

이는 Figure 3 의 34-layer residual 아키텍쳐를 함께 살펴보면 알 수 있다.

 

그러나 Table 1 을 자세히 보면 의아한 부분이 있다.

conv2_x 든 conv3_x 든 block 내에서 이루어지는 convolution 연산에서는 output size 가 유지되고 있다.

 

Pytorch 소스코드를 살펴보니, 예상한대로 convolution 레이어마다 적절한 횟수의 padding 이 이루어지고 있었다.

pytorch 의 ResNet 소스코드를 살펴보니, block 내 3x3 convolution 연산에서 예상한대로 padding 이 1회 이루어졌다.

 

Table 1 에 padding 횟수 정보를 추가해 수정해보았다.

 

Table 1. padding 정보를 추가해서 수정해보았다.

 


Table 2

 

Table 2ImageNet 2012 Classification Dataset 학습 후의 Validation error 를 요약하고 있다.

  • ImageNet 2012 Classification Dataset 요약
    • 1000 개의 클래스 존재
    • 128만 개의 Training set
    • 5만 개의 Validation set

  • 실험 결과
    • Plain net 에서는 층이 깊어지니 오히려 에러 증가
    • ResNet 에서는 층이 깊어지니 에러 감소

 

 

Figure 4ImageNet 2012 Classification Dataset 학습 시 error 변화 추이를 시각화하고 있다.

 

Figure 4. Training on ImageNet. Thin curves denote training error, and bold curves denote validation error of the center crops. Left: plain networks of 18 and 34 layers. Right: ResNets of 18 and 34 layers. In this plot, the residual networks have no extra parameter compared to their plain counterparts.

 

  • 논문의 저자는 Plain net 을 깊게 했을 때 error 가 증가하는 현상이 기울기 소실 때문은 아니라고 얘기한다.

    • 기울기 소실 문제를 해결해 낸 기법들을 적용했다.

    • 기울기 소실 때문이었다면, 학습 자체가 안 됐어야 한다.
      • 그런데 Plain-34 도 경쟁력 있는 accuracy 를 갖고 있다.
      • 즉, 학습이 되긴 되어서 어느 정도 성능은 나온다.

 

 

위의 Table 2 와 Figure 4 의 결과를 요약해보면 다음과 같다.

 

 

 

  • Degradation problemResidual Learning 으로 해결할 수 있다.
    • ResNet 깊이를 증가시켰을 때, Training error 개선됐고 Validation error 도 개선되었다.

  • Deep 신경망에서 Plain Learning 대비 Residual Learning 의 효과를 증명
    • Plain-34 에 비해 ResNet-34 error 3.5% 감소했다.

  • ResNet 의 최적화 속도가 Plain net 보다 훨씬 빠르다.
    • 신경망 깊지 않으면, Plain net 도 성능 좋다. (27.94 vs 27.88)
    • 그래도 ResNet 써라. 훨씬 빨리 최적화되니까

 


Table 3 ~ 5

 

Shorcut Connections 를 연결해줄 때, Dimension (채널 수) 이 증가한다면

2 가지 방법을 사용해서 Dimension 을 일치시켜줬었다, (Figure 3 설명 참고)

 

  • Zero padding shortcuts : 모든 값이 0 으로 이루어진 채널 추가
    • 학습할 파라미터 없음

  • Projection shortcuts : 1x1 convolution for doubling filter numbers 
    • 학습할 파라미터 존재

 

 

 

 

 

 

 

 

 

 

 

 

Table 3Dimension Increasing Shortcuts 뿐만 아니라 Dimension Staying Shortcuts 에도 위 두 가지 방법을

섞어서 학습 후 Validation error 를 요약해 놓았다.

 


Table 3 의 중간 부분을 살펴보자.

Plain net 과 ResNet-34 A / B / C 를 비교해놓았다.

 

  • Option A
    • Dimension Increasing Shortcuts : Zero padding shortcuts 을 사용
    • Dimension Staying Shortcuts : Identity shortcuts 사용
    • → 모든 shortcuts 에 학습할 파라미터 없음.

  • Option B
    • Dimension Increasing Shortcuts : projection shortcuts 사용
    • Dimension Staying Shortcuts : Identity shortcuts 사용
    • Dimension Increasing 될 때 학습할 파라미터 늘어남

  • Option C
    • Dimension Increasing Shortcuts : projection shortcuts 사용
    • Dimension Staying Shortcuts : projection shortcuts 사용
    • → 모든 Shortcuts 에서 학습할 파라미터 늘어남

 

Table 3 중간부분 결론요약해보면 다음과 같다.

 

  • 어떤 옵션 쓰든, plain-34 보다 성능 개선되었다.
  • B 옵션이 A 보단 결과가 좋았는데,
    A 에서 zero padded 채널들에서 residual learning 이 이루어지지 않았기 때문일 것.

  • A/B/C 간의 차이가 미미하다. Degradation problem 해결하는데 projection shortcuts 필수는 아니다.

  • 나머지 실험들에선 성능 좋고, 가성비 좋은 옵션 B 썼다.

 


Table 3 아래부분을 살펴보자.

 

 

34 layers 보다 많은 레이어를 갖는 ResNet 들도 실험했다.

 

그런데, 사용하던 Building block 을 그대로 사용하려면 학습할 파라미터가 너무 많아졌다.

 

따라서, ResNet-50, ResNet-101, ResNet-152 에는 새로운 Building block 을 사용했다.

 

 

Figure 5 의 오른쪽 그림을 보면, "bottleneck" building block 이 나타나 있다.

bottleneck block 에서는 첫 번째 1x1 convolution 에 의해 채널 수가 줄어든다.

이후 3x3 convolution 을 거친다.

다시 1x1 convolution 을 진행하면서, 채널 수가 회복된다.

 

정말 Bottleneck building block 이 효율적인지 궁금해서 학습 파라미터 수를 비교해보았다.

 

 

확실히 빨간 박스의 building block 보다 파란 박스의 bottleneck building block 의 파라미터 수가 적어 연산이 효율적일 것 같다.

 


Table 3  아래부분 + Table 4 + Table 5 의 결론을 한번에 요악할 수 있다.

 

Table 3, 4, 5

 

 
  • Table 3 아래부분 결론
    • ResNet 은 깊이를 "극단적으로 깊게" 해도 학습이 잘 이루어졌다.
    • ResNet깊이를 깊게할수록 error 가 개선되었다.

  • Table 4 결론
    • ResNet-34 만 가지고도, 역대 최고 single 모델들 다 이겼다
    • ResNet-152 , single 모델만으로 역대 최고 Ensemble 모델들 다 이겼다.

  • Table 5 결론
    • 서로 다른 깊이의 ResNet 6개 통합해 ResNet Ensemble 만들었다.
    • Top-5 error 3.57% 기록하면서 2015 ILSVRC 우승했다. (성능을 26% 개선했다.)

 


Table 6

ImageNet Dataset 뿐만 아니라 CIFAR-10 Dataset 에 대해서도 실험을 진행했다.

 

CIFAR-10 Dataset 에 대해서 저자들은 "간단한 아키텍처"를 의도적으로 사용해 실험했는데,

"훌륭한 결과를 내는 것보다는, 극도로 깊은 심층망의 움직임을 분석하는 데 초점을 두기 위해서" 였다고 한다.

 

CIFAR-10 Dataset 학습에 사용한 "간단한 아키텍쳐" 를 요약해둔 Figure 가 논문에 삽입되어 있다.

위와 같은 간단한 아키텍쳐의 ResNet 으로 CIFAR-10 에 대한 실험을 진행했다.

 

이 그림만 봐서는 잘 와닿지 않아서, 다음과 같이 그려보았다.

 

위와 같은 간단한 아키텍쳐의 ResNet 으로 CIFAR-10 에 대한 실험을 진행했다.

 

실험 결과는 다음과 같았다.

 

 

Table 6 결론

  • Best Classification method 인 FitNet 과 Highway 를 ResNet 으로 크게 이겼다.
  • 더 좋은 성능을 가졌음에도, 학습해야하는 파라미터 수는 훨씬 적었다.

 

Q. 그런데, Table 6 에는 data augmentation 이 수행되었다고 나타나 있다.

FitNet 이랑 Highway 도 data augmentation 해서 학습이 되었던 걸까?

→ 논문 확인 결과, 맞다. 그런데, augmentation 기법은 모델마다 조금씩 달랐다.

 


Figure 6


Figure 6 왼쪽을 살펴보자.

 

Figure 6. Training on CIFAR-10. Dashed lines denote training error, and bold lines denote testing error. Left: plain networks. The error of plain-110 is higher than 60% and not displayed. Middle: ResNets. Right: ResNets with 110 and 1202 layers.

 

 

Figure 6 왼쪽 그림, Figure 4 왼쪽 그림, 그리고 기존의 논문을 통해 다음과 같은 결론을 도출해낼 수 있다.

"깊은 신경망의 optimization difficulty 는 FUNDAMENTAL 한 문제이다."

(overfitting 따위의 문제가 아니다.)

  • Figure 6 왼쪽
    • 깊은 Plain nets 는 증가된 깊이로부터 "suffer" 받으며, 깊어질수록 training error 가 높아진다.

  • Figure 4 왼쪽
    • ImageNet Dataset 에 대해서도, 깊이가 깊어질수록 training error 높아지는 관찰했었다.

  • MNIST 데이터셋에 대해서도 비슷한 현상 관찰한 논문이 보고된 바 있다.
    • R. K. Srivastava, K. Greff, and J. Schmidhuber. Highway networks. arXiv:1505.00387, 2015.

 


 

Figure 6 가운데 그림, Figure 4 오른쪽 그림을 통해서 다음과 같은 결론을 도출해낼 수 있다.

 

Figure 6. Training on CIFAR-10. Dashed lines denote training error, and bold lines denote testing error. Left: plain networks. The error of plain-110 is higher than 60% and not displayed. Middle: ResNets. Right: ResNets with 110 and 1202 layers.

 

"ResNet 은 optimization difficulty 극복했다. 깊이가 증가했을 때 Accuracy 높아졌다."

 

  • Figure 6 가운데
    • ResNet 은 깊이 증가할수록, Training error 와 Testing error 감소했다.
  • Figure 4 오른쪽
    • ImageNet dataset 에 대해서도 비슷한 현상 관찰했었다.

 

 

 

 

 


 

이후에는, n = 200 으로 두어 1202 개의 layers 를 갖는 ResNet 모델을 평가해보았다.

 

Figure 6. Training on CIFAR-10. Dashed lines denote training error, and bold lines denote testing error. Left: plain networks. The error of plain-110 is higher than 60% and not displayed. Middle: ResNets. Right: ResNets with 110 and 1202 layers.

 

ResNet-1202 의 Test error 는 7.93% 로 ResNet-110 의 Test error 보다 높았다.

다만 저자들은 이것이 overfitting 때문일 것이라고 주장하고 있다.

Test error 가 높긴 하지만, ResNet-1202 의 Training error 는 ResNet-110 의 Training error 와 비슷하기 때문이다.

 

저자들은, CIFAR-10 같은 작은 데이터셋을 학습시키기에는 ResNet-1202 가 "불필요하게" 큰 모델일 것이라고 추측하고 있다.

 

또한 Dropout 같은 Regularization 기법 적용해서 후속 연구를 진행하겠다고 언급하고 있다.

 


Figure 7

Figure 7. Standard deviations (std) of layer responses on CIFAR10. The responses are the outputs of each 3×3 layer, after BN and before nonlinearity. Top: the layers are shown in their original order. Bottom: the responses are ranked in descending order.

 

Figure 7 은 layer index 에 따른 각 layer 별 output 들의 표준편차의 그래프이다.

 

저자들은 ResNet 이 residual, 즉 "이상과 현실의 괴리" 를 학습하기 때문에,

Plain net 보다 더 작은 layer responses 가 발생할 것이라고 예상했었다.

 

Figure 7 은 그러한 예상을 지지하고 있다.

 

 


 

 

Table 7, 8

 

Table 7 과 8 에서는 Image Classification task 가 아닌, Object Detection task 에 대해서 ResNet 을 실험했을 때의 결과를 보여준다.


ResNet 으로 다음과 같은 대회에서 우승했음을 밝히고 ResNet 의 우수성을 강조하며 논문을 마무리 하고 있다.

 

ResNet 으로 우승한 대회

  • ImageNet detection in ILSVRC 2015
  • ImageNet localization in ILSVRC 2015
  • COCO detection in COCO 2015
  • COCO segmentation in COCO 2015