안녕하세요 이번 포스팅은 Deep Residual Learning for Image Recognition에 대한 논문리뷰가 포함되어 있습니다. ResNet 의 큰특징은 Network을 깊게 쌓기 위해서 Residual learning을 활용하였습니다.
보통 신경망을 깊게 쌓을수록 특징을 잘 파악하여 , 성능이 좋아진다라고 직관적으로 생각할수 있습니다.
일반적으로 CNN 에서 레이어가 깊어질수록 채널의수가 많아지고 너비와 높이는 줄어듭니다.
VGG 네트워크는 ResNet 이 나오기전에 작은필터를 이용해 레이어를 깊게 사용하여 우수한 성능을 나타내었습니다.
하지만 아래의 실험결과를 보면 깊게 쌓은 네트워크에서 어느시점이 지나면 Training / Test 에러가 많이 나타남을 보여주게 됩니다. 논문에서는 이러한 현상을 degradation problem 이라 표현하였습니다 이유는 무엇일까요?
" 네트워크를 무작정 깊게 쌓으면 Vanishing / Exploding gradient 문제를 야기할수 있습니다."
이것을 극복하기 위해서는 가중치의 초기값을 적절한 값을 선택하거나 , ReLu를 Activatoin 함수로 사용, Batch Normalization 등을 통해 극복할수 있습니다.
잔여블록 (Residual block)
ResNet은 신경망을 깊게 쌓아도 성능이 줄지 않기 위해 Residual Block 이라는 개념을 도입했습니다.
두 그림의 각각의 input은 x이고 결과는 H(x) 입니다.
논문에 표현된 Residual mapping 은 오른쪽 그림의 F(X)를 나타내고 , Identity mapping 은 입력값을 그대로 전달한 x를 나타냅니다. 여기서의 중요요지는 학습을 하고자하는 mapping 을 H(x)라 하고 ,
Plain Net 의 경우에는 x를 받아 Convolution layer 인 Weight Layer 와 Relu 를 2번 지나는 학습을 하는것입니다.
relu를 통과하는 이유는 전체적인 네트워크가 non -linear 한 동작을 수행할수 잇도록 만들어 줍니다.
Residual Net은 빨간사각형부분인 F(X)만 학습하고 (이부분을 잔여부분이라 합니다.)마지막에 x만 더해줌으로써 학습을 더 쉽게 할수 있다는것입니다.
즉 전체인 F(x)+x 보다 학습이 쉬워집니다. x만 더해주는것이기 때문에 파라미터가 추가로 생성되는것도 아니고, 복잡도가 증가하는것도 아닙니다.
논문에서identity x를 shorcut connection 이라하며 다른 곳에서는 skip connection이라고도 부릅니다.
다시 말씀드리면
Plain Net의 H(x)는 이상적으로 학습이고 Residual Net은 좀더 쉬운 F(x)로 학습하고 앞서 학습된 x에 F(x)를 더해주는 형태입니다.
ResNet의 수식적 이해
좀더 수식적으로 이야기해보면 아래와 같이 표현될수 있습니다.
input (x)과 output (y) 이미지 크기가 동일하지 않으면 Ws를 곱해주는데 , x를 프로젝션 하여 사이즈를 맞춰준다 생각하시면됩니다.
결과적으로 Residual block을 사용하면 아래와 같이 좀더 좋은 학습결과를 가져온다는 것이 논문의 핵심 내용입니다..
Residual block을 사용한것 에 앙상블기법을 추가적으로 사용했을때 성능이 더좋아졌다.
결론은 ResNet을 사용하면 더 깊게 신경망을 구축해도 아래그림과 같이 성능적인 이점이 있으면서 , 신경망을 깊게 쌓으면서 좋은 Feature map에 대한 정보를 얻을수 있는 이점이 있습니다.
'Deep Learning' 카테고리의 다른 글
Overfitting (과적합)을 막는 방법- Regularization(정규화) (0) | 2022.07.20 |
---|---|
신경망을 깊게 쌓아보자 !! VGG Net (VERY DEEP CONVOLUTIONALNETWORKSFORLARGE-SCALEIMAGERECOGNITION 논문 리뷰) (0) | 2022.07.12 |
CNN의 원조 계승자 : AlexNet (논문 리뷰포함 : ImageNet Classification with Deep Convolutional Neural Networks) (0) | 2022.07.06 |
CNN 이란 무엇인가? (0) | 2022.06.28 |
딥러닝이란 무엇인가? (0) | 2022.06.22 |