ResNet 논문리뷰
이번 논문리뷰는 ResNet 논문이다 [1].
(K. He, X. Zhang, S. Ren, and J. Sun, "Deep Residual Learning for Image Recognition," Proc. IEEE Conf. on Computer Vision and Pattern Recognition (CVPR), Las Vegas, NV, USA, 2016, pp. 770-778.)
논문 제목은 Deep Residual Learning for Image Recognition이다.
~ 목차 ~
0. Abstract
1. Introduction
2. 관련 연구
3. Deep Residual Learning
3.1 Residual Learning
3.2 Identity Mapping by Shortcuts
3.3 구조
3.4 구현
4. 실험 결과
4.1 ImageNet 분류
4.2 CIFAR-10과 그 분석
4.3 PASCAL and MS COCO 객체 탐지
0. Abstract
- Residual Learning를 사용해서 모델을 더 깊게 쌓았다.
(ImageNet 데이터로는 152층, CIFAR-10 데이터로는 1000층)
- Residual Learning의 장점
- 최적화하기가 쉽다.
- 성능이 향상된다.
- 복잡도가 줄어든다.
- 모델 층을 더 쌓는 것만으로 성능을 높였다.
그럼 층을 어떻게 늘렸을까? → Introduction에서 이어서 설명한다.
1. Introduction
- ConvNet을 구축할 때 층을 많이 쌓는 것이 성능 향상에 굉장히 중요하다고 알려져있다.
- 하지만 층을 많이 쌓기만 하면 성능이 무조건 향상될까? → 아니다!
- Fig. 1에서 볼 수 있듯이, 20층 모델보다 56층 모델에서 train test error가 더 높다.
이런 현상이 발생하는 이유는, 깊은 모델이 수렴하기 시작하면 Degradation Problem이 생기기 때문이다.
↳모델이 깊어질수록 정확도가 포화되고 급격하게 감소하는 문제
- 논문에서는 이 문제를 해결하기 위해 Deep Residual Learning을 사용한다.
Deep Residual Learning은 목표함수를 직접 학습하는 대신, 입출력 사이의 잔차(residual)를 학습하도록 한다!
$H(x)$를 직접 최적화 하는 것보다 잔차 $F(x)(= H(x) - x)$를 최적화하는 게 훨씬 더 간단하기 때문이다.
Fig. 2처럼 x가 shortcut connection을 통해서 잔차 F(x)에 더해진다.
2. 관련 연구
- Residual 개념
: VLAD, Fisher Vector (VLAD의 확률적 버전), Multigrid method, Hierarchical basis preconditioning
- Shortcut Connection 개념
: MLP의 linear layer, Auxiliary classifier에 직접 연결된 intermediate layer,
Centering layer responses · gradients · propagated errors, Inception layer, Highway network
3. Deep Residual Learning
3.1 Residual Learning
- Introduction에서 말했듯이 목표함수를 $H(x)$라고 하고 입력을 $x$라고 할 때,
$H(x)$를 직접 학습하는 것보다 잔차 $H(x)-x$를 학습하는 것이 더 쉽다.
(e.g. 항등맵핑에서 nonlinear layer를 여러 개 사용하면 입력데이터가 과하게 복잡해지기 때문에
degradation problem이 생길 수 있는데, residual learning을 사용하면 이 문제를 해결할 수 있다.
가중치들을 모두 0으로 수렴시키기만 하면 되기 때문이다.)
- 요지는, 잔차를 학습하는 것이 새로운 함수를 통으로 학습하는 것보다 훨씬 쉽다는 것이다.
3.2 Identity Mapping by Shortcuts
- Fig. 2 residual learning의 최종 식은 $y = \sigma (w_{2} \sigma (w_{1} x)+x)$로 나타낼 수 있다.
- Plain과 residual를 서로 비교했을 때, residual 성능이 더 높다.
(∵Shortcut connection이 파라미터 수나 복잡도를 늘리지 않기 때문)
- $x$하고 $F(x)$의 차원이 다르면 $x$에 $W_{s}$를 곱해서 맞춰주면 된다.
- 층의 개수는 상관 없다. 단지 층 1개인 경우에는 그냥 선형 레이어와 같기 때문에 의미가 없어질 뿐이다.
- Fc layer뿐만 아니라 conv layer에도 사용 가능하다.
3.3 구조
① Plain
- VGG19를 바탕으로 2가지 규칙을 따랐다. (∵계산복잡도 유지)
(i) 피쳐맵 사이즈가 같으면 필터 개수를 동일하게 했다.
(ii) 피쳐맵 사이즈가 1/2배가 되면, 필터 개수를 2배로 늘렸다.
Q1: ResNet-34 plain이 VGG-19보다 필터 개수가 적다고 하는데, ResNet 필터가 더 많지 않나?
- Fig. 3에 있는 필터 개수를 다 더해보면 ResNet-34 plain이 7,616개고 VGG-19가 5,504개 인걸..
흠.. Lower complexity는 이해가 가니 일단 넘어가겠다.
② Residual
- Plain에 shortcut connection들을 더했다.
- 차원이 같을 때 실선으로 표시했고, 차원이 증가할 때 점선으로 표시했다.
- 차원이 증가할 때는 zero padding을 추가하거나 $W_{s}$를 곱하면 된다.
3.4 구현
- 하이퍼 파라미터 설정은 AlexNet하고 VGGNet과 같다. (본문 참조)
(He초기화 사용했고, $60x{10}^{4}$ iteration만큼 학습시켰다는 것 정도 보면 될듯)
- Test도 VGG에서 사용한 방법과 같다.
(10-crop(꼭짓점 4개, 중앙1개, 반전) 사용하고 fully convolutional 레이어 사용해서 average했음)
4. 실험 결과
4.1 ImageNet Classification
- 평가에는 ImageNet 2012 classification 데이터셋을 사용했다. (train 128만, val 5만, test 10만)
4.1.1 Plain Networks
- 18층 모델과 34층 모델을 비교한 결과, 34층 모델의 val error가 더 높았다.
34층의 train error도 더 높은 것을 보고 이는 degradation problem 때문이라고 판단했다.
↳∵Deep plain nets들의 수렴속도가 지수적으로 감소하기 때문에
train error도 급격하게 감소한다고 추측했다.
(이 이유는 논문에서도 일단 넘어가가고 있음)
4.1.2 Residual Networks
- 주요 관찰결과 3가지가 있다.
① Shortcut connection을 추가한 18층과 34층 모델을 비교한 결과, 34층 모델의 val error가 더 낮았다.
이는 앞선 plain network에서 발생한 degradation problem이 잘 해결되었다고 볼 수 있다.
② 똑같이 모델이 34층일 때, plain보다 ResNet에서 오류가 3.5% 낮았다.
③ 똑같이 모델이 18층일 때, plain보다 ResNet에서 수렴속도가 더 빠르다.
Q2: Plain보다 ResNet에서 수렴속도가 더 빠른게 맞나?
- Fig. 4를 아무리 봐도 둘 다 30iteration쯤에서 수렴하는 것 같은데.. 뭐지 (일단 넘어감)
4.1.3 Identity vs. Projection Shortcuts
- Table 3의 ResNet-34를 보면 A, B, C 사이의 성능 차이가 그렇게 크지 않다.
→ Projection shortcut($W_{s}$)가 degradation problem을 해결하는 데에 필수적이진 않다는 것을 알 수 있다.
4.1.4 Deeper Bottleneck Architectures
- Bottleneck구조는 차원을 줄였다가 다시 늘리는 구조로, 실용적이기 때문에 사용된다.
여기서 Identity shortcut($x$)은 모델의 복잡성을 줄이는 데에 중요하다.
- Fig. 5 왼쪽과 Fig. 5 오른쪽 모델을 계산해보면 시간복잡도가 비슷하게 나온다. (이미지 참조)
근데 여기서 identity shortcut을 projection shortcut로 바뀌면 시간복잡도와 모델의 크기가 2배가 된다.
Q3: 여기서 구체적으로 복잡도가 왜 2배가 되는지 잘 모르겠다.
- 기존의 계산량 69,632HW에 65,536HW(=256x256x1x1)이 더해져서 약 2배가 된다고는 하는데 흠..
- ResNet-34의 2-layer를 3-layer로 바꿔서 ResNet-50을 만들고,
ResNet-50에 3-layer을 더 추가해서 ResNet-101과 ResNet-152를 만든다.
↳이렇게 만들어도 VGG19보다 FLOPs가 작음
- ResNet-50, 101,152는 모두 ResNet-34보다 성능이 좋다. → Degradation problem이 해결되었다는 뜻
4.1.5 Comparisons with SOTA Methods
- ResNet-152는 top-5 4.49%로 싱글 모델 1위를 하고 6개 모델 앙상블은 top-5 3.57%로 앙상블 1위를 했다.
베이스라인 ResNet-34도 좋은 성능을 낸다.
4.2 CIFAR-10과 그 분석
- Plain과 Residual의 구조는 둘 다 오른쪽과 같다.
(Residual에 identity shortcut를 사용했기 때문에
Plain과 Residual의 모델 깊이, 너비, 파라미터 수가 같아서
둘은 비교가 가능하다.)
- Fig. 6의 왼쪽 그래프를 보면 Plain에서는 깊이가 깊어질수록 train error가 커진다. 최적화가 제대로 되지 못하기 때문이다.
- Fig. 6의 중간 그래프를 보면 ResNet에서는 깊이가 싶어질수록 train error가 작아진다. 최적화 문제가 해결되었음을 알 수 있다.
- Fig. 6의 오른쪽 그래프를 110층의 ResNet도 잘 수렴하고 있다. 심지어 파라미터 수도 엄청 적다.
- Layer Response는 conv layer의 출력이 BN을 통과한 직후의 값을 말한다. (ReLU 통과하기 전)
- Layer Response의 값의 std를 통해 각 층의 출력값들의 분포를 볼 수 있다.
Fig. 7을 보면, Plain보다 ResNet의 std값이 작음을 알 수 있다 → ResNet의 잔차가 0에 가깝다는 뜻!
- ResNet-56보다 ResNet-110에서 각각의 레이어의 layer response값이 작음을 알 수 있다.
→ 레이어가 많을 때는 여러 레이어를 통해서 신호가 조금씩 수렴된다는 뜻!
4.3 PASCAL and MS COCO 객체 탐지
- 객체 탐지에 Faster R-CNN이 있는 ResNet-101을 사용해서 VGG-16대비 성능을 6.0% 상승시(COCO 메트릭 기준)시켰다.
(Appendix는 생략)
참고문헌
[1] K. He, X. Zhang, S. Ren, and J. Sun, "Deep Residual Learning for Image Recognition," Proc. IEEE Conf. on Computer Vision and Pattern Recognition (CVPR), Las Vegas, NV, USA, 2016, pp. 770-778.
'Paper Review > CNN' 카테고리의 다른 글
[논문리뷰] Very Deep Convolutional Networks for Large-Scale Image Recognition (VGGNet) (1) | 2024.11.13 |
---|---|
[논문리뷰] Imagenet classification with deep convolutional neural networks (AlexNet) (1) | 2024.11.12 |