일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- Today
- Total
- activation function
- AdaGrad
- adaptive learning rate
- arithmetic reasoning
- Attention is all you need
- attention mechanism
- auto encoder
- Back Propagation Trough Time
- Backpropagation
- Bayes Theorem
- BCE
- Bert
- Bidirectional Encoder Representation from Transformer
- Binary classification
- BPTT
- Chain-of-Thought
- CNN
- commonsense reasoning
- Computer Vision
- Confusion Matrix
- convolutional neural network
- Cot
- cot reasoning
- counting
- Cross Entropy Loss
- deep learning
- degradation
- Dimension Reduction
- Few-shot
- fine-tuning
데이터 분석 일지
[Paper Review] ResNet: Deep Residual Learning for Image Recognition 본문
[Paper Review] ResNet: Deep Residual Learning for Image Recognition
-ˋˏ ♡ ˎˊ- 2024. 3. 25. 19:18일반적으로 네트워크가 깊을수록 학습이 어려워지고, gradient vanishing 문제가 발생한다. 본 논문에서는 충분히 깊은 DNN에서도 학습을 쉽게 하기 위하여 residual learning이라는 개념을 도입한다. 각 layer마다의 입력과 출력의 차이인 residual을 학습하여 더 쉽게 최적화할 수 있는 방법이다. 이 개념을 도입하여 본 논문에서는 152개의 layer를 쌓아도 낮은 복잡도를 가지게 된다.
1. Introduction
Deep convolutional neural network가 이미지 분류 task에서 점점 발전하고 있다. 또한 network의 depth는 학습하는데 있어서 굉장히 중요하다. layer를 많이 쌓을 수록 성능이 좋아진다는 것을 의미한다. Figure 1을 보면 ILSVRC에서 우승하는 모델마다 점점 layer가 깊어지는 것을 볼 수 있다.

하지만 layer를 깊게 쌓는다면 gradient vanishing이 발생하기 때문에 쉽지 않다. 이로써 깊은 layer를 가지면서 최적화하는 것은 굉장히 어려운 문제였다. 또한 degradation 문제도 따르게 된다. 이는 overfitting으로 인한 문제가 아니다. overfitting은 test error가 train에 비해 높게 나타나는 것을 의미하지만, degradation은 layer를 쌓을수록 train error도 높아지기 때문이다.
여기엔 방법이 있긴하다. shallow 모델이 있을 때 이 모델을 깊게 만들기 위해서 기존 모델에 identity mapping만 추가하면 되는 것이다. 추가된 layer가 identity mapping이기 때문에 기존 shallow 모델보다 training error가 높으면 안 된다.
본 논문에서는 deep residual learning framework를 소개하며 degradation problem을 해결한다. residual learning은 underlying mapping 대신에 residual mapping을 수행하는 것이다. underlying mapping을 H(x)라고 표기하고, residual mapping은 F(x) + x로 표기한다. F(x) = H(x) - x로 layer의 출력과 입력의 차이를 의미한다.
residual learning에서는 y를 출력하기 위한 layer를 학습하는 것이 아니라 x와 y의 차이를 학습하게 된다. 극단적으로 identity mapping이 최선이라고 생각했을 때, 비선형 레이어로 identity mapping을 찾는 것보다, residual mapping을 0에 수렴하도록 하는 것이 더 쉬울 것이다. 이에 따라 underlying mapping보다 residual mapping 방식이 학습하기 더 쉬운 방식이 되는 것이다.

Figure 2와 같이 F(x) + x는 shortcut connections을 가진 feedforward 신경망을 통해 실현할 수 있다. shortcut connection은 하나 또는 이상의 layer를 skip하는 것을 의미한다. 위 그림에서의 shortcut connection은 단순히 identity mapping을 수행하고, 쌓인 layer의 출력에 더해주는 역할을 한다. 이 방법은 추가적인 parameter를 필요로 하지도 않고 추가적인 계산 복잡도를 가지지도 않는다.
본 논문은 실험을 통해 아래의 두 가지를 증명한다.
- resnet은 최적화하기 쉽지만 plain net은 깊어질수록 높은 training error를 보인다.
- resnet은 깊어질수록 accuracy가 이전 네트워크들보다 향상된다.
Resnet은 152 layer까지 쌓았는데도 VGG보다 복잡도가 낮다. 또한 이를 사용한 앙상블은 3.57%의 error를 가진다.
2. Related Work
Residual Representation
이전부터 표준 vector를 사용하는 것보다 residual vector를 사용하여 reformulate하는 것이 더 효과적이었다는 연구가 있었다. residual vector에 의존하는 solution들이 표준 vector를 통해 해결하는 것보다 더 효율적으로 동작하고 최적화를 단순화할 수 있다는 연구도 있다.
Shortcut Connections
오래전부터 shortcut connection에 대한 연구가 있었다. MLP에서는 input에서 output으로 이어지는 선형 layer를 추가하였고, gradient vanishig을 해결하기 위해 집적적으로 중간 layer에 auxiliary classifier를 연결하기도 했다. "highway network"는 gating 기능과 함께 shortcut cnonnection을 나타낸다. 하지만 이 gate들은 data에 의존하고 파라미터를 가지지만 Resnet의 identity shortcut은 파라미터를 가지지 않는다. Resnet은 항상 residual function을 학습하기 때문에 identity shortcut gate가 닫히지 않는다. highway network는 shortcut gate가 닫혔을 때 residual function을 수행하지 않았고, 깊은 네트워크에 따라 accuracy 향상을 보이지 않았다.
3. Deep Residual Learning
3. 1. Residual Learning
H(x)를 몇 개의 쌓인 layer에 의해 적합되는 기본적인 mapping이라고 생각해보자. 여기서 x는 쌓인 layer 중 첫 번째 layer의 입력을 의미한다. 만약 여러 비선형 레이어가 복잡한 함수를 근사할 수 있다고 할 때, 이는 residual 함수인 H(x) - x 또한 근사할 수 있다는 말과 동등하다. 따라서 본 논문에서는 H(x) 대신, H(x) - x인 F(x)에 근사하기로 한다. 비록 F(x)와 H(x) 모두 어떤 함수에 근사하도록 해야 하지만, 그 목표가 다르기 때문에 학습 난이도가 달라질 것이다.
이러한 reformulation은 degradation 문제의 반직관적인 현상으로부터 동기 부여를 받았다. 서론에서 이야기 했다시피 추가된 layer가 모두 identity mapping인 것이면 원래 모델보다 깊어도 training error가 더 높으면 안 된다. residual learning reformulation을 사용한다면, identity mapping이 최적의 방법일 때, F(x)는 identity mapping을 만들기 위하여 단순히 weight를 0에 가까운 수로 만들면 된다.
사실상 identity mapping이 최적의 방법은 아니겠지만 이러한 reformulation이 degradation 문제를 precondition하는 것을 도울 수 있다. 만약 최적의 함수가 0 mapping보다 identity mapping에 가깝다면 solver가 새로운 함수를 학습하는 것보다 identity mapping을 기준으로 변화를 찾는 것이 더 쉬울 것이다.
쉽게 말해서 identity mapping은 입력과 출력이 같도록 하는 mapping인데, 새로운 함수 H(x)를 학습하는 것보다 F(x)를 0에 가깝게 만들도록 하는 방법이 더 효율적인 것이다.
3. 2. Identity Mapping by Shortcuts
본 논문은 모델의 모든 stacked layer에 residual learning을 적용한다. 설계뙨 하나의 residual block은 다음과 같이 정의한다: (1)
위의 식에서 x와 y는 각각 input과 output이고, F(x)는 학습되어야 하는 residual mapping이다. Figure 2를 보면 하나의 block이 F = W_2σ(W_1x)의 형식으로 이루어져 있다. 여기서 σ는 활성화 함수로, 본 논문에서는 ReLU를 사용하였다. F(x) + x는 shortcut connection과 element-wise addition으로 수행된다.
block에서 수행되는 식에서 shortcut connection은 추가적인 파라미터나 계산 복잡도를 가지고 있지 않다. 이는 plain net과 Resnet 비교에 중요하다. 본 논문에서는 공정한 비교를 위하여 파라미터 수, capacity, 계산적 비용 등을 모두 같게 설정한다.
본 연구에서 입력과 출력의 차원은 동일하다. 하지만 channel이 바뀌는 경우에는 linear projection W_s를 shortcut connection을 사용하여 차원을 맞춘다. 식은 아래와 같다: (2)
W_s를 식 (1)에서도 사용할 수 있지만, 실험을 통해서 degradation 해결은 identity mapping으로 충분하고 경제적임을 보인다. 따라서 W_s는 차원을 맞출 때만 사용한다. 본 논문에서 F(x)는 두, 세 개의 layer를 가진다. element-wise addition은 두 개의 feature map과 channel by channel로 수행된다.
3. 3. Network Architectures

Plain Network
본 논문의 plain net은 VGG에서 영감을 받았다. convolutional layer는 일반적으로 3 x 3 필터를 가지고 있다. 그리고 다음 두 가지의 단순한 design rule을 따른다:
- 같은 feature map 크기의 output을 얻기 위해서는 layer가 가진 필터의 개수는 같아야한다.
- 만약 featrue map 크기가 반으로 줄어들었다면, 필터 수는 두 배가 된다. layer당 시간 복잡도를 유지하기 위함이다.
본 논문에서는 stride = 2로 설정하여 다운샘플링하였다. 네트워크는 global average pooling layer와 softmax를 지닌 1000-way FC layer로 끝난다. 총 layer는 34개이다. Resnet은 VGG보다 적은 필터와 낮은 복잡도를 사용한다.
Residual Network
위 plain net을 기반으로 하고 이에 네트워크를 residual 형식으로 바꿔주는 shortcut connection을 추가한 구조이다. input과 output dimension이 같으면 identity shortcut이 직접적으로 사용될 수 있다. 차원이 높아지면 아래의 두 가지 선택을 할 수 있다:
A. zero entries padding을 추가하여 identity mapping 수행(이 옵션은 추가적인 파라미터가 필요하지 않는다)
B. 식 (2)의 projection shortcut이 사용
이 두 가지 선택지 모두, shortcut이 두 개의 size의 feature map으로 갈 때, stride = 2로 수행한다.
3. 4. Implementation
- data augmentation(standard color augmentation) 수행
- convolution 끝나고, activation하기 전에 batch normalization 수행
- mini-batch size 256으로 SGD 수행
- learning rate 0.1로 시작해서 error plateaus 있을 때마다 10으로 나눔
- weight decay = 0.0001 사용
- momentum = 0.9 사용
- dropout 수행 X
- test에서는 비교를 위해 standard 10-crop testing을 적용
4. Experiments
4. 1. ImageNet Classification
Plain Network
먼저 18-layer와 34-layer plain net을 비교한다. Figure 4와 Figure 5를 보면 18-layer보다 34-layer의 valid error가 더 높은 것을 볼 수 있다. 이를 통해 plain net은 깊을수록 일반화가 덜 된다고 할 수 있다. 전체 training 과정에서 34-layer plain net의 training error가 항상 높았다.


본 논문에서는 이러한 최적화의 어려움 문제가 gradient vanishing 때문이라고 이야기하지 않는다. BN은 순전파되는 신호가 0이 아닌 분산을 가지도록 하기 때문이다. 또한 BN이 역전파된 gradient가 적절한 크기를 갖도록 하기 때문이다.
Residual Network
18-layer와 34-layer resnet 또한 비교한다. resnet은 plain net에 기반하지만 resnet은 각 3 x 3 필터 한 쌍마다 shortcut connection을 가진다. 모든 shortcut을 위한 identity mapping을 사용하고, 증가된 차원에 대해서는 zero-padding을 사용하는 option A를 사용한다. 이에 따라 plain net과 비교했을 때 추가적인 파라미터를 가지지 않는다. Figure 6는 resnet의 error를 나타낸다.

이 비교에서 세 가지 주요 관찰을 할 수 있었다.
첫 번째는 18-layer보다 34-layer의 성능이 더 좋다는 것이다. Figure 4에서 2.8% 향상된 것을 확인할 수 있다. 중요한 것은 34-layer가 상당히 낮은 training error를 가지고, valid data에서 일반화된다는 것이다. 이를 통해서 degradation 문제가 잘 해결되었꼬, 깊이가 깊어질수록 정확도라 높아진다는 결과를 얻었다.
두 번째는 plain net과 비교했을 때, 34-layer resnet이 top-1 error를 3.5%로 달성했다는 것이다. 이는 극적으로 깊은 시스템에서의 residual learning의 효과를 검정한다.
마지막으로 18-layer plain net과 18-layer resnet은 비슷한 정확도를 가지지만 18-layer resnet에서 더 빠르게 수렴한다. (Figure 5와 Figure 6 비) 이를 통해 네트워크가 지나치게 깊지 않을 때 현재 SGD는 여전히 plain net에서 좋은 해결책이 될 수 있다는 것을 알 수 있다. resnet은 초기 단계에서 빠른 수렴을 해서 최적화를 용이하게 한다.
Identity vs Projection Shortcuts
Figure 7을 보면 본 논문에서는 세 가지 option을 통해 증가하는 차원에 대한 identity mapping을 수행한다: A) 증가하는 차원에 대해 zero-padding shortcut 수행 (Figure 3 right와 같은 구조); B) 증가하는 차원에 대해 projection shortcut 수행 (나머지 shortcut은 모두 identity); C) 모든 shortcut에 대해 projection

Figure 7은 이 세 가지 방법이 plain net보다 상당히 좋다는 것을 보여준다. 사실상 C가 제일 좋은 성능을 보이지만, A와 B와 C 사이에서 큰 차이를 보이지 않는 것이 projection shortcut이 degradation 문제를 해결하기에 필수 조건이 아니라는 것을 보여준다. 따라서 본 논문에서는 C를 사용하지 않는다. (비용적으로 비효율적임) identity shortcut은 bottleneck 구조의 복잡도를 증가시키지 않는다는 점에서 특히 중요하다.
Deeper Bottleneck Architectures
본 논문은 ImageNet을 위한 더 깊은 네트워크를 설계한다. 이 과정에서 training 시간에 대한 우려로 residual blcok을 bettleneck design으로 변경한다. 각 residual function F에 대해 2개 대신 3개의 layer를 사용한다. 이 세 개의 layer는 차원을 축소하고 증가시키기 위해여 1 x 1, 3 x 3, 1 x 1으로 구성된다. Figure 8은 변경된 layer를 나타낸다. 두 디자인 모두 비슷한 시간 복잡도를 가진다.

parameter-free identity shortcut은 bottleneck artchitecture에서 특히 중요하다. 만약 Figure 8에 있는 identity shortcut이 projecetion과 교체되면 시간 복잡도와 모델 크기가 두 배가 된다. 이는 shortcut이 두 개의 high-dimensional end로 연결되기 때문이다. 따라서 identity shortcut은 bottleneck design에 있어서 더 효과적인 모델을 만든다.
50-layer ResNet
34-layer resnet의 각 2-layer block을 50-layer resnet에서는 3-layer bottleneck block으로 변경하여 사용한다. 여기서는 option B를 사용하였다. 이 모델은 3.8 B FLOPs을 가진다. 이는 VGG보다 낮은 복잡도를 갖는다.
101-layer and 152-layer ResNet
이 resnet에서도 3-layer block을 사용한다. 비록 깊이는 상당히 증가했지만 152-layer resnet은 여전히 VGG-16/19보다 더 낮은 복잡도를 가진다.
50/101/152-layer resnet은 34-layer resnet보다 더 정확하다. 여기선 degradation 문제를 볼 수 없었고 이로 인하여 layer가 깊어질수록 증가하는 정확도를 관찰했다.
Comparisons with State-of-the-art Methods
Figure 9을 보면 이전 best single-model의 result와 비교했을 때 34-layer resnet은 경쟁력 있는 정확도를 달성하였다. 152-layer resnet은 4.49%로 single-model top-5 validation error를 달성하였다. 이 single-model은 모든 이전 앙상블 결과를 능가한다. 본 논문에서는 6개의 다른 깊이를 가진 모델을 결합하여 앙상블을 만든다. 이 앙상블은 test set에서 3.57%로 top-5 error를 성취한다.

4. 2. CIFAR-10 and Analysis
CIFAR-10 연구도 수행한다. 이를 수행할 때는 SOTA result를 얻기 위함이 아니라 deep network의 수행 능력을 보기 위함으로 단순한 구조를 사용한다. plain net은 깊어질 수록 training error가 높아졌다. (ImageNet과 MNIST에서도 같은 현상) 이에 따라 최적화의 어려움은 기본적인 문제라고 한다. resnet은 최적화의 어려움을 이겨내고 깊을수록 정확도를 향상했다. (20, 32, 44, 56 layer를 사용함) 추가로 110 layer도 했는데, learning rate가 너무 커서 0.01로 줄여서 오류를 낮추고 다시 0.1로 수행하였다. 그리고 이 task에서도 SOTA를 달성했으며, 다른 네트워크보다 깊은데도 적은 파라미터를 사용한다.
Analysis of Layer Responses
ResNet의 response가 plain net보다 상대적으로 많이 낮게 나왔는데, 이는 residual function이 non-residual function보다 일반적으로 0에 가까울 것이라는 주장을 뒷받침해준다. (depth가 깊어짐에 따라 response가 작아지는 것은 각 layer가 학습 시 signal이 변화하는 정도가 작다는 것을 의미한다)

Exploring Over 1000 Layers
본 논문에서는 resnet을 1202 layer까지 쌓는다. 이 방법에서는 최적화 어려움 없었고, training error는 0.1보다 작았다. 또한 test error도 7.93%으로 꽤 좋게 나왔다.
하지만 이렇게 깊은 모델엔 문제가 있다. 110-layer랑 training error가 비슷하게 나왔는데도 110 layer보다 test result가 안 좋게 나왔다는 것이다. 본 논문에서는 과적합이 원인일 것이라고 한다.