본문 바로가기
Boostcamp

[부스트캠프] ResNet 정리

by Yonghip 2023. 4. 6.

이전에도 ResNet을 리뷰하고 포스팅한적이 있었는데 처음 읽은 논문이라 너무 rough하게 읽기도 했고

이번에 팀원들과 다시 한번 리뷰하며 좋은 인사이트를 많이 얻어서 기록차 생각나는대로 적어보려한다.

 

 

구현시 간과했던점

ResNet을 구현도 해봤는데 간과했던 점도 몇가지 체크해보겠다.

 

 

ReLU는 두번째 weight layer에서 적용하지 않고 잔차 이후에 적용하는게 official이다.

 

 

 

 

 

 

전체 구조에서 점선표시된 부분이 projection layer로 1x1 conv에 추가적으로 stride=2를 적용하여야한다.

 

 

 

 

Why resnet works?

논문리뷰 글을 적을때마다 어째서 이 모델이 좋은지 간략히 설명해왔었는데

ResNet은 당시 도저히 말을 이해 못해서 이 부분을 스킵했던 기억이 있다.

그리고 이번 멘토링을 통해 드디어 약간이나마 가닥을 잡을 수 있었다.

(제목은 Transformer에서 따왔는데 딥러닝의 특징과 잘 어울리는 느낌이라 맘에 들어 똑같이 사용해봤다)

 

 

이 단락에서 어째서 ResNet이 좋은지 설명하는데 나는 크게 두가지 이유로 요약했다.

 

1. 우리가 원하는 optimal함수 = H(x)는 residual connection을 거치며 F(x) = H(x) - x로 변화한다.(기존에는 F(x) = H(x) )

loss가 backward하며 올라온다고 생각할때 residual층에서 loss가 두개로 쪼개진다.

가장 위쪽 그림을 기준으로 왼쪽에는 F(x)에 대한 미분 값이 오른쪽은 x항등함수이므로 1이 올라가게 된다.

그리고 이게 residual하며 쪼개진 곳으로 모여 언제나 일정량의 loss값이 흐르게 하여 gradient vanishing을 방지해주는 역활을한다.

 

2. 1번 개념과 유사한데 층을 쌓으며 일어나는 degradation problem은 모델이 최선으로? 학습할 수 있는 한계가 존재하는데 이이상 layer를 쌓을때 일어난다. 이건 특정층에서 이미 학습이 충분히 진행되서 더 학습할게 없음에도 층을 계속 진행하며 쓸데 없는 loss를 전달해 gradient vanishing의 원인이 된다. resnet은 최적에 도달했으면 그냥 identity매핑을 그대로 학습하면 된다.

한마디로 skip-connection없이 gradient를 그대로 넘기며 출력을 모사하지 않아도 된다는 의미이다.

 

 

 


딥러닝 기술이 워낙 빠르게 발전하고 읽어야할 논문이 넘쳐나서 이젠 더 이상 수학적으로 이게 어찌저찌 해서... 하며 분석하는 경우가 적어도 지금의 나에게는 아예 없다고 확신할 수 있다.

또한 리서처가 아닌 엔지니어로 진로를 확고히 정하면서 오히려 모델을 수학적 보다는 데이터를 어떻게 해서 잘 흘려보냈을까 와 같은 아키텍쳐 부분을 더욱 중점적으로 보고 리뷰할 것 같다.

 

 

 

출처: https://arxiv.org/abs/1512.03385

'Boostcamp' 카테고리의 다른 글

[부스트캠프] Transformer 정리  (0) 2023.04.25
[부스트캠프] Semantic Segmentation 정리  (0) 2023.04.09
[부스트캠프]Pandas 정리  (0) 2023.03.18
[부스트캠프]Numpy정리  (1) 2023.03.18
[부스트캠프]Python 정리  (0) 2023.03.16