심층 신경망은 훈련시키기 더 어렵다. 저자들은 이전보다 훨씬 더 깊은 네트워크를 쉽게 훈련할 수 있도록 Residual 학습 프레임워크를 제시한다. 참조되지 않은 학습 대신 레이어의 input을 참조하여 잔차 함수를 학습하는 것으로 레이어를 재구성한다.
이 논문을 통해 저자들은 residual network가 최적화하기 쉽고, 상당히 증가된 깊이에서 정확도를 얻을 수 있음을 보여주는 포괄적인 경험적 증거를 제공한다.
ImageNet 데이터셋으로 VGGNet보다 9배 더 깊은 152개의 레이어를 사용했지만 여전히 낮은 복잡도를 가진다. residual 네트워크의 앙상블로 ImageNet 테스트 셋에서 3.57%의 error rate를 달성했고, ILSVRC 2015 classification 태스크에서 1위를 달성했다.
추가로 ILSVRC & COCO 2015 competition의 ImageNet detection, localization, COCO detection, segmentation 4개 분야에서도 1위를 달성하였다.
AlexNet과 같은 깊은 컨볼루션 신경망은 image classification에 일련의 혁신을 가져왔다. 깊은 네트워크는 low/mid/high level의 feature와 classifier를 자연스럽게 통합하였고, feature의 레벨은 쌓아진 레이어 수(깊이)에 따라 풍부해질 수 있다.
(당시) 최근 연구에 따르면 네트워크의 깊이가 매우 중요하며, ImageNet에서 성능이 좋았던 구조도 16층에서 30층 깊이의 “매우 깊은” 네트워크였다. 또한 다른 visual recognition 태스크에서도 매우 깊은 모델의 이점을 크게 얻었다.
깊이의 중요성에 따라, 다음과 같은 질문이 생긴다.
이 질문에 답하는 데는 두 가지 장애물이 있다.
1. Convergence Problem
학습 초기부터 수렴을 방해하는 악명 높은 vanishing/exploding gradient problem
이 문제는 수십 개의 레이어가 있는 네트워크가 역전파로 SGD에 대한 수렴을 시작할 수 있도록 한 normalized initialization과 intermediate normalization layers로 다룰 수 있다.
얕은 아키텍처와 더 많은 레이어를 추가하는 더 깊은 아키텍처를 고려해보자. 더 깊은 모델을 구축하는 솔루션이 존재한다 — 추가된 레이어들은 identity mapping이고, 다른 레이어들은 얕은 모델을 복사한 것이다. 이렇게 했을 때 더 깊은 모델이 더 얕은 모델보다 더 높은 training error를 생성하지 않아야 하는데, 실험을 통해 확인했을 때는 그렇지 않았다.
본 논문에서는 deep residual learning framework를 소개함으로써 degradation problem을 다룬다.
원하는 기본 mapping을 라고 한다면, 비선형 레이어가 다른 mapping인 에 맞도록 한다. 그러면 기존 mapping은 로 다시 캐스팅 된다.
저자들은 참조되지 않은 기존 mapping을 최적화하는 것보다 residual mapping을 최적화하는 것이 더 쉽다고 가설을 세운다.
는 “shortcut connection”이 있는 feedforward 신경망에 의해 실현될 수 있다. shortcut connection은 하나 이상의 레이어를 건너뛴다.
논문의 경우, shortcut connection은 간단하게 identity mapping이고, 그 output은 stacked layer의 output에 추가된다.
identity shortcut은 파라미터나 계산 복잡도를 증가시키지 않는다.
전체 네트워크는 여전히 SGD 역전파로 end-to-end로 훈련될 수 있으며, 쉽게 구현할 수 있다.
degradation problem을 보이고, 제안한 방법을 평가하기 위해 ImageNet으로 주로 실험하였고, 실험을 통해 다음 두 가지를 보인다.
CIFAR-10 데이터셋에 실험했을 때도 유사한 현상이 나타나는 것을 보아, 본 논문의 방법이 특정 데이터셋에만 효과가 나타나는 것이 아님을 보였다.
ImageNet classification dataset에서, 매우 깊은 residual 네트워크를 통해 훌륭한 결과를 얻었다. VGGNet보다 9배 더 깊은 152개의 레이어를 사용했지만 여전히 낮은 복잡도를 가진다. residual 네트워크의 앙상블로 ImageNet 테스트 셋에서 3.57%의 top-5 error rate를 달성했고, ILSVRC 2015 classification 태스크에서 1위를 달성했다. 추가로 ILSVRC & COCO 2015 competition의 ImageNet detection, localization, COCO detection, segmentation 4개 분야에서도 1위를 달성하였다.
이는 residual learning의 원리가 일반적이며, 다른 비전, 비전이 아닌 문제에서도 적용 가능할 것으로 기대한다.
를 몇 개의 stacked layer에 맞춰야 하는 기본 mapping으로 간주하고, x를 이러한 레이어 중 첫 번째 레이어에 대한 입력이라고 하자. 그래서 stacked layer가 로 근사할 것이라고 예측하는 대신 이러한 레이어들이 잔차 함수 로 근사하도록 한다. 따라서 기존 함수는 가 되며, 이 방식이 학습에 더 용이하다.
이러한 reformulation은 degradation problem에 대해 직관에 반하는 현상에 의해 동기부여 되었다. 만약 추가한 레이어가 identity mapping으로 구성될 수 있다면, 더 깊은 모델은 더 얕은 모델보다 training error가 크지 않아야 한다. degradation problem은 여러 비선형 레이어를 통해 identity mapping을 근사하는 데 어려움을 겪을 수 있음을 시사한다.
residual learning reformulation을 사용하면 identity mapping이 optimal하다면, 여러 비선형 레이어의 가중치를 0으로 설정하여 identity mapping에 근접할 수 있다.
실제 사례에서 identity mapping이 optimal할 가능성은 낮지만, 이 reformulation은 문제를 전제 조건으로 삼는 데 도움이 될 수 있다. optimal한 함수가 zero mapping보다 identity mapping에 더 가깝다면, 함수를 새로 학습하는 것보다 identity mapping을 참조하여 perturbation을 찾는 것이 더 쉬울 것이다.
저자들은 실험을 통해 학습된 잔차 함수가 일반적으로 작은 response를 갖는다는 것을 보여주며, 이는 identity mapping이 합리적인 전제 조건을 제공한다는 것을 시사한다.
저자들은 모든 몇 개의 stacked layer마다 residual learning을 적용했다. building block은 위의 Fig. 2와 같으며, 이를 수식으로 나타내면 다음과 같다.
x와 y는 각각 레이어의 input, output이다. 함수 는 학습될 residual mapping을 나타낸다.예를 들어 Fig. 2는 두 개의 레이어를 갖고 있고, 이고, 는 ReLU를 나타낸다. (bias는 단순화를 위해 생략됨)
는 shortcut connection과 element-wise operation으로 수행된다. 더한 후에는 ReLU와 같은 second nonlinearity가 적용된다.
공식(1)의 shortcut connection은 파라미터나 계산 복잡성을 증가시키지 않는다. 이 점은 plain과 residual 네트워크를 비교할 때 굉장히 중요한데, 두 네트워크를 같은 수의 파라미터, 깊이, 넓이, 그리고 계산비용으로 공정하게 비교할 수 있기 때문이다.
공식(1) 에서는 와 의 차원이 무조건 같아야 한다. 그렇지 않은 경우(e.g. input과 output 채널을 바꾸는 경우), 차원이 일치하도록 shortcut connection으로 linear projection 을 수행할 수 있다.
공식(1)에서도 를 쓸 수 있지만, degradation problem을 다루기 위해 identity mapping이면 충분하다는 것과 더 경제적이라는 것을 실험으로 보여주기 위해 는 차원을 맞춰줄 때만 사용한다.
잔차 함수 의 형태는 flexible하다. 이 논문에서의 실험은 두세개의 레이어를 가진 함수 를 사용하는데, 더 많은 레이어도 가능하다. 하지만 가 오직 한 개의 레이어만 갖는다면, 공식(1)은 사용하는 데 이점이 없는 linear layer 와 비슷해진다.
또한 위의 표기법은 단순화를 위해 fully connected layer에 대한 것이지만, convolution layer에도 적용할 수 있다. 함수 는 다수의 convolution layer를 나타낼 수 있다. element-wise addition은 채널별로 두 개의 feature map에서 수행된다.
plain baseline은 VGG에서 주로 영감을 받았다. convolutional layer는 대부분 3x3 필터를 갖고, 두 가지의 간단한 design rule을 따른다:
stride 2를 가진 convolutional layer로 downsampling을 진행하며, 네트워크의 끝단에는 global average pooling과 1000개의 클래스로 분류하기 위한 softmax를 가진 fully connected layer가 온다.
주목할 점은 이 모델이 VGG보다 더 적은 수의 필터와 낮은 복잡도를 가진다는 것이다. 34-layer baseline은 3.6B FLOPS를 갖는데, 이는 VGG-19의 18%밖에 되지 않는다.(VGG-19는 19.6B FLOPS)
plain network에 shortcut connection을 삽입하여 residual 버전으로 전환하였다.
identity shortcut은 input과 output이 같은 차원일 때 직접 사용할 수 있다.
차원 수가 증가하면 두 가지 옵션을 고려한다.
두 옵션 모두 shortcut이 두 가지 size의 feature map을 가로지르는 경우, stride 2로 수행된다.
ImageNet에 대한 implementation은 AlexNet과 VGG에서 수행한 방법을 따른다.
이미지의 크기는 스케일 증강을 위해 샘플링된 짧은 쪽으로 리사이즈 된다. 224x224 크기의 크롭이 이미지나 좌우 반전된 이미지에서 랜덤하게 샘플링되며, 픽셀당 평균(per-pixel mean)을 뺀다.
❓ 픽셀당 평균을 빼는 이유
per-pixel mean은 training dataset의 이미지 전체의 픽셀 값에 대한 평균이다.
centering을 해주는 효과가 있으며, 노이즈를 줄여준다.
AlexNet에서 사용한 standard color augmentation을 사용했다. (RGB 픽셀 값들에 PCA를 적용)
각 convolution과 activation 사이에 batch normalization을 적용했다.
가중치 초기화는 He initialization을 사용하였고, optimizer는 SGD, 배치 사이즈는 256을 사용했다. 그리고 learning rate는 0.1부터 시작해서 loss가 떨어지지 않는 경우 10씩 나누어 주었고, 모델은 회까지 반복해서 훈련되었다. weight decay는 0.0001, momentum은 0.9를 사용하였으며 dropout은 사용하지 않았다.
Testing에서는 10-crop testing을 진행하였다. 최상의 결과를 위해 VGG에서처럼 fully convolutional form을 적용했고, 다수의 scale(짧은 쪽이 {224, 256, 384, 480, 640}이 되도록 resize된 이미지)에 대한 score를 평균냈다.
이후 CIFAR-10, MS COCO(다른 vision task)에 대해서도 실험을 진행했고, 모두 상당히 좋은 결과를 낸 것을 확인할 수 있다. 시간 관계상 읽기만 하고 정리는 생략하도록 한다.