본문 바로가기
딥러닝/CV 논문

[Classification] ResNet 요약

by 혜 림 2022. 7. 10.

 순서상 훨씬 전에 읽었어야 했지만 이제서야 읽고 올리는 ResNet 다. 

 마찬가지로 제목에서부터 요약이라고 하고 있기 때문에, 이번 포스팅에서는 말 그대로 핵심만 짚는다. 

 

[논문]

https://arxiv.org/pdf/1512.03385.pdf

 


Deep Residual Learning for Image Recognition

 

 

 ResNet은 "과연 모델의 깊이는 성능을 담보할 수 있는가?" 라는 질문에서 시작한다. 

 위 그림에서 볼 수 있듯이, 레이어를 많이 쌓은(56) 모델이 더 얕은 모델(20)보다 훈련 데이터 셋의 에러가 컸다. 

 그럼 이게 오버피팅인가? 오버피팅은 training error는 줄어듦에도 불구하고 test error 가 줄어드는 것을 의미하기 때문에, 올바른 설명이 아니다. 

 

 그렇다면 왜 깊은 모델의 training error는 안 줄었던 것일까? 

 기울기 소실!!

 

 따라서 해당 모델을 공부할 때는 어떻게 이 저자들이 기울기 소실을 다루려고 했는지를 보는게 중요하다!!

 

 

이래서 나오는 것이 이 모델의 핵심인 residual learning 이다!

 

기존에는 H(x) = x 가 될 수 있도록 H 함수를 찾는데 목표를 두었다면, 

H(x) - x 를 새로운 함수 F로 정의한다. 

따라서  F(X) = 0 이 될 수 있도록 F 함수를 찾는데 목표를 둔다.

F 라는 함수는 예측값과 실제값의 차이인 잔차를 뜻한다. 

 

이렇게 F가 0이 되는 방식으로 최적화를 하는게 H를 찾아나가는 것보다 좋은 성능을 냈다고 한다. 

 

기존의 H 함수는 H(x) = F(x) + x 로 다시 쓸 수 있다. 

이 식을 봐도 알겠지만, H라는 함수를 미분해도 x 때문에 무조건 1이 나온다. 

기울기 소실을 막을 수 있다~

이때 '+ x' 하는 부분을 identity mapping이라고 부른다. (혹은 shortcut connection) 

 

이 모든게 Introduction에 있어서 어이가 없다

 

 

 

 

기본적인 모델은 VGG19에서 착안했다.

중간의 plain은 레이어를 34개로 늘린 거고, 오른쪽이 residual 을 이용한 모델이다. 

보면 모든 conv 에 시행한 게 아니고 가끔 몇 개의 block을 뛰어넘어서 mapping 하는 경우도 있다. 

 

 shortcut 해서 elementwise하게 덧셈을 하고 싶다면 input과 output의 차원이 같아야 한다는 조건이 있다. 

 그러나 몇 개의 block을 뛰어넘는 연산 때문에 차원이 다를 경우에는 

(a) zero padding을 통해 인위적으로 차원을 늘리거나 (2) 아래식(eq.2) 처럼 linear projection을 해줬다고 한다. 

 저 W를 비단 차원이 맞지 않을 때뿐 아니라, residual block 모두에서 사용할 수도 있는데

W를 쓰건 안 쓰건 identity mapping으로도 충분한 결과를 냈기 때문에 가성비를 따져서 특별히 이용하지는 않았다. 

 

 

 최종적으로 만들어진 모델 구조는 다음과 같다. 

 

 

 결과를 봤을 때도 레이어 깊은 모델의 error가 더 작은 걸 확인할 수 있다. 

 

 

 

다른 모델과 비교했을 때 성능은 다음과 같다. 

 

 

 

한편 bottleneck 연구도 진행했다고 한다. 

 

VGG16 에서도, GoogLeNet 에서도 1*1 conv를 쓰곤 했는데 이런 구조를 bottleneck 이라고 부른다. 

1*1 conv를 이용하는 건 channel수를 줄이기 위함이다. 

 channel수를 늘려서 더 많은 연산을 수행하는데, 

 channel이 줄었다 늘었다 하는 모습이 꼭 bottleneck을 닮았다고 해서 붙여진 이름이다. 

 

 하지만 실상 resnet에서는 bottleneck 구조가 좋은 성능은 내지 못했다. 

 그래서 버려!

'딥러닝 > CV 논문' 카테고리의 다른 글

[Instance Segmentation] Mask R-CNN  (0) 2022.08.01
[Object Detection] Faster R-CNN  (0) 2022.07.27
[Object Detection] CenterNet2 요약  (0) 2022.03.21
[GAN] pix2pix HD  (0) 2022.02.10
[Classification] VGGNet 요약  (0) 2022.02.10

댓글