728x90

 이번 시간에는 잔차 블록을 통해 훨씬 깊게 만들어진 신경망인 ResNet에 대한 논문을 정리해보고자 합니다. 매번 논문들을 번역하는 식으로만 공부했지만 이번에는 가능한 번역보다는 내용 흐름을 정리해보겠습니다.

 

 

1. 신경망의 층을 깊게 할 때 문제점.

1.1 신경망을 깊게 만드는 것의 중요성

 우선 심층 합성곱 신경망은 이미지 분류 작업을 시발점으로 널리 사용되었는데요. 이런 심층 신경망은 저수준/중수준/고수준 특징들을 모아서, 분류기로 end-to-end 학습을 시키게 됩니다. 여기서 특징의 복잡도는 층의 깊이에 따라 다양해질수가 있어요.

 

1.2 깊은 신경망의 문제 1 : 그라디언트 폭증/소실과 정규화

 그래서 신경망을 깊게 만드는건 중요하지만, 몇가지 문제가 발생하게 됩니다. 신경망 모델은 학습 과정에서 그라디언트로 기존의 파라미터들을 갱신하는데, 층이 깊어질수록 그라드언트가 사라지거나  폭증해서 최적의 파라미터를 찾도록 수렴하는걸 방해하거든요. 이 문제를 해결하기 위해서 파라미터를 정규화시켜 초기화 하거나 정규화 계층을 두어 풀수 있었습니다.

 

1.3 깊은 신경망의 문제 2 : 디그라데이션 degradation의 발생

 정규화 방법을 통해서 깊은 신경망도 수렴할 수 있게 되었으나 디그레디에이션 문제가 생겼습니다. 신경망의 깊이가 증가할 수록 정확도가 포화/더 이상 올라가지 않고 빠르게 감소하되는 문제가 생깁니다. 이런 디그라데이션 문제는 K. He at el와 이 논문에서의 실험 결과  신경망 모델을 더 깊게 할수록 훈련 에러가 더 높게나온다는 점에서  오버피팅에 의한 것이 아닌걸 알 수 있었습니다.

* 오버 피팅의 경우 학습 데이터에 과하게 학습된 것인데, 깊은 신경망이 더 훈련 에러가 낮아야 하지만 얕은 신경망이 훈련 에러가 더 낮다는 점에서 오버피팅이 아니라고 할 수 있습니다.

 

 

그림 1. CIFAR-10 데이터셋을 이용한 20, 56 계층의 일반 신경망의 훈련 에러(좌측), 테스트 에러(우측). 깊은 신경망일수록 훈련과 테스트 에러 둘다 높은걸 볼 수 있습니다. ImageNet 데이터셋을 이용한 실험결과는 그림 4에서 볼수 있습니다.

 

 

1.4 깊은 신경망의 문제 3 : 층을 깊이 쌓는다고 디그라이데이션을 해결 하기 어렵다!

 위 결과를 볼때 훈련 정확도의 저하, 디그라데이션 문제를 보면 모든 시스템들을 최적화 하기가 어렵다는 것을 알 수 있습니다. 얕은 신경망 아키텍처와 동일한 모델에 층을 추가해서 깊은 모델을 만들었다고 가정하면, 당연히 깊은 모델이 얕은 모델보다 훈련 에러율이 낮아야 할거에요. 하지만 위 실험 결과를 봤을때 단순히 층을 쌓는다고 해서 더 나은 결과가 나오지 않는 걸 알 수 있어요

 

300x250

+ Recent posts