→ 해당 paper에서 이것을 해결위해 Residual learning framework를 제안함
Residual Learning Framework
east to opitimize, accuracy increased by deeper depth
VGGNet보다 8배(152 layers) 더 깊어졌지만, Complexity는 더 낮음
ResNet 모델로 3.57%의 error를 거둠→ ILSVRC2015 classification 대회에서 1등
Depth의 중요성
많은 visual recognition task에서 중요함
Deep Residual Net은 ILSVRC & COCO 2015 대회에서도 1등을 함
1. Introduction
1) Deep convolutional neural networks
Deep CNN은 image classfication에서 돌파구와 같은 혁신을 가져옴
end-to-end multi-layer 방법으로 low / mid / high level의 특징 및 분류기를 자연스럽게 통합함
low-level에서 high-level로 갈 수록, 기본적인(엣지, 텍스처)와 같은 특징에서 더 추상적이고 복잡한 특징들이 확인 가능함 → layer가 더 추가될수록 이런 특징들이 자연스럽게 통합됨
최근의 evidence, 즉 성능이 좋아지는 “very deep” model들을 살펴보면, depth의 중요성은 커지고 있음
2) Is learning better networks as easy as staking more layers?
Vanishing/Exploding gradients
해당 question의 가장 큰 장해물은 Vanishing/Exploding gradients
하지만 해당 문제는 SGD를 적용해 10개의 layer까지는 normalization 기법과 Batch normalization과 같은 intermediate normalization layer를 사용할 경우 해당 문제가 없음
Batch Normalization은 딥러닝 모델에서 Gradient Vanishing 문제를 해결하는데 중요 1. 출력 정규화 : 각 층의 출력을 정규화하여 안정적인 기울기 흐름을 유지 2. 기울기 흐름 개선 : 기울기 소실 문제를 완화하여 깊은 네트워크에서도 효과적으로 학습 3. 학습 가속화 : 더 높은 학습률을 사용할 수 있게 하여 학습 속도를 높임
Degradation
depth가 점점 증가면서, accuracy는 어느 순간 급격히 저하됨
이런 degradation의 문제는 예상외로 overfitting 때문이 아님
어느 순간 정확도가 더 이상 증가하지 않고, 오히려 감소하는 현상이 발생
depth를 높이면 → Training Error가 올라감
Identity mapping
해결책으로 Identity mapping을 추가함
Identity mapping ? 입력 x를 그대로 출력하는 함수, f(x) = x
Residual Learning에서 중요한 역할을 함
deeper model를 설계할 때, Identity mapping이라는 layer를 추가함
identity mapping이면 연산량도 증가하지 않고, training error가 증가하는 일도 없음 → 단순히 depth만 깊어짐
Deep Residual Learning
우리는 deep residual learning frame을 제안하며, degradation problem을 해결함
기존 network는 input x를 받고, layer를 거쳐 H(x)를 출력함
input x를 타겟값 y로 mapping하는 함수 H(x)를 얻는 것이 목적이었음
ResNet의 Residual Learning은 H(x)가 아닌, 출력과 입력의 차인 H(x) - x를 얻도록 목표를 수정함
Residual function F(x) = H(x) - x
F(x)를 최소화 시켜야 하고, 출력과 입력의 차이를 줄임
input x는 값을 변경하지 못하니, H(x)= x로 mapping하는 것이 학습의 목표가 됨
이전에는 Unreference mapping인 H(x)를 학습시켜야 한다는 점에서 어려움이 있었으나, 단순히 H(x) = x라는 최적 목표값이 제공되어 학습이 더 쉬워짐
H(x) = F(x) + x로 네트워크 구조도 크게 변경할 필요가 없음
단순히 입력에서 출력으로 바로 연결되는 shortcut만 추가하면 됨
short cut? 하나 또는 그 이상의 layer의 연결을 skip하는 것
파라미터 수에 영향이 없으며, 덧셈이 늘어나는 것을 제외하면 연산량 증가는 없음
Vanishing gradient 문제를 해결 가능
곱셈 연산에서 덧셈 연산으로 변형되어, 몇 개의 layer를 건너뛰는 효과가 있음
2. Related Work
Residual Representations, Shortcut Connections이 적용된 사례를 설명
그러나 ResNet의 shortcut connection은 parameter가 전혀 추가되지 않으며, 지속적으로 residual function 학습이 가능함
3. Deep Residual Learning
1) Residual Learning
Residual function
F(x) = H(x) - x
이러한 residual learning layer를 추가하면서, 더 deeper한 model이 될 수 있음
identity mapping이 추가되기 때문에, 더 deeper한 model이 더 얕은 모델보다 training error가 커지지않음 → degradation problem의 해결
Identity mapping이 최적인가?
해당 paper의 저자는, Identity mapping이 최적의 해법일 가능성을 낮다라고 주장
그러나, ResNet에서 사용하는 재구성방법이, degradation 문제를 더 쉽게 풀 수 있도록 도움을 줄 수 있다라고 주장
최적 함수가 Zero mapping보다는 Identity Mapping에 더 가깝다면, Identity mapping을 기준으로 학습하는게, 더 쉬움
Zero Mapping
모든 입력을 0으로 매핑하는 함수
H(x)≈0인 경우, 네트워크는 완전히 새로운 함수를 학습해야 하며, 이는 더 어려운 작업이 될 수 있음
2).Identity Mapping by Shortcuts
제안하는 공식
x : input vector
y : output vector
F(x. {Wi}) : 학습에 매핑될 잔차
shortcut은 파라미터나, 복잡한 연산 복잡성을 추가하지 않음
F(x) + x 연산을 위해, x(input)과 F(output)의 차원이 같아야함
만약 차원이 다를 경우
linear projection인 Ws를 추가로 곱하여 차원을 같게 만듦
3) Network Architecture
Plain Network
base model로 VGGNet을 사용
conv filter 3x3이고 다음 design rule로 설계함
만약 같은 output feature map size라면, 같은 layer들은 모두 같은 수의 conv filter를 사용
만약 output feature map size가 반으로 되면, filter의 수를 2배 늘림 → 각 layer의 time complexity를 동일하게 유지하기 위해
downsampling을 할 때, stride가 2인 conv filter를 사용함
모델 끝에, global average pooling layer를 사용하고, 사이즈가 100인 fully-connected layer와 softmax를 적용함
전체 layer의 갯수는 34인데, VGGNet보다 적은 필터와 복잡성을 가짐
우리 네트워크는 FLOPs(multiply-adds)가 3.6billion, VGG-19는 19.6billion
Residual Network
Residual Network는 Plain 모델에 기반해, Shortcut connection을 추가해서 구성함
input과 output의 차원
같을 땐, identity shortcut를 바로 사용
다를 땐, 다음 두 가지 방법을 사용
zero-padding을 적용하여 차원을 늘림
앞에서 다룬, projection shortcut을 사용 (1 x 1 convolution)
4) Implementation
모델의 구현
짧은 쪽이 [256, 480] 사이가 되도록 랜덤하게 resize
224 x 224 사이즈로 랜덤하게 crop
horizontal flip을 부분적으로 적용, per-pixel mean을 제거함
standard color argmentation 적용
BN(Batch Normalization), Opitimizer는 SGD를 적용
learning rate는 0.1에서 시작, 학습정체시에 10으로 나눠줌
Weight Decay는 0.0001, Momentum은 0.9
테스트 단계
10-cross validation 방식을 적용하고, multiple scalue을 적용해, 평균 score를 산출
데이터를 10개의 동일한 크기로 나누어, 훈련하고 테스트하는 과정
4. Experimental
1) ImageNet Classification
plainnet과 resnet을 대상으로 ImageNet을 이용해 수행한 결과를 평가
PlainNet
18-layer가 34-layer의 더 깊은 모델이 높은 validation error가 발생함
training error도 높아 degradation 문제가 있다고 판단
이러한 문제는 vanishing gradient 때문에 발생하는 게 아니라고 주장
해당 모델은 Batch Normalization이 적용되어, forward propagated의 variance 는 0 이나며, backward propagated gradients도 healthy norm을 보임
순전파, 역전파 모두 사라지지 않음
해당 paper의 저자는, exponentially low convergence rate가 training error 감소에 좋지못한 영향을 미쳤다라고 주장
지수적으로 낮은 수렴 속도(Exponentially Low Convergence Rate): 알고리즘이 최적의 결과에 도달하는 속도가 매우 느리다는 것을 의미. 특히, 수렴 속도가 지수적으로 느리다는 것은 학습 속도가 매우 느려지고, 결과가 개선되는 속도가 기하급수적으로 떨어진다는 뜻
ResNet
18 layer와, 34 layer ResNet을 plain 모델과 비교
residual learning으로 34-layer가 18-layer보다 2.8% 가량 더 우수한 성능
degradation 문제가 잘 해결되었으며, depth가 증가해도 좋은 accuracy를 더을 수 있음을 의미
34-layer의 top-1 error는 3.5가량 줄었음
PlainNet보다 더 빠르게 optimization에 수렴 가능
2) Identity vs. Projection Shortcuts
parameter-free한 identity shortcut이 학습에 된다는 것을 알았으며, 이번엔 projection shortcut에 대해 알아봄
다음 3가지 옵션을 비교
A) zero-padding shortcut을 사용
dimention matching에 사용, 완전히 paremeter-free함
B) projection shortcut을 사용
dimention을 키울 때 사용, 다른 모든 shortcut은 identity함
C) 모든 shortcut으로 projection shortcut한 경우
3가지 option 모두 plainnet보다 좋은 성능을 보임
성능의 순위는 A < B < C
3가지 옵션의 성능 차이가 미미하기 떄문에, projection shorcut이 degradation문제를 해결에 필수적이지 않다는 것을 확인 가능
memory / time complexity와 model size를 줄이기 위해서는, C 옵션을 사용하지 않음
3) Deeper Bottleneck Architectures
ImageNet에 대해 모델 학습할 때, training time이 매우 길어질 것 같아서, bottleneck design으로 수정함
두 개의 design은 비슷한 time complexity를 가짐
3-layer stack 구조로 바꿈
1x1, 3x3, 1x1의 conv로 구성
입력 → 1x1 Conv (채널 수 축소)
3x3 Conv (공간적 특성 학습)
1x1 Conv(채널 수 복구)
parameter-free한 identity shortcut은 bottleneck 구조에서 중요함→ 더 효율적인 모델로 만듦
계산의 효율성 : 1x1 Conv를 사용해, 중간 계산을 줄여줌 → 메모리, 연산량을 줄임
더 깊은 네트워크 : 성능 저하 없이 깊이는 늘림
3-layer stack 구조로 바꿈
1x1, 3x3, 1x1의 conv로 구성
입력 → 1x1 Conv (채널 수 축소)
3x3 Conv (공간적 특성 학습)
1x1 Conv(채널 수 복구)
parameter-free한 identity shortcut은 bottleneck 구조에서 중요함→ 더 효율적인 모델로 만듦
계산의 효율성 : 1x1 Conv를 사용해, 중간 계산을 줄여줌 → 메모리, 연산량을 줄임
더 깊은 네트워크 : 성능 저하 없이 깊이는 늘림
50-layer ResNet
34-layer의 2-layer block은 3-layer bottleneck block으로 대체해서 구성, B옵션 사용
101-layer and 152-layer ResNet
더 많은 3-layer block을 사용해서 구성함
VGG- 16/19 모델보다 더 낮은 복잡성을 가졌으며, degradation 문제없이 상당히 높은 정확도를 보임
ResNet의 single모델은 이전의 다른 모델의 성능을 능가함, top-5-error를 3.57%를 달성함
4) CIPAR-10 and Analysis
ImageNet 말고도, CIFAR-10의 dataset을 가지고 모델의 학습 및 검증
Exploring Over 1000 layers
1000개 이상의 layer가 사용된 ResNet 모델은 110-layer ResNet보델과 training error가 같았지만, test 결과는 좋지못함
overfitting 때문인 것으로 판단 → 모델의 복잡도보다 dataset이 적기 때문에
5) Object Detection on PASCAL and MS COCO
PASCAL VOC 2007/2012, COCO 에서도 VGG-16보다 6% 더 좋은 accuracy를 보임