논문 링크 : Deep Residual Learning for Image Recognition
residual learning framework
제시residual function
으로 layer를 재구성최적화
가 쉽고, 깊은 모델에서 정확도
를 얻기 쉬움을 실험적으로 증명Network Depth
Deep network는 low/mid/high level feature를 통합하여 분류한다. 모델의 깊이가 깊어질수록 feature의 level(추상화 정도)이 높아진다. (high level feature는 깊은 layer에서 추출 가능)
VGG, GoogLeNet과 같은 모델은 network depth
가 중요한 문제임을 증명했다. 적지 않은 visual recognition task에서 depth가 깊은 모델이 성능이 좋았다.
깊은 모델 학습의 어려움
"Is learning better networks as easy as stacking more layers?"
= 깊은 네트워크를 학습시키는 것이 쉬운가?
깊은 네트워크를 학습시킬 때는vanishing/exploding gradients
,degradation problem
이 발생할 수 있다.
vanishing/exploding gradients
는 학습 시작부터 convergence
(weight가 최적 값으로 수렴)를 방해한다. 그러나 normalized initialization
과 intermediate normalization layers
를 사용하면 수십층의 network도 SGD와 역전파를 이용해 convergence할 수 있다.
- normalized initialization : xavier initialization, He Initialization과 같이 가중치가 특정 분포를 따르게 초기화하는 방법
- intermediate normalization layers : batch normalize와 같이 network에 일정 간격으로 삽입되는 정규화
degradation
이라고 한다.optimize가 어려움
을 보여준다. 깊은 모델 만드는 방법
shallower architecture와 이에 대응되는 deeper architecture를 가정하자. deepter model은 shallower architecture에 identity mapping을 추가하여 만든다. Identity layer
(입력과 출력 동일)만 추가하였으므로 training error가 shallower model보다 높으면 안된다. 그러나 실험 결과 이 방법은 shallower model과 비슷하거나 좋은 결과를 내지 못하거나 시간내에 찾지 못하였다.
Deep residual learning framework
이 논문에서는 degradation 문제를 해결하기 위해 deep residual learning framework를 소개한다.
위와 같이 기존의 mapping을 라고 하자.
(기존 network 학습은 x를 타겟(y)로 매핑하는 함수 H(x)를 학습하는 것이었다.)
nonlinear layers 매핑(residual mapping)인 을 제시한다. 가 된다.Residual mapping이 기존 mapping보다 더 optimize하기 쉽다고 가정한다. 극단적으로 identity mapping이 최적일 때 를 0으로 만드는 것이 여러 nonlinear layer를 identity mapping으로 만드는 것보다 쉽다.
는 위의 그림과 같이 여러 층을 skip하는 shortcut connection
을 가지는 network가 된다. Identity shortcut connection은 추가적인 parameter와 연산이 필요하지 않다. 전체적인 network는 SGD와 역전파를 통해 학습 가능하다.
Comprehensive experiments
Comprehensive experiments를 통해 다음과 같은 내용을 보여준다.
Data set
ImageNet뿐만 아니라 CIFAR-10에서도 optimization 어려움이 발생하는 것으로 봐서 특정 데이터에 국한된 문제가 아니다.
결과
→ Good reformulation
이나 preconditioning
은 optimization을 간소화 한다.
Shortcur connection는 오랫동안 연구됐다. Inception layer는 shortcut branch와 deeper branches로 이루어진다. Highway network는 gating funtion을 사용한 shorcut connection을 제시한다. gate가 닫히면 non-residual function이 되는 hightway network와 달리 Identity shorcut
은 항상 redisual function을 학습한며 추가적인 parameter가 필요없다.
(Residual mapping)
를 few stacked layer의 mapping이라고 하자. 만약 multiple nonlinear layers가 점근적으로 복잡한 함수를 근사할 수 있다면 도 근사할 수 있다. 따라서 우리는 few stacked layer가 를 근사하도록 한다.
Identity mapping
Introduction에서 Degradation 문제를 해결하기 위해 Shallow architecture에 Identity mapping을 추가하여 깊은 모델을 만드는 방법을 이야기 했다. 이 방법은 기존의 shallow한 모델보다 좋은 성능을 보이지 못했다. 이는 multiple nonlinear layers가 Identity mapping을 근사하기 어려움을 보여준다.
Residual function에서는 단순히 weight를 0으로 만들어 Identity mapping을 쉽게 근사할 수 있다. 실제로 Identity mapping이 optimal일 가능성은 적지만, 문제의 precondition을 제공한다. 만약 optimal이 zero보다 Identity에 가깝다면 Identity mapping을 참고하여 학습하는 것이 새로 학습하는 것보다 쉽다.
학습된 residual function에서는 일반적으로 작은 response를 보인다. 이는 identity mapping이 합리적인 preconditioning을 제공함을 보여준다.
저자들은 처음부터 학습하는 것보다 identity mapping에서 학습하는 것이 유리하다다고 주장한다. Residual function이 작은 response를 보인다는 것은 학습할 것이 적다는 말로 위의 그래프는 저자들의 주장을 뒷받침하는 자료가 된다.
Building block
이 논문에서는 building block을 위의 수식과 같이 정의한다. 는 shortcut connection
으로 동작하고 마지막 더하기는 element-wise 덧셈
이다. 마지막 layer에서는 출력값과 x 값을 더하고 나서 ReLU를 적용한다. F를 구성하는 layer 개수는 flexible
하다. 다만 1개의 layer로 이루어진 경우는 linear layer가 되어 효과가 사라지므로 2개 이상의 layer
로 구성하는 것이 좋다.
Identity mapping은 추가적인 parameter와 연산이 필요하지 않아 plane/residual network를 공평하게(depth, width, param, computational cost) 비교할 수 있다.
Dimesion
Identity mapping만으로도 degradation 문제를 다루기에는 충분하다. 하지만 입력과 출력의 dimension이 변경되는 경우에는 위와 같이 Ws을 곱하여 dimension을 맞춘 후 더해준다.
Convolutional network
위의 식은 Fully-connected layer처럼 표기하였지만 Convolutional layer에서도 적용가능하다. Element-wise addition은 channel별로 수행된다.
ImageNet에 대해 2가지 모델을 제시한다.
Plain Network
그림의 가운데 제시된 모델이 plain network이다. VGG와 같이 주로 3×3 filter를 사용한다. 모델은 다음 두 규칙에 따라 구성된다.
output의 size가 같으면 layer에서 사용하는 filter의 수가 같다.
output size가 절반이 되면 각 layer의 연산량을 같게 하기 위해 filter 개수를 2배로 늘린다.
Downsampling을 위해서 stride가 2
인 conv layer를 사용한다. Network 끝에서는 global average pooling
을 사용하고, 1000-way fully-connected layer
를 softmax와 함께 사용한다. VGG보다 적은 filter를 사용하고, 복잡도를 줄였다.
Residual Network
그림의 오른쪽 모델이 residual network이다. Plain network에 shorcut connection만 추가하였다. 입력과 출력의 차원이 같은 경우에는 입력을 그대로 더해주는 identity shortcuts(그림의 실선 connection)을 사용한다.
만약 입력과 출력의 차원이 다르다면 2가지 방법 중 선택할 수 있다. 두 방법 모두 feature map의 size를 절반으로 줄이기 위해 stride를 2로 사용한다.
Identity mapping + extra zero padding
Identity mapping을 사용하고, 추가된 차원은 0으로 padding하여 사용한다.
Projection shortcuts
1×1 필터를 사용해 입력의 차원을 출력으로 차원으로 변경하여 사용한다.
Training
Testing
AlexNet처럼 각 모서리, 중앙에서 5개를 crop하고 horizontal flip을 적용하여 총 10개의 이미지 패치를 사용한다. VGG처럼 Fully-Convolutional form을 사용하고 다양한 크기(224,256,384,480,640)로 resize한 이미지의 평균을 구한다.
ImageNet 2012 classification dataset으로 평가하였다.
Plain Networks Residual Networks
위와 같은 구조의 18-layer와 34-layer의 plain/residual network를 평가한다.
먼저 plain network의 경우 깊은 34층의 모델보다 상대적으로 얕은 18층의 모델 결과가 전체적으로 더 좋다.
Degradation problem
이 관찰되는 것이다. Batch normlization을 사용했기에 vanishing gradient가 원인이라고 할 수 없다. 34 layer의 모델도 학습이 되기는 하는 것으로 보아 deep plain network가 기하급수적으로 낮은 수렴 확률(low convergence rate)
을 가져 training error가 높은 것으로 추측한다.
Residual Network는 plain network에 shortcur connection만 추가한다. 위에 제시된 두 결과는 Identity mapping과 차원이 변경될때는 zero padding을 사용하였을 때의 결과이다. 우리는 이 결과를 통해 3가지를 관찰할 수 있다.
Degradation problem 처리
34-layer ResNet이 18-layer ResNet보다 더 성능이 좋다. 이는 degradation problem이 잘 다뤄졌음을 보여준다.
Deep Network에 효과적
34-plain 모델보다 34-ResNet의 성능이 개선된 것으로 residual learning이 매우 깊은 모델에서 효과적임을 증명한다.
Optimize를 쉽게
18-plain과 18-ResNet의 성능은 비슷하다. 그러나 ResNet이 더 빠르게 수렴한다. 이를 통해 "Not overly deep"한 network에서 ResNet은 최적값에 더 빠르게 수렴하도록 하여 optimization을 쉽게 함을 알 수 있다.
Identity Projection Shortcuts
위의 표에서 A는 Identity mapping과 zero-padding shortcur 사용
, B는 Identity mapping과 projection shortcut 사용
, C는 projection shortcut만 사용
한 경우이다. C, B, A 순으로 성능이 좋다. 그러나 큰 차이가 없는 것으로봐서 degradation 문제를 다루는데 projection shortcut이 필수는 아님을 알 수 있다. 본 논문에서는 이후 메모리와 시간 복잡도, 모델 크기를 고려하여 C 방법은 사용하지 않는다.
Deeper Bottleneck Architectures
깊은 network에서는 training time을 고려하여 building block
을 오른쪽과 같이 3 layer로 변경한다. 1×1 layer는 dimension을 줄였다 늘리는 역할을 한다. 두 building block의 시간 복잡도는 비슷하다.
Bottlenet architecture에서 Identity shortcuts은 중요하다. 만약 오른쪽 building block에서 projection shortcuts을 사용하면 두개의 높은 차원(입력, 출력)을 연결하기 위해 모델 크기와 복잡도가 배가 된다. 따라서 Identity shortcuts
가 효율적인 모델을 구성하는데 중요하다.
101-layer and 152-layer ResNet
모델의 깊이를 매우 늘렸음에도 152-layer ResNet은 VGG-16/19 보다 복잡도가 적다. Degradation 문제가 관찰되지 않으며, 깊이를 늘려 성능을 향상 시킬 수 있었다.
Comparison with State-of-the-art Methods
152-layer ResNet은 single-model 결과(top-5 error 4.49)임에도 다른 모델의 ensemble 결과보다 좋은 성능을 보였다. 다른 깊이의 6 모델을 ensemble하여 top-5 error 3.57의 결과를 얻을 수 있었다.
4.2은 모델을 ImageNet이 아닌 CIFAR-10으로 학습시키는 내용이다. 이미지 크기가 작은 CIFAR-10에 맞춰 구조를 살짝 바꾼 것 외에는 위와 같다.
4.3은 Faster R-CNN에 VGG 대신 ResNet을 사용하였을 때 object detection 성능을 개선할 수 있었다는 이야기이다.