본문 바로가기
Study/Deep Learning

[AI] What is ResNet?

by 유미미Yoomimi 2024. 1. 5.

📍 What is ImageNet?

ImageNet challenge는 Computer vision에서 유명한 challenge다.

ImageNet은 수많은 이미지들의 집합을 데이터베이스에 저장해둔 것으로,

이를 classification하는 task로 모델의 성능을 겨뤄왔다.

 

(*Top-5 error란? 1개당 prediction 결과를 5개 유추할 수 있게 하고 그 5개 중 정답이 있으면 accurate 한 것으로 간주.)

 

위의 그래프를 보면 2012년 AlexNet으로 유의미한 error 감소가 나타나고,

2015년 ResNet으로 처음 인간을 뛰어넘는 성능을 보인 것을 알 수 있다.

 

📍 What is ResNet?

그렇다면 ResNet은 무엇일까?

He, Kaiming; Zhang, Xiangyu; Ren, Shaoqing; Sun, Jian (10 Dec 2015). Deep Residual Learning for Image Recognition.

https://arxiv.org/abs/1512.03385

 

Deep Residual Learning for Image Recognition

Deeper neural networks are more difficult to train. We present a residual learning framework to ease the training of networks that are substantially deeper than those used previously. We explicitly reformulate the layers as learning residual functions with

arxiv.org

ResNet은 2015년 ImageNet challenge detection과 localization 분야에서 우승한 모델로

Microsoft 소속 연구원들에 의해 만들어졌다.

 

이전 AlexNet이 8개 layers, VGG가 19 layers, GoogLeNet이 22개 layers를 쓴데 반해

(이전에는 20개 정도의 layers만 가져도 매우 깊은 NN으로 간주했다.)

ResNet은 무려 152개의 layers를 사용한 Convolutional Neural Network다.

 

일반적으로 neural network에서 layer가 많아지면 gradient 소실 혹은 폭발 문제가 생길 가능성이 커진다.

하지만 ResNet에서 layer가 많아졌음에도 안정적으로 고성능을 낼 수 있었던 핵심은 바로

skip connection으로 residual(corret answer과 prediction의 차이)을 learning한 데에 있다.

 

 

다음은 위 논문의 Abstract를 직접 인용한 부분이다.

' We explicitly reformulate the layers as learning residual functions with reference to the layer inputs,

instead of learning unreferenced functions. '

 

 

ResNet과 기존 NN간의 차별점은 위 그림에서 표시된 identity mapping 화살표이다.

기존 NN은 전 단계의 결과를 토대로 다음 단계 학습이 진행되어 출력까지 도달하게 되는데,

ResNet은 skipping connection을 통해 입력과 출력을 직접 연결하여 residual을 계산하는 과정을 추가하여

gradient가 안정적으로, 더 쉽게 backpropagation될 수 있게 했다. 이때 만일 input과 output 연결에서 차원이 달라진 경우에는 zero padding이나 projection shortcuts(1x1 convonlutional layer 추가)로 처리했다.

 

전체적으로는  conv. layer마다 뒤에 batch normalization을 했고, mini-batch size 256의 SGD를 이용했다. Dropout(뉴런 일부 끄기)은 사용되지 않았다.

 

결국 ResNet은 plain network를 기반으로 residual network를 더해

이전의 VGGNet보다 parameter도 줄일 수 있게 되어 compexity까지 낮춘 모델이 되었다.

 

이러한 ResNet은 layers 수에 따라 버전이 나뉘는데, 그 중 가장 널리 사용되는 것은 ResNet-50, ResNet-101, ResNet-152이다. (-뒤의 숫자는 layers 수를 의미한다.)