📢 Deep Residual Learning for Image Recognition
Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun
1) 논문 베이스 세부 설명
https://phil-baek.tistory.com/entry/ResNet-Deep-Residual-Learning-for-Image-Recognition-논문-리뷰
2) 요약이 잘 되어있는 블로그
https://wandukong.tistory.com/18
3)
📢 P : Deeper neural networks = difficult to train → S : Residual learning framework
- how ? : reforming the layers as learning residual functions with layer inputs
(레이어 입력에 대한 잔여 함수를 학습하도록 레이어를 재구성하는 것)
advantage of Residual functions
VGG 네트워크보다 8배 더 깊고 복잡도가 낮으며 성능이 더 뛰어남
error rate을 기록하여 ILSVRC 2015 분류 작업에서 1위를 차지features🔥 Layer를 깊이 쌓을수록 더 쉽게 학습할까?(learning better networks as easy as stacking more layers?)
2가지 장애물이 있음!🤔 Convegence Problem
- vanishing / exploding gradients 에서 발생
- hamper Convergence(convergence를 방해!)
- 해결방법은?
- normalized initialization
- intermediate normalization layer
→SGD로 수십장 layer convergence 가능!🤔 Degradation Problem
- depth increasing → accuracy saturation(포화) & 그 이후 급격한 하강(overfitting이 문제가 아님!)
- layer 추가 = Training error가 높아짐
- not easy to optimize를 시사함!
- 해결방법?
- 추가된 layer들은 identity mapping이고, 다른 layer들은 얕은 모델을 복사한 것
- 그러나? 깊은 모델은 얕은 모델모다 training error가 높지 않아야 하는데, 그렇지 않았음(이부분 해석이 애매?)
- In this paper, Deep residual learning framework로 해결!
🤔 Identify mapping(ID mapping) & Underlying mapping?
Identify Mapping
Identify Mapping(항등 매핑)은 입력을 그대로 출력으로 전달하는 함수.
수학적으로는 로 표현되며, 입력값이 변하지 않고 그대로 출력으로 전달.
Underlying Mapping
Underlying Mapping(기저 매핑)은 신경망이 학습해야 하는 실제 함수 또는 매핑을 의미.
예를 들어, 이미지에서 고양이와 개를 분류하는 신경망이 있다면, 이 신경망의 기저 매핑은 입력 이미지에서 고양이와 개를 구분하는 함수가 됨.
잔여 네트워크에서는 기저 매핑을 직접 학습하기보다는, 기저 매핑과 입력값 간의 차이(잔여)를 학습하도록 설계됩니다.
Nonlinear Mapping
Nonlinear Mapping(비선형 매핑)은 입력과 출력 간의 관계가 선형이 아닌 함수.
즉, 직선이 아닌 곡선 형태의 관계를 가지며, 복잡한 데이터 패턴을 학습하고 표현하는데 필수.
신경망에서는 활성화 함수(ReLU, Sigmoid, Tanh 등)를 사용하여 비선형성을 도입합니다.
비선형 매핑을 통해 신경망은 단순한 선형 변환으로는 표현할 수 없는 복잡한 패턴과 구조를 학습할 수 있습니다.
이러한 매핑들은 신경망의 구조와 학습 과정에서 중요한 역할을 하며, 각각의 개념을 이해하는 것이 딥러닝 모델의 설계와 최적화에 큰 도움이 됩니다.
: underlying mapping 을 H(x) 라하면, nonlinear mapping을 F(x) = H(x) + x 에 맞추는 것
ResNet의 Residual Learning은 H(x)가 아닌 출력과 입력의 차인 **H(x) - x**를 얻도록 목표를 수정한다. 따라서 Residual Function인 F(x) = H(x) - x를 최소화시켜야 한다.
즉, 출력과 입력의 차을 줄인다는 의미가 된다.
여기서 x의 값은 도중에 바꾸지 못하는 입력 값이므로 F(x)가 0이 되는 것이 최적의 해다.
결국, 0 = H(x) - x로 H(x) = x가 된다. 즉,H(x)를 x로 mapping 하는 것이 학습의 목표가 된다.
즉, 기저 매핑 ( 를 학습하는 대신, 잔여 함수 를 학습합니다. 이 접근 방식은 네트워크가 입력값 x 에 잔여를 더하여 최종 출력 H(x)를 생성합니다. 즉, H(x) = f(x) + x 입니다.
잔여 함수 f(x) = 0 이 최적의 해라는 것은 네트워크가 추가적인 학습 없이도 이미 최적의 상태에 도달했다는 것을 의미합니다. 즉, 네트워크가 학습해야 할 잔여가 없다는 뜻입니다.
이전에는 Unreferenced mapping인 H(x)를 학습시켜야 한다는 점 때문에 어려움이 있었는데 (알지 못하는 최적의 값으로 H(x)를 근사 시켜야 하므로), 이제는 H(x) = x라는 최적의 목표값이 사전에 pre-conditioning으로 제공되기에 Identity mapping이 Identity mapping인 F(x)가 학습이 더 쉬워지는 것이다.
결과적으로 H(x) = F(x) + x 이므로 네트워크 구조 또한 크게 변경할 필요가 없는데, 단순히 입력에서 출력으로 바로 연결되는 shortcut만 추가하면 되기 때문이다.
또한, 입력과 같은 x가 그대로 출력에 연결되기에 파라미터 수에 영향이 없으며, 덧셈이 늘어나는 것을 제외하면 shortcut 연결을 통한 연산량 증가는 없다.
무엇보다도 곱셈 연산에서 덧셈 연산으로 변형되어 몇 개의 layer를 건너뛰는 효과가 있었는데, 이 덕에 forward와 backward path가 단순해지는 효과가 있었으며, gradient의 소멸 문제를 해결할 수 있었다고 한다.
degradation problem을 보이고 제안한 방법을 평가 → ImageNet으로 실험함
1) extremely deep residual net은 optimize하기 쉽지만, residual이 없이 단순히 깊게 쌓기만한 plain net은 더 높은 training error를 보임
2) deep residual net은 깊이에 의한 accuracy gain이 있고, 다른 이전 network들 보다 성능이 좋음
ResNet 모델의 대표적인 2가지 개념인 Residual Representations와 Shortcut Connections이 다른 모델에 적용된 사례에 대해 간략히 설명
해의 residual 특성에 대해 다루지 않는 기존 방식보다 훨씬 빨리 수렴하는 특징이 있다.
→ 즉, 합리적인 문제 재구성과 전제 조건(pre-conditioning)은 최적화를 더 간단하게 수행해준다는 것을 의미한다.
위의 다른 방식과 다르게 parameter가 전혀 추가되지 않고, 0으로 수렴되지 않기 때문에 절대 닫힐 일 없이 모든 정보가 통과된다. 따라서 지속적으로 residual function을 학습하는 것이 가능하다!
개념: 잔여 학습은 원하는 기저 매핑 H(x)을 잔여 매핑 F(x) := H(x) - x으로 재구성하여 학습하는 방법.
이 접근 방식은 잔여 매핑을 최적화하는 것이 원래 매핑을 직접 최적화하는 것보다 더 쉽다는 가설을 세움.
Residual Learning Framework는 레이어가 Residual Function을 근사하도록 하여 최적의 경우 ID 매핑을 더 쉽게 학습할 수 있게 함.
구현: 잔여 함수는 ID 매핑을 수행하는 쇼트컷 연결을 사용하여 피드포워드 신경망을 통해 실현되며, 쌓인 레이어의 출력을 추가합니다. 추가 매개변수나 계산 복잡성이 없으므로 표준 확률적 경사 하강법(SGD)과 역전파를 사용하여 종단 간 훈련이 가능합니다.
introduction과 동일 내용!
pre-conditioning으로 인해 Optimal function이 zero mapping보다 identity mapping에 더 가깝다
→ solver가 identity mapping을 참조하여 작은 변화를 학습하는 것 >>>>>새로운 function을 학습 (쉬움)
: 모든 few stacked layer마다 residual mapping을 적용함
: Shortcut connection은 파라미터나 연산 복잡성을 추가하지 않음!
: plain network에서 shorcut conenction을 삽입
34-layer plain net이 전체적으로 가장 높은 training error를 보임
(더 깊은 plain모델에서 높은 Validation errorr 나타남)
→ optimization difficulty는 vanishing gradient에 의해 발생하는 게 아닐 수도 있음!
forward propagated signal이 zero가 되지 않도록 보장하는 Batch Normalization을 사용 → forward, backward signal vanish의 문제가 아님
deep plain net이 exponentially low convergence rate를 가질 것으로 추측 → training error에 영향을 줌
18-layer Residual VS 34-layer Residual nets
(option A) 모든 shortcut에 identity mapping을 사용, 증가한 차원에 대해서는 zero-padding을 적용
→ extra parameter가 없음(plain net 대비)
🤔 Result?
1. 18-layer보다 34-layer Resnet이 2.8% 더 우수한 성능!
- 34-layer resnet이 낮은 Training Error & generalizable to Validation >data → degradation 해결(depth가 증가해도 좋은 정확도를 얻을 수 있음!)
2. 34-layer Resnet Reduces the top-1 error by 3.5%
- 34-layer Resnet의 top-1 error가 3.5% 감소 → extreme deep system에서 매우 좋음!
3. 18-layer Resnet VS plain net
- 18-layer Resnet이 더 빨리 수렴함(accurate은 비슷) → 모델이 과도하게 깊지 않다면, Resnet이 더 빨리 수렴함
Projection Shortcut 세 가지 옵션을 비교함
🤔 Result?
1. 3가지 옵션 모두 plain model 보다 성능이 좋았음(A<B<C)
세가지 옵션 성능차가 크지는 않음.
→ projection shortcut이 필수적이지는 않다는 것을 확인!2. A<B
- zero-padded 차원이 residual learning을 수행안하기 때문
- (zero-padded는 residual learning이 아니기 때문)
3. B<C
- projection shortcut으로 인해 파라미터가 추가되었기 때문!
📢 training time → building block을 bottleneck구조로 수정
3개 layer stack 구조로 수정됨(1x1, 3x3, 1x1 convolution)1x1 layer: 차원을 줄이고 늘리는(복구하는) 역할3x3 layer: 더 작은 input/output 차원을 줄이는 bottleneck