본문 바로가기
  • 기술을 이야기하지만 사람을 생각합니다.
20. 인공지능과 딥러닝

[논문리뷰] CNN :: VGGNet 톺아보기

by WE DONE IT. 2018. 11. 18.

VGGNet


Simonyan, K., & Zisserman, A. (2014). Very deep convolutional networks for large-scale image recognition. arXiv preprint arXiv:1409.1556.

https://arxiv.org/abs/1409.1556


논문 요약

  • ILSVRC 2014 대회에서 2등을 차지한, Karen Simonyan과 Andrew Zisserman이 만든 CNN 모델
  • VGGNet은 네트워크의 깊이가 모델이 좋은 성능을 보이는 데 중요한 역할을 한다는 것을 보여줌
  • VGGNet의 필터 크기는 3x3, stride 1, 제로 패딩 1의 Conv 레이어로 이루어져 있으며, 필터 크기 2x2 (패딩 없음)의 Max-pool을 Pooling 레이어로 사용함
  • ILSVRC 대회에서는 GoogLeNet 보다 이미지 분류 성능은 낮았지만, 다른 연구에서는 좋은 성능을 보임. (논문의 Appendix에서 확인할 수 있음)
  • 최근에는 이미지 특징(feature)을 추출하는 데 이용되는 등 기본 네트워크 모델로 활용되고 있음
  • 매우 많은 메모리를 이용하여 연산한다는 단점이 있음



주요 특징

VGGNet 모델 구조

VGGNet 구조[VGGNet 모델 구조]



1. ReLU non-linear를 여러 개 사용할 수 있다. 

Conv 레이어에서 필터 크기를 3x3으로 한 경우, 큰 필터로 구성한 것보다 여러 레이어로 나누었기 때문에 중간에 ReLU 비선형(non-linearity)을 더 많이 들어갈 수 있다. 따라서 decision function이 잘 학습될 수 있다.

2. 학습해야 할 파라미터(weight) 수가 줄어든다

VGGNet의 특징은 작은 컨볼루션 필터(3x3, 1 strides)로 깊은 레이어(16-19 weight layers)를 만들어 좋은 성능을 낸다.

> VGGNet의 구성

  5x5 filter 1개 = 3x3 filter 2개 (2 strides)  

  7x7 filter 1개 = 3x3 filter 3개 (2 strides)


모든 레어어가 c개의 Channel을 가질 경우, 파리미터를 계산하다면 다음과 같다.


5x5 Conv Layer = 5^2xc^2 = 25xc^2

3x3 Conv Layer (2 strides) = 2x(3^3xc^2) = 18xc^2

-> 5x5 conv 사용 시, 3x3 conv 보다 파라미터 수가 39% 증가


7x7 Conv Layer = 7^2xc^2 = 49xc^2

3x3 Conv Layer (2 strides) = 3x(3^3xc^2) = 27xc^2

-> 7x7 conv 사용 시, 3x3 conv 보다 파라미터 수가 81% 증가


즉, 학습해야 할 파라미터의 수가 줄어들기 때문에 정규화(regularization) 문제를 줄일 수 있다.

(AlexNet 모델은 11x11 filters, 4 strides로 이루어져 있다.)


따라서, 큰 필터를 갖는 Conv 레이어 보다 작은 필터로 여러 개의 Conv 레이어를 갖는 것이 더 적은 파라미터를 이용하면서 더 좋은 feature를 뽑을 수 있다. 

하지만, FC(Fully Connected) 레이어가 세 개이기 때문에, 파라미터가 너무 많아진다. (파라미터 수 약 1억2200만) 역전파(back propagation)를 할 때 Conv 레이어의 중간 결과를 저장하기 때문에 많은 메모리 공간을 차지한다는 단점이 있다.




논문 리뷰

장점

  • CNN 주요 모델에 다른 데이터셋으로 테스트한 결과도 첨부하므로써, input 데이터에 따라 VGGNET 모델이 우수한 성능을 낼 수 있음을 증명함.
    -> 데이터셋에 따라 모델의 성능이 좌우됨을 증명함.
  • AlexNet 모델 논문 보다 연구 과정이 더 친절하게 설명되어 있음.

단점

  • A 모델에만 LRN을 적용한 뒤, 성능이 좋지 않음을 증명하는 부분은 논리가 다소 부족할 수 있음. 
    -> A 외 다른 모델에도 적용하여 성능 평가를 했으면 설득력이 더 강했을 것 같다!




References

Module 2: Convolutional Neural Networks. http://cs231n.github.io/convolutional-networks/

http://nmhkahn.github.io/Casestudy-CNN


댓글