본문 바로가기

카테고리 없음

GoogLeNet (CNN architecture 기반 모델)

  • GoogLeNet의 핵심 목적은 신경망의 scale에 따른 성능과 훈련 과정의 복잡도 사이의 trade-off를 해결하는 것임
    • 깊은 신경망을 구축함으로써 우수한 성능을 보장하며, 특별한 구조를 통해 훈련 과정에서의 복잡도를 낮춤
  • 네트워크의 구조: 총 27개(22개의 conv, 5개의 pooling layer)의 layer로 구성됨
    • Stem region: 신경망의 초기에는 일반적인 CNN의 은닉층 구조를 가짐(Conv - pooling - conv - pooling)
    • Inception: GoogLeNet의 핵심적인 구조로서 layer를 하나의 sub-network (Network - In - Network) 구조로 구성하여 연산량을 대폭 줄임
    • Classifier: 최종 classifier가 overfitting되거나 gradient vanishing을 방지하기 위해 중간 층에서도 부분적으로 (0.3의 가중치) 분류기 학습을 수행함
  • 작동원리
    • Preliminaries
      • 일반적으로 CNN에서 사용되는 conv layer는 feature map 형태로 직관적인 출력을 도출할 수 있지만 선령 연산을 수행함
      • 이를 바탕으로 비선형의 feature를 학습하기 위해서는 많은 filter의 사용이 필요하고 filter의 수 증가에 따른 연산량 증가가 함께 발생함
      • 따라서, 단순한 conv 연산을 수행하는 것을 넘어 하나의 multi-layer perception을 추가하여 연산을 수행함
      • 즉 신경망 안에 또다른 신경망이 존재하는 구조 (Network-In-Network)임
      • 또 다른 GoogLeNet의 고유한 특징은 1x1 convolution 연산임
          • Conv 연산을 통해 도출되는 feature map의 크기는 아래의 공식을 따라 결정되기 대문에 1x1 conv은 feature map의 크기를 바꾸지 않음 (FM_size = [input size + 2*padding - filter size]/stride +1)
          • 사용되는 1x1 filter의 수를 통해 feature map의 수를 조절하는 것이 가능함
          • 이런한 특징을 이용하여 1x1 conv를 다른 conv 연산의 전처리 과정으로 이용할 수 있으며, 이는 수행되는 연산의 수와 학습해야 하는 filter 매개 변수의 수를 획기적으로 감소시킴
          • GoogLeNet은 Global Average Pooling을 사용함: 활성 함수의 입력을 보다 간단하게 도출함
    • Layer by Layer
      • Stem region에서는 평범한 convolution 연산이 수행되며, 이는 앞에서 언급된 Network-In-Network 구조가 신경망의 초기에는 유의미한 수준의 차이를 만들어내지 못하기 때문임
      • 인셉션 모듈은 NIN 구조를 적용하여 깊은 망을 통한 학습 성능 제고와 필요한 연산량 감소를 달성함
      • Classifier는 softmax 활성 함수를 통해 이미지를 분류하는 역할을 수행하며, 최종적으로 클래스를 판별하는 classifier와 auxiliary classifier로 구분할 수 있음
      • 결과적으로, 깊은 신경망을 구축하여 우수한 분류 성능을 가지면서도 연산량은 줄일 수 있음