본문 바로가기
논문리뷰

[논문리뷰] Inception v2, v3 논문 리뷰

by 단깅수 2025. 1. 4.
728x90

오랜만에 돌아온 논문 리뷰 시간입니다.

본 논문은 2015년에 등장한 논문입니다.

 

 

 

Rethinking the Inception Architecture for Computer Vision

저자 : Christian SzegedyVincent VanhouckeSergey IoffeJonathon ShlensZbigniew Wojna

 

[0] Background

인셉션의 구조를 알아보기 전에 인셉션이 나오게 된 배경에 대해서 먼저 알아보겠습니다.

 

2012년 이후 : ImageNet 대회에서 AlexNet이 등장해 객체 탐지, 세분화 등 다양한 CV Task에 성공적으로 적용되었습니다.

 

2014년 이후 : 더 깊고 넓은 아키텍쳐를 사용하면서 광범위한 CV Task에서 높은 성능 향상을 보였고, 그 중에 눈에 띄는 모델이 VGGNet과 GoogleLeNet(Inception v1) 이었습니다.

 

하지만 VGGNet과 GoogleLeNet은 각각 문제점이 존재했는데요.

 

1) VGGNet의 문제점

VGGNet Architecture

 

VGGNet은 아키텍쳐에서도 알 수 있듯이 구조적으로 단순한 장점을 가지고 있지만, 계산 비용이 높다는 문제점이 있습니다. 계산 비용은 Fully Connected Rayer 때문에 높습니다. FC Layer는 이전 레이어의 모든 뉴런과 완전히 연결되어 있고, 이는 입력 뉴런 수 x 출력 뉴런 수에 비례하는 파라미터를 생성해야 하기 때문에 만약 입력 뉴런이 4096, 출력 뉴런도 4096이라면 파라미터 수는 4096 x 4096 = 16,777,216개가 됩니다. 어마어마하죠.. 아무튼 VGGNet은 계산 비용이 높다는 단점이 존재합니다.

 

2) GoogleLeNet (Inception v1)의 문제점

Inception v1 Architecture

 

반면, Inception은 계산 비용이 매우 낮다는 장점이 있습니다. 그래서 이를 통해 빅데이터 분야에서 사용하기에 용이해졌고 특히 모바일 기기의 CV Task에 도움이 되었다고 하죠. 하지만 위처럼 모델 아키텍쳐가 매우 복잡하다는 단점이 있고 모델 정확도 향상을 위해 단순하게 확장시킨다면 계산 비용이 낮다는 장점이 없어질 수 있습니다.

 

예를 들어, Inception Model의 모든 Filter Bank 크기를 2배로 늘리는 간단한 변환만으로도 계산 비용과 파라미터 수가 모두 4배씩 증가하기 때문에 단순히 모델을 확장하는 것은 어렵습니다.

 

따라서 해당 논문에서는 이러한 Inception 모델을 어떻게 효율적으로 확장시킬 수 있을지 몇 가지 일반적인 원칙과 아이디어를 설명하면서 모델을 제시합니다.

 


 

[1] Introduction

보통 AI 분야의 새로운 모델이 제시된다면 대부분의 경우 둘 중 하나의 범주에 포함됩니다.

 

  1. SOTA 급 성능 향상
  2. 모델 경량화

인셉션의 경우 2번 모델 경량화를 신경쓴 모델입니다.

 

모델 파라미터 수 비교

 

그리고 어떻게 기존의 Inception 모델을 효율적으로 확장시킬 것인가에 대해 두 가지 아이디어를 제시합니다.

 

  • Factorized Convolution
  • Aggressive Regularization

 

위 두 아이디어는 아래에서 차차 알아보도록 하겠습니다.

 


 

[2] General Design Principles

모델의 품질과 적은 계산 비용 이점을 유지하면서 확장시키기 위해 몇 가지 설계 원칙을 제시합니다.

본 설계 원칙들은 실험적이며 정확성과 타당성을 평가하기 위해 추가적으로 검증하는 작업이 필요할 수 있다고 말합니다.

 

1. 네트워크 초기에 병목 현상을 피할 것

- 신경망에서 입력 데이터를 출력으로 전달할 때 정보가 지나가는 통로를 병목처럼 좁게 만들면 중요한 정보가 손실될 수 있음

 

- 특히 이러한 병목 현상이 초반부에 생긴다면 데이터의 중요한 특성이 제대로 전달되지 않을 것

 

- 예를 들어, 처음 Layer는 224x224 크기의 이미지를 처리할 때 많은 채널을 사용해 정보를 풍부하게 표현하고, 마지막 부분에서 1x1 크기로 압축해 Task를 진행하는데, 초반부에서 너무 적은 채널로 시작하면 이미지의 특성을 제대로 학습하기가 어려울 수 있음

 

 

2. 더 높은 차원의 표현은 네트워크 내에서 로컬로 처리하기가 쉽다는 것

- 고차원(많은 필터, 채널)으로 데이터를 표현하면 데이터의 다양한 특성을 분리하기 쉬워짐

 

- 예를 들어, 고양이와 강아지를 구분하는 모델에서 고차원 표현은 고양이의 귀 모양, 강아지의 코 형태 등 세부적인 특징을 각각 분리해 학습할 수 있도록 함

 

- Inception은 많은 필터를 활용해 고차원 특성을 생성하고 이를 지역적으로 처리(1x1 conv)해 학습 속도를 향상시킴

 

 

3. 공간 집계는 표현력의 손실 없이 더 낮은 차원의 임베딩을 통해 수행될 수 있다는 것

- 이미지 데이터를 공간적으로 결합하기 전에 데이터 차원을 줄이는 것이 성능에 큰 영향을 주지 않으면서도 계산량을 줄일 수 있는 방법

 

- 인접한 픽셀 간 상관관계가 높아 저차원으로 압축해도 정보 손실이 적다고 함

 

- 예를 들어, 입력 데이터가 64채널을 포함하고 있을 때 1x1 conv로 채널 수를 64 -> 16으로 줄이고 16채널 데이터를 3x3 필터로 패턴을 학습하면 계산량은 줄었지만 성능에는 큰 영향이 없음

 

 

4. 네트워크의 폭과 깊이를 균형있게 조정해야 한다는 것

- 네트워크의 성능은 폭(Filter 수)과 깊이(Layer 수)를 균형있게 증가시켰을 때 가장 효과적으로 향상됨

 

- 폭만 넓힌 경우 : 필터 수를 너무 늘리면 네트워크가 과적합되거나 속도가 느려질 가능성

 

- 깊이만 늘린 경우 : 레이어가 너무 많아지면 학습 과정에서 정보가 손실되거나 기울기 소실 가능성

 


 

[3] Factorizing Convolutions with Large Filter Size

Inception 네트워크는 기본적으로 차원 축소를 관대하게 사용하여 계산량 이득이 발생합니다.

특히 본 논문에서는 계산 효율성을 높이기 위해 다양한 설정에서 합성곱을 인수분해하는 방법들을 탐구합니다.

 

1) Factorization into smaller convolutions

 

크기가 큰 필터를 사용한 Conv Layer는 계산 과정에서 많은 비용이 발생하는 문제가 있습니다.

5x5, 7x7 Conv를 3x3 Conv로 분해하면 계산량과 파라미터가 감소합니다.

 

- 5x5 Conv 1개로 계산 : 5x5 = 25

- 3x3 Conv 2개로 계산 : 3x3 + 3x3 = 18 (약 28% 감소)

 

계산량과 파라미터가 감소하는 건 알겠는데 이렇게 했을 때 표현력의 손실로 이어지지는 않는지 검토해볼 필요성이 있습니다. 

이를 알아보기 위해 우측 그래프처럼 성능 비교해보았을 때 3x3 conv를 2번 사용하는 것이 성능적으로도 항상 높았고, 비선형성을 2번 추가하기 때문에 더 복잡한 표현을 이해하기에도 도움이 됩니다.

 

2) Spatial Factorization into Asymmetric Convolutions

 

그러면, 우리는 3x3 까지 줄였으니까 여기서 더 줄일 수도 있을까?에 대한 질문을 던질 수 있습니다. 

그래서 먼저, 3x3을 2x2로 줄여보겠습니다.

 

- 3x3 Conv 1개로 계산 : 3x3 = 9

- 2x2 Conv 2개로 계산 : 2x2 + 2x2 = 8 (약 11% 감소)

 

2x2로 줄이면 약 11% 연산량을 줄일 수 있다는 결과를 얻었습니다.

하지만 저자들은 2x2로 줄이지 않고 비대칭 conv를 활용해서 연산량을 더 줄일 수 있다는 결과를 발견했습니다.

 

- 3x3 Conv 1개로 계산 : 3x3 = 9

- 1x3, 3x1 Conv 2개로 계산 : 1x3 + 3x1 = 6 (약 33% 감소)

 

추가적으로, 실험한 결과 이러한 행렬 분해를 초기 레이어에 적용하는 것은 잘 작동하지 않고, 오히려 중간 사이즈 그리드에서 적용하는 것이 훨씬 좋은 결과를 보였다고 합니다. (mxm 피쳐맵에서 12 <= m <= 20인 경우)

 

가장 좋은 결과는 n이 7일 때 였구요.

 


 

[4] Utility of Auxiliary Classifiers

Inception의 보조 분류기

 

GoogleLeNet(Inception v1)에서 모델 아키텍처에 보조 분류기를 사용했습니다.

모델이 깊어지다보면 기울기 소실 문제를 야기할 수 있는데, 이러한 기울기 소실 문제를 해결하고 유의미한 가중치를 하위 Layer로 전달해 학습 초기에도 유용한 결과를 얻고자 하여 보조 분류기를 사용했다고 합니다.

 

따라서 본 논문에서는 보조 분류기가 정말로 도움이 되는지 검증하였습니다.

 

GoogleLeNet의 가설 중 하나는 보조 분류기를 학습 초기에 수렴을 돕기 위해 사용하는 것인데 이에 대해 검증해보니까 이 가설은 틀렸다고 주장하였습니다.

 

하지만, 보조 분류기가 없는 모델과 비교했을 때, 학습의 끝에 가서는 더 나은 결과를 보이긴 했다고 하네요.

 

이러한 보조 분류기를 저자는 성능적 향상보다는 과적합 방지를 위해서 사용하면 좋을 것이라고 주장합니다.

 

Batch Nomalization이나 Dropout이 있을 때 메인 분류기가 더 잘 작동하기 때문이라고 합니다.

 

그래서 결과적으로 보조 분류기를 성능 향상보다는 과적합 방지용으로 사용하면 좋을 것이라고 얘기하고 있습니다.

 


 

[5] Efficient Grid Size Reduction

다음은 인셉션 연산을 먼저 할 것이나 풀링을 먼저 할 것이냐를 비교하는 챕터입니다.

Inception, Pooling 순서

 

인셉션을 먼저할 지 풀링을 먼저할 지 연산을 비교하는 예시가 많은데

문과 출신으로 아무리 뚫어져라 봐도 이해가 잘 안돼서

간단하게 정리만 해보았습니다.

 

  • Inception을 먼저한다면?
    • 전체적인 연산량이 증가함
  • Pooling을 먼저한다면?
    • 연산량은 줄어들지만 표현력또한 줄어듦 -> 병목현상 발생

 

따라서, 연산량 혹은 표현력 중에 하나를 선택해야 하는 상황에

본 논문에서는 아래와 같이 Pooling Layer와 Conv Layer를 병렬 구조로 두어서 두 구조의 장점을 모두 가져갈 수 있도록 했습니다.

 

 


[6] Inception v2 Model Architecture

 

위에서 설명한 개념들로 Inception v2 Model Architecture가 구성됩니다.

 

초기의 7x7 conv를 3x3 conv 3개로 변경하고 인셉션 모듈 안에서 제로 패딩을 수행합니다.

 

이후 Figure 5의 모듈을 3번 사용하고

 

Figure 6의 모듈을 5번 사용하는데 이 때 보조 분류기도 추가로 들어갑니다.

초기 층에서는 잘 작동하지 않아서 중간 층에 넣은 것으로 보입니다.

 

그 다음, Figure 7의 모듈을 2번 사용하는데 고차원의 표현력을 뽑아내기 위해 사용된 것으로 보입니다.

 


 

[7] Model Regularization via Label Smoothing

Inception v2 모델 아키텍쳐를 구성한 이후에 본 저자들은 모델 정규화 부분을 더욱 신경썼습니다.

 

특히 데이터 라벨에 대해 One-hot encoded label로 표현하였는데

즉, [0, 0, 1, 0]과 같이 표현했다고 합니다.

 

그러나 이러한 경우에 과적합의 문제를 야기할 수 있고

정답에 대해 지나치게 확신하는 모델이 될 수 있다는 문제점이 존재합니다.

 

따라서, Label Smooting 기법을 사용했다고 합니다.

 

- Label Smooting 기법이란?

정답 라벨이 [0, 1, 0, 0] 보다는 [0.1, 0.7, 0.1, 0.1]로 만드는 기법을 말합니다.

이 기법을 사용한 경우에 모델의 일반화 성능 및 적응력 향상에 도움을 준다고 논문에서 밝히고 있습니다.

 


 

[8] Training Methodology & Performance on Lower Resolution Input

사실 이 부분은 8번, 9번으로 쪼개져 있는 부분인데 내용이 적어서 그냥 합쳤습니다.

 

8번은 학습 방법론을 얘기하는데, 일단 Gradient Clipping 기법을 사용해 학습의 안정성을 향상시켰다고 합니다.

 

Gradient Clipping이란 역전파 시 기울기 폭발(Gradient Explosion)을 방지하기 위해 기울기의 크기를 특정 임계값으로 제한하는 기법입니다.

 

옵티마이저는 Momentum, RMSProp 옵티마이저를 사용해 실험했지만 RMSProp에서 최적의 결과를 얻어낼 수 있었다고 합니다.

 

학습률은 0.045였고, 2 에폭마다 감소시키면서 학습을 진행했다고 합니다.

 

 

 

9번은 낮은 해상도에서도 정확도가 거의 유사하게 나왔다는 내용입니다.

 


 

[9] Experimental Results and Comparisons

 

그래서 지금까지 Inception v2에 대한 설명만 있었는데 왜 Inception v2, v3 논문 리뷰인지 궁금하지 않으셨나요.

 

그 이유가 이제 나옵니다.

 

Inception v3는 Inception v2의 모든 기법들을 누적해서 적용한 모델이라고 합니다. 즉, 왼쪽 표에서 가장 아래 모델이 Inception v3인거죠.

 

Inception v3 = Inception v2 + RMSProp + Label Smoothing + Factorized 7x7 + BN-auxiliary

 

오른쪽의 실험 결과는 Single Model의 경우 성능 비교 표를 첨부했는데,

 

그 때 당시 있었던 모델들에 비해 Error Rate를 많이 감소시킨 것을 확인할 수 있네요.

 


 

[10] Conclusion

마지막으로 결론입니다.

 

  • 본 논문에서는 기존 Inception v1 모델을 어떻게 효율적으로 확장시킬지 몇 가지 설계 원칙과 방법론을 통해 연구를 진행함
  • 특히 Conv Layer를 분해하고 적극적인 차원 감소로 계산 비용 절감과 높은 성능 유지의 이점을 모두 챙길 수 있었음
    • Factorized Convolution, Aggressive Regularization
  • 적은 파라미터 수와 BN 보조분류기를 활용한 정규화, Label Smoothing 기법으로 상대적으로 적은 양의 데이터로도 좋은 퀄리티를 학습할 수 있었음

 

CV 논문을 거의 읽어보지 않아서 초장부터 이해하는데 매우 오랜 시간이 걸렸고 사실 아직도 개념들이 완전히 이해된 느낌은 아니긴 해요. 그래도 반복적으로 보면서 더 잘 이해할 수 있도록 하겠습니다.

 

긴 글 읽어주셔서 감사합니다.

 

 

[논문리뷰] Whisper 논문 리뷰

오늘은 Whisper 논문 리뷰를 가져왔습니다.Robust Speech Recognition via Large-Scale Weak Supervision저자 : Alec Radford, Jong Wook Kim, Tao Xu, Greg Brockman, Christine McLeavey, Ilya Sutskever[1] Introduction1) 기술적 배경 음성 인식

dangingsu.tistory.com

 

728x90
반응형