9 minute read

Abstract

심층 신경망의 훈련은 어렵다. 이전에 사용했던 네트워크보다 깊은 네트워크를 학습시키기 쉬운 residual learning 프레임워크를 제안한다. 최대 152개의 layer의 깊이를 가진 residual network를 평가한 결과, VGG 네트워크보다 8배 더 깊지만 복잡도는 여전히 낮았다. ResNet의 앙상블은 ImgeNet 테스트 셋에서도 3.57%의 오류를 달성했다. 100, 1000 layer의 CIFAR-10에 대한 분석결과도 보여준다. 나머지도 성능관련된 이야기이기에 생략.

Introduction

심층 신경망은 low/mid/highlevel featur와 classifier를 end-to-ent multilayer 방식으로 자연스럽게 통합하며, 특징의 수준은 쌓인 레이어의 수(깊이)에 따라 강화될 수 있다. 심층 신경망이 많이 활용되고 이점이 많지만 vanshing/exploding gradient 문제가 발생하여 학습의 수렴을 방해한다. 그러나 이 문제는 normalized initialization, intermediate normalization layer들을 통해 대부분 해결되어 이를 통해 수십 개의 layer를 가진 네트워크가 backpropagation를 수행하는 SGD를 사용하여 수렴을 할 수 있었다.

심층 신경망이 수렴을 시작하게 되면 네트워크의 깊이가 증가함에 따라 accuracy가 포화 상태가 되고 그 후 빠르게 성능 저하가 되는 문제가 발생한다. 예상과는 다르게 성능 저하는 오버피팅으로 인한 것이 아니며, layer가 적절히 깊은 모델에 추가되면 높은 training error가 높아진다는 것이 해당 논문의 실험에서 보여주며 Fig1의 예시 그림에 해당 내용이 있다.

image

(학습 정확도의) 성능 저하는 모든 시스템이 최적화하기 쉽지 않다는 것을 나타낸다. 이 논문에서는 deep residual learning framework를 제안함으로 성능저하 문제를 해결한다. 몇 개의 쌓인 layer 각각이 원하는 underlying 매핑에 부합하기를 바라는 것 대신, 명시적으로 layer들이 residual mapping에 부합하도록 만든다.

H(x)로 목표하는 기본 매핑을 표시한다면, stacked된 비선형 레이어가 F(x) := H(X) - X의 다른 매핑에 fitting되도록 하며 원래 매핑은 F(x) + x로 다시 캐스팅된다. 참조되지 않은 원본 매핑을 최적화하는 것보다 residual mapping을 최저고하 하는 것이 더 쉽다는 가설로 접근한다. 극단적으로 identity mapping이 최적해라면 redisul을 0으로 매핑하는 것(F(x)가 0이 되도록 하는 것)이 비선형 계층의 stack으로 identity mapping을 fit하는 것보다 쉬울 것이다.

image F(x) + x는 순전파 신경망의 shortcut connection으로 구현할 수 있다. shortcut connection은 identity mapping을 수행하여 나온 output이 layer들의 출력에 더해진다. identity shorcut connection은 추가 매개변수나 계산의 복잡성을 추가하지 않는다. 전체 네트워크는 여전히 역전파를 수행하는 SGD를 통해 end-to-end로 훈련될 수 있으며, 쉽게 구현할 수 있다.

Deep Residual Learning

3.1 Residual Learning

기본 매핑(underlying mapping, optimal mapping)을 몇몇의 레이어들에게 학습되게 H(x)를 고려하자면, 레이어들의 첫 번째 입력인 x로 표기한다.

여러 개의 비선형 레이어가 점근적으로 복잡한 함수로 근사화 가능하다는 가정하면, 접근적으로 reisdaul 함수로 근사 가능하다는 가정과 동일하다. 즉, H(x) - x이다 (입력과 출력은 같은 차원이라고 가정). 그래서 여러 개의 레이어들을 H(x)로 근사화 하는 것을 기대하기보다 해당 논문에서는 이러한 레이어들을 명시적으로 residual 함수 F(x) := H(x) - x로 근사시킨다. 따라서 원래 함수는 F(x) + x가 된다. 두 형태의 식 모두 점근적으로 원하는 함수로 근사 가능하다 할지라도 학습의 난이도가 다르다.

이러한 reformulation은 성능 저하에 대한 측면에서 보았을 때 직관에 반하는 것처럼 보일 수 있다. (그림 1 왼쪽). introduction에서 얘기했듯이, 추가된 레이어들이 identity 매핑으로 구성될 수 있다면 심층 모델은 더 얕은 모델보다 training error가 크지 않아야 한다. 성능 저하 문제에서는 solver가 여러 개의 비선형 레이어를 통해 identity 매핑을 근사하는 것에 어려움이 있을 수 있다(비선형 레이어가 많은 상황에서 identity 매핑을 학습하는 것 자체가 쉽지 않을 수 있다). residual 학습의 reformulation을 통한 identity 매핑이 최적해라고 가정한다면, 아마 solver는 0으로 설정한 여러 개의 비선형 layer들의 가중치가 identity 매핑으로 근접할 수 있다. 즉, 항상 이전 입력값을 그대로 출력값으로 더해줄 수 있도록 해서 기본적인 identity 매핑을 항상 수행하도록 만듬으로 학습 난이도를 쉽게 만든다.

실제 사례에서는 identity 매핑이 최적해인 경우는 거의 없을 거지만, reformulation은 문제를 전제 precondition으로 삼는데 도움이 될 수 있다. 최적의 함수가 0으로 매핑하는 것보다 identity 매핑에 더 가깝다면 sovler(네트워크)가 새로 학습하는 것보다 identity 매핑을 참조하는 것이 학습하는 것이 더 쉬울 것이다.

3.2 Identity Mapping by Shortcuts

우리는 모든 stacke된 레이어들마다 residual learing을 적용한다. building bok은 Fig2에서 보여지며, 이 논문에서는 building block을 다음과 같이 정의한다:

\[ y = F(x, {W_i}) + W_s X\]

x와 y는 레이어들의 입력과 출력 벡터이다. residual mapping은 함수 \( y = F(x, {W_i}) \)로 나타내며 학습가능하다. 그림 2에서는 레이어 2개를 가지고 있다. \(F = W_2 \sigma (W_1 X) \) 수식에서 시그마는 ReLu를 나타내며 표기를 간소화하기 위해 bias는 생략했다. \(F + x\)는 shortcut connection을 수행하며 element-wise 덧셈이다. 덧셈 후 두 번째 비선형성을 적용했다 즉, \( \sigma(y) \). 비선형성을 적용했다는 말은 activation을 통해 비선형으로 동작하게 만들었다는 뜻이다.

식(1)의 shortcut connection은 추가 매개변수나 계산 복잡성을 유발하지 않는다. 식(1)에서 x와 F의 dimension은 같아야 한다. 그렇지 않은 경우 shortcut connection에 linear projection \( W_s\)을 통해 dimension을 일치시킬 수 있다.

식(1)에서 정방 행렬 \(W_s\)를 사용해야 할 때도 있지만, 본 논문에서는 identity 매핑은 성능 저하 문제를 처리하기에 충분하며 경제적이므로 \(W_s\)는 차수를 매칭시킬 때만 사용했다.

residual function F의 형태는 유연하다. 이 논문에서는 레이어 2개 또는 3개를 가지고 있는 함수 F를 수반(포함)한다(그림 5). 그러나 더 많은 레이어를 건너뛰는 shortcut connection도 가능하다. 그러나 F가 만약 레이어를 하나만 가지고 있다면(즉, 건너뛰는 레이어가 1개라면) 식(1)은 선형 레이어와 유사하다. \( y = W_1X + X \)이 경우 이점이 관찰되지 않았다. image

또한 위 표기는 단순화를 위해 fully-connected layer에 대해 표기한 것이지만 convolutional layer에도 적용이 가능하다. 함수 \(F(x, {W_i})\)는 여러 개의 convolutional layer를 표현가능하다. element-wise 덧셈은 두 개의 feature 맵에서 채널마다 수행된다.

3.3 Network Architecture

plain/residual 네트워크에서 관찰된 일관적인 현상에 대해 설명한다.

Plain Network

해당 논문의 plain baseline(그림 3의 중간)은 주로 VGG net(그림 3의 왼쪽)의 철학에서 영감을 받았다. convolution layer는 대부분 3x3 필터가 있으며 두 가지 간단한 디자인 규칙을 따른다.

  1. 출력 피처맵 크기맵가 동일한 경우 레이어들은 같은 수의 필터 개수를 가진다.
  2. 피처맵 크기가 반으로 줄어들면 레이어당 시간 복잡도를 유지하기 위해 필터의 수는 2배가 된다.

downasmpling은 strde를 2인 convolutional layer로 수행한다. 네트워크는 global average pooling을 하며 소프트맥스가 있는 1000-way fully connected layer를 통해 끝난다. 모든 weighted 레이어의 수는 34이며 그림 3 중간에서 확인할 수 있다.

본 논문의 모델은 VGG 네트워크보다 필터수가 적고 복잡성이 낮다. 34레이어 baseline은 36억 FLOPs으로 VGG-19의 18%(196억 FLOP)에 불과한다.

Residual Network

plain network를 기반으로 shortcut connection을 삽입하였다(그림 3 오른쪽). identity shortcut (식 1)은 입력과 출력의 차원이 같을 때 사용 가능하다. 차원이 증가하면 (그림 3의 dot line shorcut) 두 가지 옵션을 고려한다.

  • (A): shortcut은 똑같이 identity mapping을 수행하며, 차원 증가에 따라 0 padding이 추가된다. 이 옵션은 추가 매개변수가 필요하지 않다.
  • (B): 식2의 projection shortcut를 사용하여 차원수를 일치시킨다. (1x1 컨볼루션으로 수행)

두 옵션 모두 두 가지 크기의 피처맵을 shorcut이 가로지르는 경우 stride는 2로 수행된다.

3.4 Implementation

ImageNet에 대한 해당 논문의 구현은 레퍼런스의 21,42번 논문에 따른다.

  • 이미지는 스케일 어그멘테이션을 위해 [256,480]범위에서 랜덤하게 샘플링되어 짧은 쪽으로 리사이즈된다.
  • 224x224 crop은 픽셀마다 평균을 뺀 상태의 이미지 또는 horizontal flip된 이미지에서 무작위로 샘플링된다[21].
  • 일반적인 색상 어그멘테이션도 사용되었다[21].
  • 각 컨볼루션 연산 후, activation 전에 batch normalization[16]을 적용한다.
  • weight는 [13]의 초기화를 따르며(아마 kaiming he 초기화 방법같은데, pytorch에서 CNN초기화는 기본적으로 kaming 초기화를 따른다.), plain/residual 네트워크 모두 처음부터 학습한다.
  • 미니 배치 크기가 256인 SGD를 사용한다.
  • learning rate는 0.1에서 시작하여 error가 정체되면 10으로 나눈다.
  • 모델은 최대 60x104 iteration까지 학습된다.
  • 0.00001의 weight decay와 모멘텀은 0.9를 상요한다.
  • 드롭아웃은 [16논문]의 사례에 따라 사용하지 않는다.
  • 테스트에서는 비교 연구를 위해 표준 10-crop 테스트를 채택한다.
  • 최상의 결과를 위해[4, 13]에서와 같이 완전 컨볼루션 형식을 채택하고 여러 스케일에서 점수를 평균한다. (이미지 크기는 224,256,384,480,684)에 더 짧은 쪽이 되도록 조정된다.

4. Experiments

4.1 ImageNet Classification

1000개의 클래스로 구성된 ImageNet 2012 분류 데이터 세트를 사용.

  • 128만 개의 훈련 이미지로 모델 학습 및 5만 개의 검증 이미지로 평가.
  • 테스트 서버에서 보고한 10만 개의 테스트 이미지에 대한 최종 결과를 얻음.
  • top-1, top-5 error rate를 모두 평가한다.

Plain Networks

먼저 18층과 34층 plain 네트워크를 평가한다. 34층 순수 네트워크는 그림 3(가운데)에 있고, 18층 순수 네트워크도 비슷한 형태이다. 자세한 아키텍처는 표 1을 참조.

표 2의 결과는 더 깊은 34층 순수 네트워크가 18층 네트워크보다 validation error가 높다는 것을 보여준다. image

그 이유를 밝히기 위해 그림 4(왼쪽)에서 학습 절차 중 training/validation 오류를 비교했다. 18층 일반 네트워크의 solution space는 34층 일반 네트워크의 하위 공간임에도 불구하고 34층 일반 네트워크가 전체 훈련과정에서 높은 학습 오류를 보이는 성능 저하 문제를 관찰할 수 있었다. image

이러한 최적화의 어려움은 그래디언트 소실 문제같지는 않다고 본 논문에서 주장한다. 이러한 일반 네트워크는 BN으로 훈련되어 순방향으로 전파되는 신호가 0이 아닌 편차를 갖도록 보장한다. 또한 역전파된 그라디언트도 BN을 통해 healty한 norm을 나타내는지 확인한다. 따라서 순방향 신호나 역방향 신호 모두 사라지지 않는다.

image 실제로 34층 일반 네트워크는 여전히 경쟁력 있는 정확도를 정확도를 달성할 수 있으며(표 3), 이는 solver(네트워크)가 어느 정도 작동하는 것을 시사한다. 깊은 일반 네트워크는 수렴률이 기하 급수적으로 낮아 학습 오류를 줄이는데 영향을 미칠 수 있다고 추측한다. 이러한 최적화의 어려움에 대한 이유는 향후 연구 예정이다.

Reisdual Networks

image 그 다음은 18-layer, 34-layer ResNet을 평가한다. 베이스라인 아키텍처는 위의 일반 네트워크와 동일하며, (그림. 3의 오른쪽)처럼 shortcut connection이 각 3x3 필터가 페어로 추가될 것으로 예상한다. 첫 번째 비교 분석은(표 2, 그림 4), 모든 shorcut은 identity mapping을 사용했으며 차수를 증가시키기 위해 0-패딩(옵션 A)을 사용했다. 그래서 일반 네트워크와 비교해 추가적인 파라미터가 없다.

저자들은 표 2와 그림 4에서 세 가지 주요 관찰 결과를 말한다.

  • 첫 번째, 34-layer ResNet에서 residual 학습은 18-layer ResNet보다 2.8% 좋은 결과로 원래 상황과는 반대의 상황을 보인다. 더 중요한 것은 34층 ResNet이 훨씬 더 낮은 훈련 오류를 보이며 검증 데이터에 일반화할 수 있다는 점이다.이는 이 설정에서 성능 저하 문제가 잘 해결되고 깊이의 증가로 인한 정확도 향상을 얻을 수 있음을 나타낸다.
  • 두 번째, 일반 레즈넷과 비교했을 때 34-layer 레즈넷은 성공적으로 학습 에러를 줄인 결과 top-1 에러를 3.5% 감소시킨다. 이 비교를 통해 극한적으로 깊은 시스템에서 잔차 학습의 효과를 확인가능하다.
  • 마지막으로 일반/잔차 18-layer(표 2) 네트워크는 비슷한 정확도이지만 18-layer의 레즈넷이 수렴이 더 빠르다(그림 4 왼쪽, 오른쪽). 네트워크가 지나치게 깊지 않은 경우, 현재 SGD 솔버는 여전히 일반 네트워크에 대한 좋은 해를 찾을 수 있다. 이 경우 ResNet은 초기 단계에서 더 빠른 수렴을 제공함으로 최적화를 용이하게 한다.

Identity vs Projection Shortcuts

매개변수가 없는 identity shortcut이 훈련에 도움이 된다는 것을 확인했다. 다음으로는 projection shortcut을 살펴보자(식 2). 표 3에서는 3 가지 옵션을 비교했었다.

  • (A) zero-padding shortcut은 차수 증가를 위해 사용되며 모든 shortcut은 파라미터가 없다 (표 2와 그림 4의 오른쪽과 같다).
  • (B) projection shortcut은 차수 증가에 사용되며 다른 shortcut은 identity이다.
  • (C) 모든 shortcut은 projection이다.

표 3은 세 가지 옵션 모두 일반 네트워크에 비해 좋다는 것을 보여준다. B는 A보다는 조금 괜찮다. A의 제로 패딩 차원에 실제로는 residual learning이 없기 때문이라고 주장한다. C는 미미하게 B보다 좋은데, 저자들은 이것을 많은 projection shorcut(13개)으로 추가 파라미터가 생성되었기 때문이라고 본다. 그러나 A/B/C 간의 작은 차이들은 프로젝션 쇼트컷이 성능저하 문제를 해결하는데 크게 중요하지 않다는 것을 나타낸다. 따라서 저자들은 이 논문의 나머지 부분에서는 메모리/시간 복잡도와 모델 크기를 줄이기 위해 옵션 C를 사용하지 않았다. identity shortcut은 아래에서 설명할 bottleneck 아키텍처의 복잡성을 증가시키지 않기 위해서 특히 중요하다.

Deeper Bottleneck Architectures.

image 다음으로 이미지넷에 대한 딥 네트워크에 대해 설명한다. 훈련 시간에 대한 우려로 인해 building blok을 bottlneck 구조로 변경한다. 각 잔차 함수 F는 2개 대신 3개의 레이어의 스택을 사용한다 (그림 5). 3개의 레이어는 1x1, 3x3 및 1x1 컨볼루션이며, 여기서 1x1 레이어는 차원을 줄인다음 늘리는(복원) 역할을 하므로 3x3 레이어는 더 작은 입력/출력 차원의 병목현상이 발생한다. 그림 5는 두 설계의 시간 복잡성이 비슷한 예시를 보여준다.

매개변수가 없는 identity 쇼트컷은 특히 보틀넥 아키텍처에서 중요하다. identity 쇼트컷(그림 5)가 만약 projection으로 대체되어 있다면, 쇼트컷이 2개의 고차원 끝단에 연결되므로 시간 복잡도와 모델 크기가 2배가 되는 것을 볼 수 있다. 그래서 identity 쇼트컷은 보틀넥 디자인을 위해 보다 효율적인 모델로 이어진다.



동빈나 ResNet 리뷰

image

이상적으로 동작하는 H(x)를 학습하는 것은 어려으므로 이것 대신 F(x)를 이용하자는 것이 핵심이다. input값을 weight layer를 여러 번 거친 결과에 대해 단순히 더해주었더니 결과적으로 학습이 빠르고 정확하게 되었다는 것이다. weight layer를 여러 번 거쳐서 나온 결과값이 F(x)이고 여기에 x를 더한 형태가 의도한 매핑인 H(x)와 같아지는 형태가 되도록 유도해준다. 이를 통해 앞서 학습된 정보는 그대로 가져오고, 거기에 추가적으로 F(x)를 더해주겠다는 것이다. 즉 F(x)라는 잔여한 정보만 추가적으로 학습할 수 있는 형태로 만들어주면 F(x)만 학습시키면 된다. 이는 F(x) + x를 전체 다 학습하는 것보다 훨씬 쉽게 되는 것이다.

image

F를 우측의 \( F = W_2 \sigma (W_{1}X) \) 식으로 정의했다. activation function은 sigma로 표현하며 해당 그림에서는 relu를 사용했다. 즉, 입력값 \(X\)가 들어왔을 때 거기다 first weight값 \(W_1\)을 곱하고 relu activation에 통과시킨 뒤 second weigh 값 \(W_2\)를 곱해준다. 이것이 F(x)함수의 정의의며, 이에 추가적으로 X가 더해지는 것을 확인할 수 있다 그래서 일반적으로 residual block은 다음과 같이 정의된다.

\[ y = F(x, {W_i}) + W_s X\]

단순히 weight값을 2번만 쓰는게 아니라, \( W_i \)처럼 여러 번 사용할 수 있다고 가정을 함. 그래서 multiple convolutional layer라고 가정한다. 그리고 shortcut connection을 통해 기존의 입력값을 결과로 더해주는 것을 확인할 수 있는데, 이 때 입력값의 dimension과 출력값의 dimension이 다를 수도 있기에 \( W_s X\)처럼 linear projection하여 매핑해줄 수 있다.