수학/딥러닝 이론

[딥러닝] 세 가지 유명 신경망 - VGG, GoogLeNet, ResNet

AI 꿈나무 2020. 10. 9. 22:41
반응형

사이토고키의 <밑바닥부터 시작하는 딥러닝>을 공부하고 정리해보았습니다.

 


1. VGG

 VGG는 합성곱 계층과 풀링 계층으로 구성되는 기본적인 CNN입니다.

 다만, 아래 그림과 같이 비중 있는 층(합성곱 계층, 완전연결 계층)을 모두 16층(혹은 19층)으로 심화한 게 특징입니다. (층의 깊이에 따라서 'VGG 16'과 'VGG19'로 구분합니다.)

 

 

 VGG에서 주목할 점은 3x3의 작은 필터를 사용한 합성곱 계층을 연속으로 거칩니다.

 그림에서 보듯 합성곱 계층을 2~4회 연속으로 풀링 계층을 두어 크기를 절반으로 줄이는 처리를 반복합니다.

 그리고 마지막에는 완전연결 계층을 통과시켜 결과를 출력합니다.

 

2. GoogLeNet

 GoogLeNet의 구성은 다음과 같습니다.

 그림의 사각형이 합성곱 계층과 풀링 계층 등의 계층을 나타냅니다.

 

 

 그림을 보면 구성이 복잡해 보이는데, 기본적으로는 지금까지 보아온 CNN과 같습니다.

 단, GoogLeNet은 세로 방향 깊이뿐 아니라 가로 방향도 깊다는 점이 특징입니다.

 

 GoogLeNet에는 가로 방향에 '폭'이 있습니다.

 이를 인셉션 구조라 하며, 그 기반 구조는 다음과 같습니다.

 

 

 인셉션 구조는 그림과 같이 크기가 다른 필터(와 풀링)를 여러 개 적용하여 그 결과를 결합합니다.

 이 인셉션 구조를 하나의 빌딩 블록(구성요소)로 사용하는 것이 GoogLeNet의 특징입니다.

 또 GoogLeNet에서는 1X1 크기의 필터를 사용한 합성곱 계층을 많은 곳에서 사용합니다.

 이 1X1의 합성곱 연산은 채널 쪽으로 크기를 줄이는 것으로, 매개변수 제거와 고속 처리에 기여합니다.

 

3. ResNet

 ResNet은 마이크로소프트의 팀이 개발한 네트워크입니다.

 그 특징은 지금까지 보다 층을 더 깊게 할 수 있는 특별한 '장치'에 있습니다.

 

 지금까지 층을 깊게 하는 것이 성능 향상에 중요하다는 건 알고 있었습니다.

 그러나 딥러닝의 학습에서는 층이 지나치게 깊으면 학습이 잘 되지 않고, 오히려 성능이 떨어지는 경우도 많습니다.

 RseNet에서는 그런 문제를 해결하기 위해 스킵 연결(skip connection)을 도입합니다.

 이 구조가 층의 깊이에 비례해 성능을 향상시킬 수 있게 한 핵심입니다.

 

 스킵 연결이란 입력 데이터를 합성곱 계층을 건너뛰어 출력에 바로 더하는 구조를 말합니다.

 

 

 그림에서는 입력 x를 연속한 두 합성곱 계층을 건너뛰어 출력에 바로 연결합니다.

 이 단축 경로가 없었다면 두 합성곱 계층의 출력이 F(x)가 되나, 스킵 연결로 인해 F(x) + x가 되는 게 핵심입니다.

 스킵 연결은 층이 깊어져도 학습을 효율적으로 할 수 있도록 해줍니다.

 이는 역전파 때 스킵 연결이 신호 감쇠를 막아주기 때문입니다.

 

 ResNet은 먼저 설명한 VGG 신경망을 기반으로 스킵 연결을 도입하여 층을 깊게 했습니다.

 그 결과는 다음과 같습니다.

 

 

 그림과 같이 ResNet은 합성곱 계층을 2개 층마다 건너뛰면서 층을 깊게 합니다.

 실험 결과 150층 이상으로 해도 정확도가 오르는 모습을 확인할 수 있었습니다.

 

 스킵 연결은 입력 데이터를 그대로 흘리는 것으로, 역전파 때도 상류의 기울기를 그대로 하류로 보냅니다.
 여기에서의 핵심은 상류의 기울기에 아무런 수정도 가하지 않고 그대로 흘린다는 것입니다.
 그래서 스킵 연결로 기울기가 작아지거나 지나치게 커질 걱정 없이 앞 층에 '의미 있는 기울기'가 전해지리라 기대할 수 있습니다.
 층을 깊게 할수록 기울기가 작아지는 소실 문제를 이 스킵 연결이 줄여줍니다.
 이미지넷이 제공하는 거대한 데이터셋으로 학습한 가중치 값들은 실제 제품에 활용해도 효과적이고, 또 많이 이용하고 있습니다.

 이를 전이 학습이라고 해서, 학습된 가중치(혹은 그 일부)를 다른 신경망에 복사한 다음, 그 상태로 재학습을 수행합니다.
 예를 들어 VGG와 구성이 같은 신경망을 준비하고, 미리 학습된 가중치를 초깃값으로 설정한 후, 새로운 데이터셋을 대상으로 재학습(fine tunning)을 수행합니다.

 전이 학습은 보유한 데이터셋이 적을 때 유용한 방법입니다.

 

반응형