CS231n 9. CNN Architectures 

0. Abstract 

더 깊은 neural network일 수록 학습시키기 어려운데 residual learning framework를 통해 이전에 모델들보다 더 깊은 네트워크(모델)을 쉽게 학습시킬 수 있게 됐다고 한다. 이때 layer의 입력값(input)을 참조하여 잔차학습(residual learning)을 진행함으로써 layer을 재구성한 것이 특징이다. 이것이 ResNet이 다른 네트워크와 다른 가장 큰 차이점인데, 입력값을 기준으로 잔차함수(residual function)을 학습한다는 것이다.

크게 2가지를 강조하며 Residual 네트워크를 설명한다.

  1. 이 모델이 최적화(optimize)하기 쉽다
  2. 깊이(depth)가 증가하는데도 불구하고 정확도를 얻을 수 있다.

ImageNet dataset에서 152개의 layer을 갖고 있음에도 낮은 복잡도를(1) 가지고 있고 이를 통해 classification task에서 1등을 차지했다(2). 또한 CIFAR 10 dataset에서도 이 두가지 장점을 모두 가지는 것을 확인하여 일반적으로 residual network가 효과적인 것을 증명하고자 한다, 

또 네트워크의 표현의 깊이(depth of representation)가 시각 인식 작업(visual recognition)에서 큰 영향을 미치는데, residual network가 객체인식(object detection)에서 어떤 결과를 가져왔는지 알아보고 얼마나 효과가 있었는지 알아본다. 

1. Introduction 

문제 인식

deep CNN이 이미지 분류(image classification) 작업에서 큰 돌파구가 되었는데 이는 네트워크 앞쪽에서는 low feature을, 뒤쪽에서는 high feature들을 학습할 수 있었기 때문이었고 사람들은 “매우 깊은” 네트워크에 대한 중요성을 파악하기 시작하였다. 

여기서 이 논문을 통과하는 한가지 중요한 질문이 나온다. layer을 단순히 쌓아올리는 것처럼 쉽게 네트워크를 학습시킬 수는 없을까? 하지만 이 질문에 답하는 것에 가장 큰 문제가 vanishing/exploding gradient였다. 이 문제는 back propagation 도중에 학습을 하는데 사용되는 gradinet(기울기)가 소실되어 0이 되거나 발산하여 원활한 학습이 불가능한 경우인데, 이는 normaliztion(데이터의 차원(dimension)을 정규화하여 비슷한 scale로 만듦)을 통해SGD 로 수렴(converge)가능하다.CS231n 6-2. Setting Up the Data and the Loss

하지만 수렴이 시작하게 되면 또 다른 문제가 생기게 되는데 이것이 이 논문에서 가장 중요하게 다루는 degradation problem이다.degradation 문제란 네트워크의 깊이(depth)가 증가할 수록 정확도는 어느 순간 포화(saturate  : 정확도가 향상되다가 어는 순간 일정한 수준에 머묾)되어 정확도가 떨어지기 시작한다. 그리고 이러한 문제가 생기는 것이 놀랍게도 아래 그래프에서와 같이 overfitting 때문이 아니다! overfitting 때문이라면 training error는 낮게 나오고 test error가 높게 나와야하는데, 여기서는 더 깊은 56-layer의 training error와 test error 모두 높게 나온다 CS229 8. Data Splits, Models & Cross-Validation

Thinking

training error와 test error의 분석을 통해 overfitting, underfitting 등의 결론을 내려야함!

그리고 이 degradation 문제는 곧, 최적화시키기 쉽지 않다는 것을 의미한다. shallow 구조와 deeper 구조(shallow 모델 layer에 identity mapping한 layer 추가)의 비교에서 deeper 구조에서 더 적은 training error를 보여야하지만 그렇게 하지 못하고 있다.

문제 해결 방안

이러한 문제를 이 논문에서는 deep residual learning framework를 통해 해결하고 있다! 이때 가장 주요한 컨셉은 A)각 layer이 함수를 직접 학습하는 것이 아니라 B)잔차함수(residual function)을 학습하도록 만드는 것이다. A)기존의 직접 학습하는 함수(기본 함수)를 라고 한다면, B)비선형층들이 학습하는 새로운 함수를 라고 둔다. 이렇게 된다면 A) 본래의 함수는 다시 라고 편현이 가능해지는데 이때 B) 우리는 새로운 함수(residual mapping)을 통해 만든 것이 최적화하기 쉽다고 가정했다. 매우 극단적으로 생각해보면 항등함수(identity function: 입력=출력)가 최적인 상태라면 A) 이 함수를 직접 학습하는 것보다 B) residual을 0으로 만들어 학습하는 것이 훨씬 더 쉽다

A) 각 layer들이 함수를 직접학습(), 최적화 어려움(항등함수에서 비효율적)

B) 각 layer들이 잔차함수(residual function)을 학습 (), 최적화 쉬움(항등함수에서 효율적)

이때 기본 함수 는 하나 혹은 여러개의 layer을 뛰어넘어 연결하는 shortcut connection을 통해 실현이 가능하다. 이 논문에서는 이 shortcut connectionidentity mapping(항등함수 x) 로 만들어  layer의 끝부분에서 합쳐지게 된다.(: residual function : identity mapping) 이때 항등함수로 만들게 될 경우 추가적인 매개변수(parameter)나 연산 복잡도의 증가가 없어 기존의 plain network와 비교가 용이하며 강점을 가진다.

ImageNet과 CIFAR-10에서 가장 좋은 성과를 냈으며(1. 최적화 쉬움 2. 깊은 layer에서도 정확도 높음), 다른 recognition 작업에서도 1등을 달성했다. 이를 통해 residual learnng의 원리가 하나의 특정된 특성이 아니라 일반적으로 효과가 있는 방법이라는 것을 알 수 있다.

Summary

네트워크의 깊이가 중요하다! 질문: layer을 단순히 쌓아올리면 안되나?   문제 1. vanishing/exploding gradients 해결가능(normalization) 수렴 시작 문제 2. degradation problem 이게 이 논문에서 생각하는 가장 큰 문제로 네트워크가 어느정도 깊어지면 성능이 저하됨 (overfitting 때문이 아님) 해결방안: deep residual learning framework

  • 새로운 residual function :최적화 쉬움 
  • 기본 함수 = (residual function) +:(identity mapping) 매개변수, 연산복잡도 증가 X(비교 용이, 장점) 여러 image dataset과 recognition 작업에서 1등을 차지함 residual learning이 일반적으로 효과적인 방법

2. Related work

이 부분에서는 ResNet에 대표적인 2가지 개념, Residual Representation과 Shortcut Connecton이 다른 모델에 적용이 된 경우와, 그 우수성에 대하여 간단하게 설명한다.

Residual Representation

백터 양자화(vector_quantization 고차원 백터 공간을 더 작은 부분 공간으로 분할하여 각 부분을 대표하는 코드북을 만드는 방법으로 데이터 압축, 패턴 인식에 사용)에 있어 기존의 vector을 인코딩하는 것보다 작은 범위 내에 정보가 집중되고, 백터의 값이 작아져 복잡성이 감소하는 residual 인코딩하는 것이 더 효과적이다.

저수준 시각 처리와 컴퓨터 그래픽스에서 PDE(부분 미분 방정식)을 처리할 때 문제를 재구성하는 Multigrid 방법을 사용하여 시스템을 하위 문제로 재구성하여 각각 residual 해결책을 담당한다. 이 방법의 대안으로 두 스케일간의 residual vector만 사용하는 hierarchcal bass preconditioning이 있는데, 이 같은 재구성이나 사전조사화(preconditiong)을 통해 최적화가 단순하고 빠르게 수렴할 수 있다는 것을 알 수 있다

Shortcut Connections

기존의 shortcut connection은 중간 레이어에 보조(auxiliary) 분류기 (classifier)을 직접 연결하여 기울기 문제를 해결하거나inception_module (CS231n 9. CNN Architectures 중 GoogleNet)에서 활용이 되었다.

이 눈문에서는 기존의 highway network와 다른 방식으로 shortcut connection을 사용한다. 크게 두가지 차이점이 존재한다

  1. identity mapping 때문에 parameter 존재X
  2. residual function이 항상 학습 shortcut에는 input으로 들어온 값이 그대로 전해지고, residual function에서만 학습되므로 shortcut에서 학습을 위한 parameter가 존재하지 않는다. 또한 residual function을 통해 정보가 항상 지나가므로 항상 학습이 진행된다는 특징을 가진다. 이 같은 특성으로 인해 highway network와 다르게 깊이가 극단적으로 늘어나게 되더라도 정확도를 얻을 수 있다(뒤에 나옴)

Summary

이 논문에서 다루는 network가 기존의 network와 구별되는 점은 크게 Residual Representation(preconditioning)과 Shortcut Connection으로 이 특성을 통해 더 빠르고 단순하게 학습이 가능하고 깊이가 늘어나더라도 정확도를 얻을 수 있다.

3. Deep Residual Learning

ResNet이 어떤 아이디어를 가지고 기획이 되었고, 이 네트워크의 구조와 설계 방식에 대해서 알아본다.

3-1. Residual Learning

Introduction에서 문제해결방과 2-1. Residual Representation 안에서 다뤘던 내용과 겹치는 내용이다. 를 몇개의 layer들이 쌓인 기본적인 함수라고 둔다. 이때 이러한 여러개의 비순차적 layer(multiple nonlinear layer)들이 점근적으로 복잡한 함수를 근사할 수 있다고 가정해보면 이것은 곧 비순차적인 layer들이 점근적으로 residual function(H(x)-x)을 근사할 수 있다고 할 수 있다. (형태만 다를 뿐 결과적으로 같은 것을 근사하는 것이기 때문에 이렇게 가정했다). 결국 두 가지 형태 ( VS ) 모두 점근적으로 필요로 하는 함수를 학습시킬 수 있지만 학습의 난이도는 다음과 같은 이유 때문에 다를 것이다

  1. degradation 문제: 앞서말한 degradation 문제는 여러개의 비순차적 layer들이 쌓이면 이것을 학습시키기 어렵다는 것인데 , residual mapping으로 재구성하고 residual 함수가 이미 최적화되었다면 그저 함수안에 weight만 0으로 만들어 항등함수(identitiy mapping)을 진행하면 됨
  2. 항등함수의 장점: 만약 우리가 찾고자 하는 최적함수가 항등함수(identity mapping)과 가깝다면 편차(residual)을 이용해 학습하는 것이 쉽다. 또한 이러한 residual function은 더 적은 만응을 보여 합리적인 사전조사화(preconditioning) 을 보임

Summary

Residual learning의 장점 : 1. degradation 문제 해결(정확도) + 2. 항등함수를 통해 학습의 쉬움(preconditioning)

3-2. Identity Mapping by Shortcuts

MS팀은 몇몇 layer마다 residual 학습을 하도록 설계를 했는데 다음과 같은 형태로 구성을 했다

이때 +x는 항등함수를 의미하고 F는 residual 함수를 의미하며 ReLU 를 의미한다. 이때 shortcut과 항등함수를 합치는 것은 같은 차원일 때 가능하며 행렬 덧셈 연산으로 진행한다.(element wise) 이때 위 식에서도 알 수 있듯이 shortcut connection은 parmaeter와 연산 복잡도가 존재하지 않는다. 이것은 실제 연산에서 큰 도움이 될 뿐 아니라 plain network와 비교를 할 때 parameter같은 변수를 상수로 만들어, 이 네트워크가 같은 조건에서 얼마나 효과적인지 비교가 가능하게 만든다.

Thinking

다른 네트워크와 비교할 때, parameter나 깊이가 다르면 당연히 성능의 차이가 생기게 된다. 위와 같이 특정 변수가 전체 결과에 영향을 미치는 것을 확인해보고 싶을 때, 다른 변수들을 고정시켜놓는 설정을 해야한다. 다만, 여기서는 단순히 다른 변수들을 고정시키는 것이 아니라 resdiual이라는 새로운 개념을 투입시켰는데도 똑같은 환경을 만들어 다른 변수들을 고정시킨 것이 신기하게 다가오고 배우면 좋을 기술이라고 생각했다

3-3 Network Architecture

이 논문에서 residual net의 성능을 알아보기 위해 plain net과의 비교를 진행하였다.

  • Plain Network :VGG 의 영향을 받아 3X3 filters을 사용하며, 같은 feature map size인 경우 layer들을 같은 filter들을 사용했고, feature map size가 반으로 줄 때 마다 filter의 개수는 2배로 늘림(일관된 복잡도를 만듦). 이렇게 만듦으로써 VGG net보다 더 적은 filter을 사용해 더 낮은 복잡도를 달성함
  • Residual Network : 앞서 언급한 plain network에 shortcut connection을 추가한 경우다. 이때 shortcut에서 input과 output이 같은 차원이어야만 하는데 만약 차원이 증가할 경우

A) shortcut에서 늘어난 차원만큼 0으로 채우거나 B) 위에서 언급한 를 이용하여 projection을 진행해야한다(1X1 convo)

Summary

plain network VS residual network = (A: zero-padding / B: projection)

3-4. Implementation

ResNet은 다음과 같이 설계가 되었다.

  1. scale augementation(크기 변화를 통한 데이터 증강)을 위해 (256,480)으로 추출한다
  2. 224X224 사이즈로 무작위하게 crop을 진행(이미지의 특정 부분을 잘라내는 작업)
  3. standard color augmentation 적용
  4. batch_normalization 적용하여 scale을 조절(activation 함수 전에)
  5. He 방법으로 가중치 초기화(상대적인 값에 따라 초기화한 뒤 ReLU에서 데이터의 반이 날라가는 것을 해결한 방법) CS231n 6-2. Setting Up the Data and the Loss
  6. SGD optimizer을 사용하고 0.1 learning rate에서 시작, momentum 0.9 사용함
  7. dropuput 미사용 이후 테스트 단계에서 10 cross validation이 적용되어 resize후 평균 점수를 계싼한다

4. Experiments

4-1. ImageNet Classification

ImageNet 2012 classification dataset을 이용하여 학습을 진행한 후 10만개의 test image를 이용해 최종 결과를 얻은 후 top-1 error rate(예측한 가장 높은 확률의 클래스가 실제 클래와 일치하지 않는 비율로 가장 정확한 예측을 평가하기 위해 사용)과 top-5 error rate(모델이 예측한 상위 5개의 class 중 하나라도 실제 클래스와 일치하지않는 비율로 전체적인 예측 능력을 포괄적으로 확인하기 위해 사용)을 통해 평가를 진행했다

Plain Network

3.Network Architecture에서 언급했던 plain network에 대한 성능 보면 18-layer로 이루어진 network보다 34-layer로 이루어진 network에서 validation error가 높아 기존의 degradation 문제를 해결하지 못한 것을 알 수 있다.

이런 degradation 문제는 vanishing gradient(기울기 소실) 때문이라고 볼 수 없다. 위 3-4. Implementation에서 언급했다 싶어batch_normalization 을 이용하여 activation function에 들어가기 전에 정규화(0~1)시켜 propagate와 backpropagate gradient가 원활하게 진행할 수 있게 만들었기 때문이다. 이런 문제점에도 불구하고 34-layer network는 어느정도의 정확도를 얻었다.

즉, gradient 문제 아님 + 어느정도의 정확도 유지 한 것을 통해 이 팀은 이 network가 매우 느린 수렴 속도를 가진 것으로 추측을 했다. 어느정도의 정확도가 있었다는 뜻은 아직 학습이 진행 중이라고 생각을 했으며 이렇게 느린 수렴 속도가 training error를 효과적으로 줄이지는 못했다고 본 것 같다. 이 이유에 대해서는 추후 연구 예정이다.

Residual Network

residual network에서 34-layer network를 만들 때 shortcut connection은 identitiy mapping을 사용하고 늘어난 차원에세 대해 A)zero-padding 방법을 사용하여 plain network와 비교했을 때 추가적인 parameter을 생성하지 않아 비교하기 용이하게 했다

여기서 이 팀은 매우 주요한 관찰을 할 수 있었는데 바로 34-layer network가 18-layer network보다 training error와 validation error 모두 더 낮게 나와 degradation 문제를 해결한 것이다! 즉, 더 증가한 깊이(depth)에도 불구하고 더 높은 정확도를 얻었다! (top-1 error을 3%가량 줄임)

이에 더해 ResNet이 더 빠르게 수렴(converge)을 한 것을 통해 최적화(optimization)이 더 쉽다는 것도 확인이 되었다. 즉, 논문에서 맨 처음 말했던 2가지 ResNet의 특징: 정확도 + 쉬움(빠름)을 증명하는 결과였다

Summary

Plain network: 여전히 degradation 문제가 생김 gradient 문제아님(batch normaization) + 경쟁력있는 정확도 = network의 수렴 속도가 매우 느려 생긴 결과 Residual network: degradation 문제 해결(정확도) = 더 깊은 network가 더 높은 정확도 + 더 빠른 수렴 속도(쉬움)

Identity VS Projection Shortcuts

앞선 결과에서 알 수 있다싶이 identity mapping을 통한 네트워크는 학습에 도움이 된 것 되었다. 그렇다면 다른 종류인 projection shortcut은 효과가 있을까? 3가지 종류의 projection shortcut이 있다. A) zero-padding + 모든 shortcut parameter free (차원을 키워줄 떄) = residual X B) projection shortcut(차원을 키워줄 때만 사용) + 다른 shortcut은 identiy = residual O C) 모든 shortcut이 identity = residual O + parameter

결과적으로 A,B,C 모두 plain network 보다는 더 좋은 성능을 가졌고 A<B< C 순으로 나타났다. 이때 A가 가장 낮은 이유는 zero-padding이 되면 항상 input 값이 0이고 이 뜻은 학습할 잔차(residual)이 없기 때문에 residual learning이 이뤄지지 않아 가장 정확도가 낮다(인데 x=0이고 H(x)도 0이 됨 즉, 입력과 출력 간의 차이인 잔차를 학습할 것이 없다! ) C의 경우는 추가적인 parameter가 추가되었기 떄문에 학습에 더 유리하여 정확도가 높게 나왔다.

결론적으로 A,B,C의 큰 차이가 없고 degradation 문제에 필수적인 요소가 아니라는 뜻이다. 그렇기 때문에 공간,시간복잡도와 모델의 크기를 줄이기 위해 C 방법을 사용하지 않을 것이고 아래에 언급되어있는 bottleneck 구조를 위해 복잡도가 증가하지 않는 identity shortcut을 중요시하며 사용했다.

Summary

identity mapping 효과 있음 projection shortcut 효과 있을까? A: 차이는 있었지만 degradation 문제에 필수적 요소X, 복잡도를 증가시키지 않는 identity shortcut을 앞으로 나올 bottleneck 구조에 사용할 예정!

Deeper Bottleneck Architectures

더 깊은 network를 위해서는 training time을 우리가 견딜 수 있을만큼으로 줄여야하는데 이를 위해bottleneck 구조로 network를 바꿨다. (이 구조를 사용하지 않아도 깊이가 증가할 수록 정확도도 증가하지만 bottleneck 구조만큼 경제적이지 않음) 가장 큰 특징은 residual function 가 2개의 layer 대신 3개의 layer을 쌓아올리는 것으로 각 layer의 특징은 다음과 같으며 비슷한 시간복잡도를 보여준다

  1. 1X1 layer : input feature map에서 channel의 수를 줄여 연산량을 크게 줄여주는 역할
  2. 3X3 layer : 실제 convoution 연산을 수행하며 공간적 특징을 추출해남
  3. 1X1 layer : 결과로 나온 channel의 수를 다시 원래의 크기로 확장

1X1 layer가 어떻게 연산량을 줄여?

채널(channel): 각 픽셀 위치에서 여러 feature map의 결과를 의미 어찌보면 feature map의 z축? 입력 채널: 이미지/ feature map의 각 위체에서 여러값들 (ex:RGB 이미지에서는 3채널) 출력 채널: convolutional layer가 생성한 여러 feature map ex) 예를 들어 32X32 크기의 RGB 이미지(3채널)에서 convolutional layer이 3X3 크기의 filter 64개를 사용한다면 , 각 필터는 3X3X3개의 가충치를 가지고, 출력은 32X32크기의 64개의 채널이 됨 따라서 32X32 크기의 이미지가 256개의 채널을 사용하는데 1X1 convolutional layer이 64개의 filter을 사용한다면 각 1X1 filter는 256개의 입력 채널에 대해 각각 하나의 가중치를 갖고 결과적으로, 32X32 크기의 64개 채널이 됨. 이렇게 만든 후의 convolution 연산을 진행하는 것이 더 효과적

또한 Identity VS Projection shortcut에서 얘기했다싶이, projection shortcut을 사용하게 될 경우, dimension(특성맵의 차원)이 2배로 증가하는 경우, 시간복잡도와 모델의 크기가 두배로 가지기 때문에 parameter가 없는 identity mapping를 사용하는 것이 매우 중요하다! 밑에 사진에서 점선이 dimension이 증가하는 부분!

  • 50-layer ResNet: 기존에 2layer씩 묶어 residual learning을 진행한 34-layer짜리 network를 3-layer bottleneck 블럭으로 바꾸어서 만들었다. (34X1.5) 이때 차원의 증가는 위의 B방법(차원을 키워줄 때만 projection)하는 방법을 사용하였다. 총 38억개의FLOPs(1초당 수행되는 부동소수점점 연산의 수수를 가진다.(FLOP이 많을 수록 더 복잡함)
  • 101-layer & 152-layer ResNet: 더 많은 3-layer bottleneck 블럭을 통해 깊이를 더 높이고, 이렇게 깊이가 늘어났음데 VGG net보다 더 적은 FLOPs를 가져 더 낮은 복잡도를 가졌다(110억 VS 150억)

그 결과 50,101,152-layer ResNets들이 34-layer net보다 더 정확하였고 degradation 문제도 생기지 않았다! 또한 이 당시 최선의 기술(State-of-the-art method)보다 더 경쟁력있다는 것을 4.49%의 top-5 validation error을 보여준 152-layer ResNet을 통해 알 수 있었고 서로 다른 깊이의 6개 모델들을 앙상블을 통해 가장 낮은 3.57%의 top-5 error을 보여줬다

Bottleneck

더 깊은 network 원함 training time 줄여야함 bottleneck network! (1X1,3X3,1X1) = 1X1 layer을 이용해 연산량을 줄임 + identity shortcut(parameterX) 50, 101, 152-layer ResNet에서도 degradation 문제들이 생기지 않았고 이를 통해 Residual Learning이 전반적으로 효과가 있으며 bottleneck 구조가 복잡도도 낮출 수 있다는 것을 알 수 있다. 이를 통해 최적의 학습 모델을 만들 수 있었다.

4-2. CIFAR-10 and Analysis

ImageNet dataset 뿐만 아니라 CIFAR-10 데이터셋에 대해서도 학습을 진행했다. 모델의 구성 방법은 위의 3-4.Implementation에서 다룬 내용과 유사하며 요약하자면 3X3 convoultional layer로 구성된 스택을 사용하고, 각 스테이지마다 feature map의 크기를 줄이고 필터의 수를 늘려서 구성했다.(총 layer 수: 6n+2)

ImageNet에서의 결과와 유사하게 plain network에서는 layer이 증가함에 따라 training error가 증가하여 제대로 최적화를 하지 못해 degradation 문제를 겪고 있는 것을 알 수 있다. 반면에 ResNet은 정확도가 증가하였는데 깊이가 늘어나도 제대로 최적화가 가능하다는 것을 알 수 있다.

또한 n=18로, 총 110-layer ResNet의 경우 처음의 learning rate만 조정을 하면 더 적은 매개변수를 이용해서 이 당시 최선의 기술로 만든 네트워크의 성능을 뛰어넘었다. (0.1로 설정했는데 몇 epoch이 지나서야 학습이 시작되어 처음에만 0.01로 만들어놓고 시작,다만 0.1로 해둬 비슷한 정확도를 얻음)

Analysis of Layer Response

layer의 반응(response)의 표준편차를 통해 ResNet의 효율성을 입증하였다. 이때 말하는 반응(response)는 Batch Normalization 이후에 3X3 layer의 결과물로 activation function이 적용되기 전 단계이며 resdiual function의 반응 강도를 알 수 있다 . 실제로 ResNet에서 plain network보다 일반적으로 적은 반응(response) 이 나타났고 이것은 non-residual function보다 0에 가깝다는 것을 의미한다. 또한 아래 사진에서와 같이 layer이 증가할 수록 오히려 signal을 적게 바꾼다는 것을 알 수 있다. (학습이 거의 완료되어 학습이 크게 일어나지 않아 residual이 0인 값 증가) 즉, residual => 차이만 function에 들어감 => 값이 0에 가까움 => 반응(response) 줄어듦

Exploring Over 1000 layers

”지금까지 layer을 늘렸을 때 성능이 증가했으니, layer을 극단적으로 늘려도 되지 않을까”라는 생각으로 n=200인 1202-layer network를 만들어본 듯하다. 실제로 최적화하는데 어려움이 없었을 뿐 아니라 training error와 test error 모두 괜찮은 값을 얻었다.

하지만 1202-layer network가 비슷한 training error임에도 110-layer network보다 성능이 좋지 않았는데 그렇다고 해서 이게 degradation 문제는 아니였다. degradation 문제는 training error도 높고 제대로 최적화가 되지를 않았지만 여기에서는 training error는 낮았고 최적화가 됐기 때문이다.

여기서 말하는 문제는 overfitting이였고 과적합되어 실제 성능이 낮아지게 된 것이다. 자세한 내용은 CS229 9. Approx, Estimator Error & ERM 을 참고하면 된다. 결국 이 CIFAR-10 dataset을 학습시키기에 네트워크가 너무 컸고 제대로 학습시키기 위해서는Maxout 이나dropout 같은 해결책이 필요하지만 이 논문에서는 간결함을 유지하기 위해 이를 사용하고 있지 않다. 추후에 위와 같은 강력한 regularization을 통해 결과를 향상시킬 수 있다고 시사하고 있다

Summary

CIFAR-10 dataset에서도 ResNet은 degrading 문제를 가지지 않아서 일반적으로 적용될 수 있는 모델임을 한번 더 강조 + layer response가 낮다는 것을 통해 residual learning이 효율적 1000 layer이 넘어가면 성능이 안좋아지는데 이는 degradation 문제가 아니라 overfitting 된 것이고 regularization등을 통해 해결 가능할 것을 시사

4-3. Object Detection on PASCAL and MS COCO

이 눈문에서는 지금까지 4-1, 4-2에서 다뤘던 ImageNet, CIFAR-10과 같은 classification 뿐만 아니라 다른 인식 과제인 object-detection에서도 우수한 성과를 보인다는 것을 통해 ResNet이 일반적으로 사용이 가능하다는 것을 보여주고 있다. 탐지 방법(detection method)를 Faster R-CNN(물체 탐지 알고리즘으로 이미지에서 객체를 인식하고 위치를 찾아냄)을 사용하고 VGG-16과 동일한 탐지 방식을 사용하여 효과적으로 비교가 가능하게 만들었다. 그 결과 VGG-16보다 더 나은 결과를 얻었는데 이는 오직 learned representation(학습된 표현, 데이터로부터 학습한 특징,표현) 때문이며 network 차이에 기인한다.

결론적으로 ResNet은 classification 뿐 아니라 object-detection에서도 가장 우수한 성과를 얻었으며 일반적으로 적용이 가능한 효과적인 모델이라는 것을 말하고 있다.

Appendix

A. Object Detection Baseline

Faster R-CNN 기반의 물체 탐지 방법에 대해서 다루고 있다. 먼저 위에서 사용했던 ImageNet classification 모델로 초기화를 한 뒤에 물체 탐지(object detection) 데이터를 기반으로 미세조정(fine-tuning)을 진행했다. 자세한 내용은 다음글을 참고faster_R-CNN CS231n 11. Detection & Segmentation

위에서 언급했듯이 VGG-16 모델과 비교를 하게 되는데 가장 큰 차이점은 ResNet은 숨겨진 fully-connected layer이 없기 때문에 “Networks on COnv feature maps” 방식을 채택했다. 이때 stride가 16픽셀 이하인 레이어를 사용해 전체 이미지를 공유하는 feature map을 만들었고 이것이 곧 VGG-16의 13 conv-layer와 유사하게 취급되어 결국 동일한 stride(16픽셀)을 가지는 feature map을 생성했다. (위에서 언급했다싶이 VGG와 동일한 탐지방식으로 만들어 비교를 하기 위해) 결국 RPN(영역제안 네트워크)과 Fast R-CNN 네트워크가 이러한 feature map을 공유한다.

RoI pooling은 conv5이전에 수행되며 이 이후의 모든 레이어를 각 영역에 대해 사용하여 VGG-16의 fully connected layer을 역할을 한다

또 batch normalization을 사용했기 때문에

Summary

fully connected layer & RoI pooling

  • VGG-16: 포함되어 있으며 이를 이용해 feature map을 백터로 만든다
  • ResNet: 포함되어 있지 않으며 NoC 방법을 통해 conv5_x RoI를 진행한 이후의 covolution layer가 그 역할을 대신함

구조:

  • VGG 16: 13개의 convolution layer을 사용
  • ResNet: 91개의 convolution을 사용하며 residual block 사용

최종 분류 및 회귀:

  • VGG-16: fully connected layer 사용
  • ResNet: conv layer에서 두개의 sibling layer(분류, 박스 회귀)로 대체하여 수행