https://arxiv.org/abs/1512.03385
1. Introduction
Deep CNN의 장점
- Deep CNN은 image classification에서 많은
breakthrough
를 가지고 왔다.
- Deep CNN은 자연스럽게 low,mid,high level의
feature
를 통합
한다.
- Layer들을 stacking 하는 방법으로
feature
들을 풍부
하게 한다. ( VGG )
Deep CNN의 단점
vanishing/exploding gradients problem
이 있다.
이 문제는 normalized initialization, intermediate normalization layers을 통하여 다루어 졌고
수십개의 layer들의 SGD를 사용한 역전파에서 수렴을 가능하게 했다.
Degradation 해결방법
Deep Residual Learning Framework
-
위 그림은 일반적인 network training과정이다.
즉, input x 가 들어오면 H(x)=W2 σ (W1X)라는 mapping에서 weight matrix를 train한다.
-
이때 input x는 이전 convolution layer의 output이고, weight layer가 convolution layer이라고 해보자.
input x는 covolution의 ouput이기 때문에 feature
가 되고, H(x)역시 feature
이다.
여기서 mapping:H(x)는 이전에 추출하지 못한 feature들이 추출된다.
아래 그림은 논문에서 제시한 Deep Residual Learning Framework
이다.
- 단순하게 원래의 mapping에서 x만을 더해 새로운 mapping: H(x)=F(x)+ x을 생각해보자.
- 이를 위의
convolution은 feature를 추출한다
라는 concept을 이용하면, Identity x 는 이전층에서
학습된 정보이고, F(x)는 아직 학습하지 못한 Residual
정보이다.
- 즉, 이미 train한 x를 보존한 상태로
추가적으로 필요한 정보
: F(x)(=H(x)−x)만 train하여
학습 난이도를 낮춘다.
- F(x)만을 Train한다고 해서 추가적인 기법이 필요한 것이 아니라 H(x)=F(x)+ x라고
하게되면 F(x)만 train하게 된다.
Residual Representations
와 Shortcut Connections
은 이미 많은 network에서 사용 되었다.
3. Deep Residual Learning
3.1. Residual Learning
- Introduction의 내용을 더 자세하게 설명하자면 다음과 같다.
- 기존의 network는 H(x)=W2σ(W1X) mapping을 trian하였다.
- 기존의 mapping을 F(x)라고 한 다음 새로운 mapping H(x)=F(x)+x라고 하자
- 새로운 mapping은 단순하게 input x를 추가해준 것에 불과하다.
- 하지만 input x가 이전 Convolution에서의 output이라면 이는 train된 정보이다.
- 따라서 새로운 mapping을
이미 학습된 정보
+추가로 학습할 정보
로 나누어 진다.
- 즉,
추가로 학습할 정보
F(x)만을 train하면 되므로 optimize 난이도가 낮아진다.
3.2. Identity Mapping by Shortcuts
- y=F(x,Wi)+Wsx 를 Residual Block이라고 한다,
- 추가적인 parameter가 없고 계산 복잡도도 증가하지 않아서 성능을 비교하기 쉽다.
- Ws는 element-wise addition을 위해 dimension을 맞춰주는 용도로만 사용한다.
F와 마찬가지로 fully connected가 아니라 convolution이다.
- dimension이 같다면 Ws=I
- F는 몇개의 층을 가져도 되지만, 하나의 layer만 갖는다면 y=Wx+x와 같이 되어
적어도 2개의 층을 갖게 한다.
3.3. Network Architectures
- Plain Network(비교대상)
- 기본적으로 VGG network를 따른다.
- Convolution은 대부분 3×3 filter를 사용하였다.
- output feature map size를 통일시키기 위해 각각의 layer들의 filter개수는 같다.
- Convolution에서 feature map의 size가 반감되면 filter의 개수를 두배 늘려 layer마다 time-complexity를 보존한다.
- pooling을 사용하지 많고 stride=2라고 하여 downsampling한다.
- 최종 출력시 average pooling을 통하여 1,000개의 class로 분류.
- 순서대로 VGG-19, 34-Plain, 34-Residual이다.
VGG-19의 계산시 form이 궁금하면 다음을 실행하면 된다.
from tensorflow.keras.utils import plot_model
from tensorflow.keras.applications import VGG16
import tensorflow as tf
conv_base=tf.keras.applications.VGG19(
include_top=True,
weights="imagenet",
input_tensor=None,
input_shape=(224, 224, 3),
pooling=None,
classes=1000,
classifier_activation="softmax",
)
plot_model(conv_base, show_shapes=True)
- 추가설명
- 위의 [ ] 안에 3×3,64가 두개인 것은 2개가 한 쌍이라는 의미이다.
- 보라색 부분이라면 3×3의 filter를 64개 가지고 있는 2개의 covolution쌍을 총 3번 거친다.
이때 filter size는 padding을 통하여 유지 시킨다.
따라서 y=F(x,Wi)+Wsx에서 Ws는 없다.(=I)
3.4. Implementation
- Convolution을 거칠때 마다 Batch Normalization을 이용한다.
- 초기 learnin rate=0.1부터 해서 점차 줄여나간다.
- weight decay=0.0001, momentum=0.9
- Drop out은 사용하지 않는다.
4. Experiments
4.1. ImageNet Classification
- ImageNet 2012 데이터 사용
- 1,000개의 class
- Training data = 1.28M ( 128만 )
- Validation data = 50k ( 5만 )
- Test data = 100k ( 10만 )
Plain network Vs Residual Networks
- Plain network과는 다르게 Res network는 단순하게 short cut connection을 추가 했더니 layer가 깊게 쌓일때 성능이 증가한다.
- forward와 backward를 보았을때 Vanishing gradients의 문제점이 아니었다.
- 이러한 문제(layers를 적층하였을때의 degradation)는 수렴률일 낮아지기 때문이다.
즉, ResNet이 layer을 적층함에 따라 잘 동작하고, 성능또한 좋아진다.
Identity vs. Projection Shortcuts
y=F(x,Wi)+Wsx에서 Ws에 몇가지 추가 실험을 진행한다.
Ws는 dimension을 맞추기 위한 용도였다는 것을 기억해보자.
-
(A) Ws대신 dimension을 맞추기(늘리기) 위해 zero-padding을 사용하고, dimension이 같다면 Identity를 사용한다.
- (convolution은 보통 dimension이 낮아 지거나 padding으로 같게 한다. 따라서 zero로 모자라는 부분을 채울 수 있다. 물론 임의로 padding을 사용하여 dimension을 늘릴수는 있지만 idiot!)
-
(B) 위에서 봤던 방식인데 dimension을 늘려야 할때는 Ws를 projection으로 사용.
-
(C) 모든 short cut에 대해 projection을 사용
결과를 보면 (C)의 error가 가장 낮지만, Identity대신 Projection을 택할 만큼의 높은 개선은 아니다.
Deeper Bottleneck Architectures
50-layer, 101-layer and 152-layer ResNets
3개의 모델 모두 bottleneck block과 (B)를 사용하였다. 또한 152-layer의 FLOPs를 보면 VGG-19
(19.6×109)보다도 작다.
Comparisons with State-of-the-art Methods
위 표는 단일 모델로만을 평가한 것이고 ResNet-152가 뛰어나다는 것을 보여준다.
추가적으로 emsemble기법을 추가했을때는 top-5 error가 3.57% 까지 낮아졌다.
4.2. CIFAR-10 and Analysis ( Classification )
- CIFAR-10 : 5만개의 training image, 1만개의 test image , 10개의 class
- state-of-the-art results(해당 dataset에 가장 잘 맞는 구조를 찾음)보다는 목적에 맞게
network를 deep구조로 만들때 어떻게 작동하는지에 더 중점을 둔다.
- image input= 32×32이고 여기에 맞게 parameter를 줄인다.
- 처음에는 3×3 convolution을 사용하고 마지막에는 10-fully-connected를 사용한다.
- 중간에는 총 6n개의 layer을 쌓았으며, 아래의 layer를 2n번 쌓는다.
- short-cut은 3×3=9개를 건너뛰며 사용하고 option은 (A)를 사용한다.
- weight-decay=0.0001, momentum=0.9을 사용하고 weight initialization과, Batch Nomalization을 사용하고 Dropout은 사용하지 않는다.
- 128-mini batch, learning rate는 0.1로 시작하여 32k,48k iteration이 완료되었을때 각각 10으로 나눈다.
-
다음은 결과이다.
-
residual가 없는 network는 layer가 증가하에 따라 error도 증가하지만, residual를 추가 해주면 layer가 증가함에 따라 error는 낮아진다.
(110-layer network는 lr=0.1로 하면 너무 커서 400 iteration동안 0.01로 하고 다시 0.1로 바꾸어 준다.)
-
당연하게 너무 많은 layer는 overfitting을 야기한다.
4.3. Object Detection on PASCAL and MS COCO