일반적으로 Deep Neural Network는 층을 깊히 쌓을수록 성능이 증가합니다.
깊은 모델을 구축할수록 복잡한 데이터의 훈련도 가능해지며 그에 따 훈련시간과 비용도 증가합니다.
그러나 층이 깊어질 경우 최적화를 진행하는 과정에서 비용이 많이 발생할 뿐만 아니라 Gradient Vanishing 문제가 발생할 수도 있습니다.
때문에 일정 규모 이상의 데이터는 학습하기 어려워지며 이에 따른 모델 성능의 한계가 존재할 수 밖에 없게 됩니다. "Deep Residual Learning for Image Recognition" 논문은 이러한 문제점에 대한 해결책을 제시합니다.
논문은 해당 문제점을 Residual Learning이라는 매우 단순한 방법을 통해 해결합니다.
여기서 Residual 이란 단순히 "오차"를 일컺는 말 입니다.
기존 모델 훈련 방식에서는 Residual을 단순히 성능평가의 지표로서 활용하였으나 논문에서는 이를 이용하여 학습에 사용합니다.
residual learning에 있어 핵심은 층과 층을 순차적으로 연결하는 것이 아닌 shortcut connection을 통해 연결하는 것 입니다.
설명의 편의을 위해 shortcut connection으로 만들어진 구조를 Block으로 지칭하겠습니다.
shortcut connection이 적용되지 않은 기존의 방법은 각 Layer가 입력 값을 Activation Function에 입력시킨 F(x)를 내봅냅니다.
그러나 Block에서는 F(x)+x를 내보내게 됩니다. 이를 H(x)라고 합니다. ( H(x) := F(x) + x )
최적화 과정에서 대상은 F(x) := H(x) - x. 즉, 잔차함수가 됩니다.
우리는 이제 입력과 출력의 차이를 최소화 시키면 됩니다.
다시 말해, 0 = H(x) - x.
H(x) = x 를 만드는 것이 학습의 목적이 됩니다.
이는 최적화 과정에서의 근사의 목표를 지정함으로써 학습의 목적을 뚜렷하게 만듭니다.
벡터 양자화에 있어 Residual Vector를 다루는 것이 일반 Vector를 다루는 것보다 효과적이라는 사실을 담고 있다.
저수준의 vision과 Computer Graphics 분야에서 Residual Solution을 적용한 방식이 더 빨리 수렴하며 최적화를 단순화할 수 있는 더 나은 방식임을 알 수 있다.
벡터 양자화(Vector Quantization, VQ)는 데이터의 차원을 줄이거나 데이터를 표현하는 방법을 간소화하는 기술 중 하나이다.
이전 Layer가 바로 다음 Layer가 아닌 몇 step 이후의 Layer에 연결되는 것을 Shortcut Connection이라고 한다. 이러한 연결법을 통해 Auxiliary 연결, Gated 연결법 등 다양한 구조의 연결이 가능하다.
논문에서 제시한 ResNet의 경우 항상 닫히지 않는 Gated 연결법이며 따라서 지속적으로 residual function을 학습하는 것이 가능하다.
그림이 매우 길다. (목 빠지지 않게 주의하자.)
우리가 주목할 부분은 오른쪽에 있는 ResNet의 연결법이다.
2개의 Conv Layer을 건너뛰는 Shortcut Connection을 취하고 있다.
같은 크기의 filter를 유지하며 층이 깊어질수록 더 많은 filter를 사용하고 있다.
중간중간 Pooling Layer도 넣어주고 있다.
사실 Shortcut Connection이 존재하는 심층 CNN이라는 사실 외엔 특별한 것이 없는 단순한 구조이다.
ImageNet 2012 Classification Dataset을 사용하였으며 기존 모델과 ResNet의 성능을 비교한다.
그림에도 나와 있듯 아무것도 적용하지 않은 Plain Network (왼쪽)과 ResNet (오른쪽)의 비교이다.
학습을 진행할수록 Plain Network와 비교하였을 때 ResNet의 오차율이 더욱 감소함을 알 수 있다.
타 모델과 비교하였을 때의 성적이다.
ResNet의 size와는 크게 상관 없이 VGG-16, PReLU-net에 비해 더 나은 성능을 보여준다.
같은 ResNet 내에서 비교 하였을 때, 층이 깊어질수록 오차율이 더 낮아짐을 알 수 있다.
"We replace each 2-layer block in the 34-layer net with this 3-layer bottleneck block, resulting in a 50-layer ResNet."
논문에서는 34층 ResNet에서는 2개 층을 건너뛰는 ResNet을 구축, 50층 ResNet에서는 3개의 층을 건너뛰는 ResNet을 구축하였다.
층이 깊어질수록 건너뛰는 범위가 조금씩 길어지는 모양이다.
논문에는 이에 대한 명확한 상관관계가 나와있지 않아 아쉽기에 관련 내용을 탐색한 후 추가하도록 하겠다.