Resnet - Deep Residual Learning for Image Recognition

미남로그·2021년 10월 2일
0

Resnet 소개

Resnet은 cs231n Lecture 9의 CNN Architectures에서 배웠던 적이 있습니다. 기억을 더듬어보면 어디선가 들어본 적이라도 있다는게 다행일까요?🤣

강의에서는

  • AlexNet
  • VGG
  • GoogLeNet
  • ResNet

이 순서대로 CNN 아키텍처를 소개하고 있으니 만약 큰 개요를 알고 싶다하면 강의를 추천합니다!

카이밍 히(Kaiming He)가 2015년에 Resnet을 발표했습니다. Deep Learning은 Deep Neural Network를 사용한 Machine Learning이라고 풀어서 말할 수 있습니다. 조금 더 복잡한 데이터셋에서는 얕은 네트워크로는 한계가 있었고 Layer를 더 깊게 쌓으려고 시도했습니다.

2012년의 AlexNet은 8층, 2014년 VGG는 19층, GoogLeNet은 22층이었습니다. 2015년에 나온 Resnet은 152층을 쌓았습니다. 사람들은 Resnet이 Deep Learning의 시대를 열었다고 말합니다.

Resnet은 따라서 Very deep networks using residual connections라고 소개할 수 있습니다.

Deep Residual Learning for Image Recognition

layer를 더 깊게 쌓으면 이론적으로는 error가 떨어져야 하는데, Vanishing/Exploding Gradient 등의 문제로 오히려 성능이 더 떨어지는 경우를 알 수 있습니다.

그런데 이 문제 이외에도 딥러닝 모델의 layer가 깊어졌을 때, 모델이 수렴했음에도 불구하고 오히려 layer 개수가 적을 때보다 모델의 training/test error가 더 커지는 현상이 발생하는데, 이것은 overfitting 때문이 아니라 네트워크 구조상 layer를 깊이 쌓았을 때 optimization(최적화)가 잘 안되기 때문에 발생하는 문제입니다.

그래서 본 논문에서는 깊은 네트워크를 학습시키기 위한 방법으로 residual learning(잔여 학습)을 제안합니다.

왼쪽이 일반적인 CNN, 오른쪽이 잔여 학습을 적용한 CNN입니다.

Layer가 깊어질수록 training error가 떨어지는 것으로 보아 성능이 좋아지고 있음을 증명하고 있습니다.

Residual block

residual block을 이용하여 네트워크를 optimization을 낮춥니다.

H(x)를 곧바로 학습하는 것이 어려우므로 F(x) = H(x)-x를 학습하는 방식입니다.

(작성 중)

profile
미남이 귀엽죠

0개의 댓글