작성자 : 17기 임청수
이번 시간에 소개할 논문은 ResNet입니다.
딥러닝은 기본적으로 학습이 어렵습니다. 본 논문에서는 잔차학습이라는 개념을 도입하여 학습의 난이도를 쉽게 만들었습니다.
이처럼 잔차학습이 학습을 쉽게 만들어 준 덕분에 레이어의 깊이를 늘리고 더 높은 정확도를 얻었습니다.
ResNet은 이미지넷 분류 대회에서도 1등을 하며 좋은 성능을 보였고, objective detection이나 simentic segmentation에서도 좋은 성능을 보여줍니다.
딥러닝에서는 레이어가 깊어질수록 특성을 잘 추출해낼 수 있으며 VGGNet이나 GoogLeNet 또한 레이어를 깊게 설정하면서 적절하게 성능을 높였습니다.
하지만 단순히 layer를 늘린다고 성능이 증가하지는 않으며, 오히려 감소하는 degradation문제가 발생합니다.
degradation이 발생하면 그림처럼 train error와 test error가 동시에 증가하게 됩니다.
따라서 이는 test error만 증가하는 overfitting과는 다르다고 볼 수 있습니다.
이러한 문제를 해결하기 위해서 도입한 것이 residual learning입니다.
그림을 보면서 설명하겠습니다.
왼쪽 Plain layer에서 학습하고자 하는 대상은 H(x)입니다. 하지만 이 H(x)를 곧바로 학습하는 것은 어렵다고 주장합니다.
그래서 이걸 곧바로 학습하지 않고 Residual block으로 따로 정의해서 학습하는게 좀 더 난이도가 쉽다고 주장하고 있습니다.
자세히 살펴보면, 일반적으로 하나의 입력값 x가 들어왔을 때 weight layer 2개와 relu 함수를 거치는 형태로 네트워크를 구성합니다.
우리가 의도하는 함수 매핑이 H(x)라고 할 때 H(x)를 직접적으로 학습하기는 어렵기 때문에 F(x)를 이용하자는게 본 논문의 핵심 아이디어입니다.
단순히 input값 x을 이미 layer를 여러 번 거친 결과값인 F(x)에 더해주는 것만으로도 훨씬 더 학습이 빠르고 정확하게 잘 된다는 것을 주장하고 있습니다. (H(x) = F(x) + x)
이렇게 한다면 input x를 더해주면서 앞선 레이어에서 학습한 정보를 그대로 가져올 수 있습니다. 앞서 학습된 정보를 그대로 가져오고 거기다가 추가적으로 2개 layer를 학습한 값을 더해주겠다는 것입니다. 따라서 잔여 정보를 가져오면 우리는 추가적으로 학습만 해주면 되기 때문에 왼쪽처럼 H(x)만으로 학습하는 것보다 훨씬 쉽다고 말하고 있습니다.
논문에서는 residual block에서 2개의 weight layer를 거친 결과값 F(x)와 앞서 학습된 정보 x를 H(x)와 동일하게 사용하고자 합니다. 즉, 우측 residual block에서 학습의 대상은 F(x)로 설정합니다. x를 더해서 우리가 의도했던 매핑인 H(x)라고 생각하는 것입니다.
(F(x) = H(x)-x)
왼쪽 H(x)는 각각의 다른 레이어들이 모두 분리되어 있기 때문에 가중치 값에 대해 개별적으로 모두 학습을 진행할 필요가 있습니다. 그렇기 때문에 학습 난이도가 높아지고, 이러한 현상은 레이어가 깊어질수록 더욱 더 심하게 발생할 수 있다고 말합니다.
F(x)는 input x가 layer를 거친 결과값이며, y는 F(x)에 x를 추가로 더한 결과값을 나타내고 있습니다.
먼저 F(x)는 W1과 W2 총 2개의 layer를 포함하고 있고, 연두색은 둘 사이에 relu함수 연산을 진행하여 비선형적으로 연결해줌을 의미하고 있습니다. 여기에 x값을 더해주는데 옆에 W는 Input output간의 차원이 다를 때 차원을 맞춰주기 위해 연산하는 것입니다.
bottleneck은 50층 이상의 ResNet에서 복잡도를 줄이기 위해 사용한 기법입니다. 한국어로 병목 현상이라고 하는데, 차원을 늘렸다가 좁히는 방식이 병목현상과 유사하다고 하여 붙여진 이름입니다.
좌측에서는 channel 수가 적더라도 3x3 convolution을 두 번 통과했고,
우측에서는 1x1, 3x3, 1x1 순으로 Convolution을 통과하고 channel 수는 4배 정도 많지만, parameter는 세 배 정도 적습니다.
차원을 무작위로 줄이면 연산량이 줄면서 속도는 증가하지만 정보 손실이 발생할 수 밖에 없습니다. 그래서 적절한 합의점이 필요하고, ResNet은 bottleneck을 적절하게 활용해서 성능을 높일 수 있었습니다.
특히 bottleneck을 사용하지 않고 34층을 쌓은 것과 bottleneck을 사용하여 50층을 쌓은 ResNet 모델을 비교 했을 때, 복잡도는 거의 유사하며 성능은 50층을 쌓은 ResNet모델이 더 뛰어난 모습을 보여주었습니다.
아래는 ImageNet에 대한 실험의 결과입니다.
좀 전에 plain과 ResNet의 형태를 비교해서 설명드렸는데, plain은 34층으로 늘렸을 때 error가 증가하는 모습을 보였고, ResNet은 error가 감소하는 모습을 보여주었습니다.
왼쪽 아래는 앙상블을 적용한 결과입니다. Resnet에 앙상블 기법을 활용하면서 3.57%의 성능을 보여주고 있습니다.
우측은 다양한 층에 따른 성능을 비교한 결과입니다. 최대 152층까지 쌓아 4.49%의 성능을 보여주고 있습니다.
이상으로 논문리뷰를 마치겠습니다. 감사합니다.
reference.
1. https://arxiv.org/pdf/1512.03385.pdf
2. https://www.youtube.com/watch?v=671BsKl8d0E
[논문리뷰 스터디] Unsupervised Speech Recognition (0) | 2023.03.23 |
---|---|
[논문 리뷰 스터디] Denoising diffusion probabilistic models (0) | 2023.03.23 |
[논문리뷰스터디] Deep One-Class Classification (0) | 2023.03.22 |
[논문 리뷰 스터디] Isolation Forest (0) | 2023.03.21 |
[논문 리뷰 스터디] Point-NeRF: Point-based Neural Radiance Fields (0) | 2023.03.21 |
댓글 영역