0. 등장 배경
VGG16, 19 : 3*3 filter를 이용해 레이어의 깊이를 늘려 우수한 성능을 보였다. 특히 CNN 계열에서 레이어가 깊어지면 특징이 더 풍부해지기 때문에, CV 분야에서의 네트워크 깊이는 많은 장점을 가져와주었다.
사람들은 따라서 VGG에 따라 깊이가 깊어지면 더 높은 성능을 낼 것이라고 생각하였다.
하지만 점차 레이어가 깊어지면 Vanishing Gradient와 같은 문제가 발생함을 인지하였으며, 따라서 본 논문에서는 레이어의 깊이가 깊어질수록, input층에 가까운 은닉층이 희미해지기에 학습에 도움이 되지 않을수도 있음을 주장하였다. 본 논문은 레이어의 깊이에 따른 문제를 종합적으로 지적하고 있다.
1. 잔여블록 (Residual Block)
실제로 우리가 원하는 함수는 곧바로 학습하는것이 어려우므로, 그 대신 학습한 함수에 input값을 더해주는 단순한 아이디어를 사용하였다. (= Shortcut connection, Skip connection)
Input은 그대로 가져오고, 나머지 잔여 정보인 F(x)만 추가적으로 더해주는 단순한 형태로 만들어주겠다는 것이다.
즉, 우리는 잔여효과(즉, 추가적인 정보)인 F(x)만 학습을 하면 되는 상황이다. 따라서 전체를 학습하는 것보다 학습이 오히려 쉬워지고, 수렴을 더 잘 할 수 있게된다. 전체를 학습할 때는 각 weight layers가 모두 분리되어있기 때문에 각 layers마다 학습을 진행해줘야하는데, 그럼 당연히 수렴 난이도가 더 높아지게 된다.
더 자세히 수식적으로 살펴보면 다음과 같다. y 형태로 residual block을 정의하며, 그림에서는 weight를 두개만 사용했지만, 여러개 사용할 수도 있다. (Multiple weights)
2. 장점
기존의 VGG 네트워크보다 더 깊지만 residual block을 활용해 복잡도와 성능은 더 개선되었다.
구현이 간단하며, 학습 난이도가 매우 낮아진다. 깊이가 깊어질수록 높은 정확도 향상을 보인다.
'Computer Vision💖 > Basic' 카테고리의 다른 글
[CV] Adversarial Learning(적대적 학습)이란? + 응용 (0) | 2022.04.24 |
---|---|
[CV] Self-supervised learning(자기주도학습)과 Contrastive learning - 스스로 학습하는 알고리즘 (4) | 2021.07.02 |
[CV] AlexNet(2012) 논문을 code로 구현 해보자 (Keras, PyTorch) (0) | 2021.06.25 |
[CV] AlexNet(2012)의 구조와 논문 리뷰 (0) | 2021.06.23 |
[STAT & DL] 딥러닝의 전반적 구조에 대한 통계적 해석 (0) | 2021.03.05 |