2015년 발표된 ResNet의 원본 논문은 Deep Residual Learning for Image Recognition 이라는 제목으로 Kaiming He, Xiangyu Zhang 등이 작성함.
ResNet 논문은 Residual Block이라는 아주 간단하면서도 획기적인 개념을 도입하여 딥러닝 모델의 레이어가 깊어져도 안정적으로 학습되면서 모델 성능 개선까지 가능함을 입증함.
최초 제기 질문: 딥러닝 모델의 레이어를 깊이 쌓으면 항상 성능이 좋아지는가?
레이어를 깊이 쌓았을 때 Vanishing/Exploding Gradient 문제가 발생하여 모델의 수렴을 방해하는 문제가 생기는데, 여기에 대해서는 이미 몇 가지 대응 방법이 알려져 있다.
가장 눈에 띄는 키워드: Degradation Problem.
모델의 수렴을 방해하는 Vanishing/Exploding Gradient 문제와는 달리, 레이어를 깊이 쌓았을 때 모델이 수렴하고 있음에도 불구하고 발생하는 문제.
Degradation Problem: 딥러닝 모델의 레이어가 깊어졌을 때 모델이 수렴했음에도 불구하고 오히려 레이어 개수가 적을 때보다 모델의 training/test error가 더 커지는 현상이 발생. 이것은 오버피팅 때문이 아니라 네트워크 구조상 레이어를 깊이 쌓았을 때 최적화가 잘 안되기 때문에 발생하는 문제임.
ResNet은 깊은 네트워크의 학습이 어려운 점을 해결하기 위해서 레이어의 입력값을 활용하여 레이어가 "residual function"(잔차 함수)을 학습하도록 함.
->일종의 지름길("shortcut connection")을 통해서 레이어가 입력값을 직접 참조하도록 레이어를 변경
Shortcut connection: 앞에서 입력으로 들어온 값을 네트워크의 출력층에 곧바로 더해줌.
네트워크는 출력값에서 원본 입력을 제외한 잔차(residual) 함수를 학습하기 때문에 네트워크가 ResNet이라는 이름이 붙음.
문제의식: 레이어를 많이 쌓았더니 모델 성능이 떨어진다? -> 많이 겹쳐 쌓은 레이어가 제대로 학습이 이루어지지 않았다는 반증.
논문 저자들의 아이디어: 학습해야 할 레이어 H(x)를 F(x)+x로 만들자
x는 레이어의 입력값
F(x)가 Vanishing Gradient현상으로 전혀 학습이 안되어 zero mapping이 될지라도, 최종 H(x)는 최소한 identity mapping이라도 될 테니 성능 저하는 발생하지 않게 된다는 생각.
실제로 학습해야 할 F(x)는 학습해야 할 레이어 H(x)에다 입력값 x를 뺀 형태, 즉 잔차(Residual)함수가 됨.
-> H(x)를 직접 학습하는 것보다 쉬울 것으로 예상! 레이어를 깊이 쌓을수록 Residual에 해당하는 F(x)는 0에 가까운 작은 값으로 수렴해도 충분하기 때문.
실험 결과, 이 구조가 실제로도 안정적으로 학습이 되며, 레이어를 깊이 쌓을수록 성능이 향상되는 것이 확인됨.
최종 출력값은 F(x)+x.
이후 이 값은 ReLU 활성함수를 거친다.
ResNet에서는 shortcut connection을 가진 ResNet의 기본 블록을 Residual Block이라고 부르고 이것이 여러개를 이루어 ResNet이 된다.
네트워크가 깊어짐에 따라 발생하는 경사소실(vanishing gradient) 문제를 ResNet이 해결함을 보여주기 위해서, shortcut connection의 유무와 네트워크 깊이에 따라 경우를 나누어 모델을 구현함.
18개 층과 34개 층을 갖는 네트워크를, 각각 shortcut이 없는 일반 네트워크(plain network)와 shortcut이 있는 ResNet 두 가지로 구현해 총 4가지를 만듦.
이후 이미지넷(ImageNet) 데이터를 사용해 각 모델을 훈련을 시킨 뒤 효과를 분석
왼쪽은 일반 네트워크 두 개로 네트워크가 깊어지더라도 학습이 잘되지 않음. 34층 네트워크가 18층 네트워크보다 오류율(error rate)이 높다.
shortcut이 적용된 오른쪽에서는 레이어가 깊어져도 학습이 잘 되는 것이 확인 됨.
검증 데이터셋(vallidation dataset)에서도 확인.
Top-1 error: 모델이 가장 높은 확률 값으로 예측한 class 1개가 정답과 일치하는지 보는 경우의 오류율
Top-5는 모델이 예측한 값들 중 가장 높은 확률 값부터 순서대로 5개 class 중 정답이 있는지를 보는 것. 낮을수록 좋음.
일반 네트워크("plain")는 레이어가 16개나 늘어나(18->34) 네트워크가 깊어졌는데 오류율은 오히려 높아짐 -> 경사소실로 훈련이 잘되지 않았기 때문.
ResNet에서는 잘 훈련된 레이어가 16개가 늘어난 효과로 오류율이 2.85% 감소.
논문에서 간단한 실험으로 Residual Block의 효과를 입증.