본문 바로가기
딥러닝(Deep Learning)/D&A Deep Session

[D&A Deep Session] 6차시 - 10. ResNet

by rahites 2022. 5. 4.

 

# ResNet

- 2015년 ILSVRC에서 우승을 한 알고리즘으로 152개의 층을 가진다. 

 

- 일반적으로 생각을 할 때 Layer를 계속 쌓아 층을 깊게하면 무조건 성능이 좋아질 것이라고 생각할 수 있다. 하지만 기존의 방식으로 네트워크를 만들어보면, 과적합때문에 층이 깊더라도 좋은 성능이 나오지 않는다. 따라서 ResNet의 저자는 우리가 일반적으로 생각할 수 있는 'Layer가 깊은 모델이 최소한 Layer가 낮은 모델보다는 더 성능이 좋을 것이다'라는 아이디어를 실현하고자 했다. 

 

- Layer가 깊어질 때 생기는 가장 큰 문제점은 Gradient Vanishing 문제이다. Layer가 깊기 때문에 작은 미분값이 여러번 곱해지게 되고 이 때문에 Gradient 값이 0에 가까워지는 것이다. 이는 곧 Input 데이터가 연산되는 과정에서 원래 정보를 잃게 되는 것을 의미한다. 

 

- 이러한 문제점을 극복하기 위해 ResNet에서 택한 방법은 Identity mapping이다. Identity mapping은 일종의 댐 역할을 한다고 생각할 수 있는데, 학습을 진행함에 있어 기존의 층에서 x를 넣으면 x가 나오는 통로를 만들어 과적합을 방지하는 것이다. 

 

* Residual Block

: x -> H(x)를 구할 때 weight layer만을 통과하던 기존의 방식에 입력값을 출력값에 더해줄 수 있는 shortcut을 만들어 준 방법

 

기존의 신경망은 입력값 x를 사용하여 H(x)를 만드는 것이 목적이었다. 하지만 ResNet의 목적은 F(x) + x를 최소화하는 F(x)를 찾는 것이 목표이다. ( 이 때 x는 고정 값 ) 이 때 F(x)가 0이면 입력과 출력이 모두 0인 Identity mapping이 가능하고 F(x)를 최소로 해주는 것은 H(x) - x를 최소로 만들어준다는 의미로 이 때 H(x) - x를 잔차(residual)라고 부른다. 

 

이 때 x는 미분시 1이므로 최소한의 기울기가 1로 유지되고, 이로인해 기울기 소실 문제를 해결하고 layer를 깊게 쌓을 수 있게 된다. 

 

ResNet의 구조는 모든 부분에서 3 x 3 Convolution을 진행하고 Residual Block, pooling을 반복한다. 크기를 반으로 줄일 때 차워 수를 2배로 늘린다. 또한 Googlenet에서 사용되었던 Bottle Neck 구조를 활용하여 Layer가 50개 이상일 때 1 x 1 convolution을 진행하여 연산량을 줄여준다. 기본적인 구조는 VGG-19로 되어있고 최종적으로 152 Layer까지 연장하여 알고리즘이 완성된다. 

댓글