딥러닝에 해당하는 글 4

ResNet - Deep Residual Learning for Image Recognition - Preview

Deep Residual Learning for Image Recognition (Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun 저) Preview


는 바야흐로 2015년, VGG Net과 GoogLeNet(Inception v1)의 활약 이후 CNN세상은 춘추 전국시대를 맞고 있었다. VGGNet이 던져놓은 화두는 "깊은 망이 학습이 잘 되지만, 너무 깊으면 안되더라" 라는 내용이었다. 이때 혜성 같이 등장한 딥-러닝의 기린아, ResNet이 등장하게 된다.


ResNet은, 기존 모델들에서 망이 너무 깊으면 학습이 되지 않던 문제를 "Vanishing-Gradient" 이슈 때문으로 해석하였다.





여기서 잠깐! Vanishing-Gradient가 무엇일까?

역전파 과정에서, 뒤로 갈수록 오류의 기울기(Gradient)가 줄어드는 현상이 발생한다.


왜 일까?


(출처 : https://medium.com/machine-learning-world/how-to-debug-neural-networks-manual-dc2a200f10f2)


위 그림은, 다양한 Activation function들의 생긴 모양이다.

보면, Sigmoid의 경우, 일정 수치 이상의 x값에서는 1로 일정이하의 값 에서는 0 으로 값이 고정된다.

따라서, 누적되는 기울기 값들이 점점 흐려지게 된다.


그래서, 이를 해결하고자 나온 것이, ReLU이다. ReLU는 0부터는 일정 기울기로 값이 증가하게 된다.
f(x) = max(0,x)

하지만 역시, 값이 감소하는 상황에서는 0으로 고정 되므로, 기울기가 가려지게 된다.

(그렇다고, 기울기가 계속 일정하면, 딥러닝의 핵심인 Non-linearity가 깨어지게 됨)


그래서 다시 나온것이 Leaky ReLU이다.

이는 0 이하일때에도 일정량의 기울기를 유지해 준다.


하지만, 역시 과하게 깊은 경우에는 기울기가 잘 전달되지 않는 문제점이 남아있다.



ResNet은 이 문제를 해결하기 위해 독특한 방식을 제안하였다. 바로, 일정 노드 마다 앞의 결과를 뒤에 붙여 버려서, Gradient가 전달될 수 있는 지름길을 만들어 놓는 것 이다.



이를 통해 Gradient가 "더 빠르게/잘" 전달되게 되었다.

여기서, "더 빠르게" 도 상당히 집중해 볼 부분이다. 실제 논문에서도, ResNet 을 14층 쌓았을 때와, 일반 CNN을 14층 쌓았을 때, 최종 Accuracy의 차이는 없었지만, 더 빠르게 수렴하였음을 이야기 하고 있다. (Inception Net에서도 ResNet이 꼭 필요한가에 대해선 회의적이었지만, 수렴 속도가 빨라지는 것은 동의하였으며, Inception v4 가 제안된 논문에서 이를 적용한 Inception-ResNet 이라는 모델을 제안하였다.)


그리고, 맨 위 그림에서 처럼, 기존에는 일정 이상의 깊이의 모델이 학습이 되지 않는 현상이 발생하였지만(Over-fitting은 아님, Training set 에서도 오히려 Error가 높기 때문), 깊은 모델에서도 그런 문제가 생기지 않는것을 확인하였다.



결과적으로, 대회에 출품하는 버전에서는 152개의 레이어를 쌓은 모델을 사용하여, 3%의 오차로 우승을 거머쥐었다.


이 글을 통해, ResNet의 컨셉이 잘 이해되었길 바란다.


간단히 살펴보는 ResNet은 이만 마치며,

다음 편, ResNet 논문 리뷰 편 에서 다시 돌아오겠다.



댓글()