『 Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning. 2016. 』
Inception-v4 논문에서는 기존 Inception-v3 모델보다 더 단순한 구조의 Inception 모델을 제안한다. 기존 Inception 모델은 성능은 높지만 구조가 복잡해 범용적으로 사용하기 어려웠다. Inception보다 상대적으로 구조가 단순한 VGG 모델을 많이 사용하였는데, 이에 본 논문에서는 이전 버전보다 단순하고 빠른 학습이 가능한 Inception-v4 모델을 소개한다.
이전 Inception-v2, v3 모델에 대한 자세한 내용은 아래 리뷰에서 확인할 수 있다.
https://rahites.tistory.com/144
0. Abstract
최근 Image Recognition Task에서 CNN은 큰 발전을 하였고 그 중 Residual Connection과 전통적인 아키텍처와의 결합은 SOTA 성능을 내기도 하였다. 이러한 결과를 토대로 Inception 구조와 Residual Connection을 결합하면 더 좋은 결과가 나지 않을까? 라는 의문에서 연구를 시작하였다.
본 논문에서는 Residual Connection을 쓴 모델과 쓰지 않은 모델을 모두 소개한다. 이 모델들은 ILSVRC2012 Classification Task에서 좋은 성능을 내었으며, 앙상블을 통해 최종 Classification 성능 향상시켰다고 한다. 또한 적절한 Activation Scaling을 설정하는 것이 안정적인 학습을 가능케 한다는 것을 발견했다.
1. Introduction
본 논문에서는 Residual Connection과 Inception 두 가지 최신 연구를 결합하였다. Inception 구조는 매우 깊기 때문에 Inception의 Filter Concatenation Stage를 Residual Connection 구조로 대체하였다. 이를 통해 Computational Efficiency를 얻으면서 Residual Approach의 장점을 가져갈 수 있었다.
또한 Inception을 더 깊고 효율적으로 만들 수 있을지 연구하여 Inception-v3보다 더 단순하고 균일화된 Inception-v4 모델을 고안했다. 이전까지 사용하던 DistBelief Framework에서는 모델을 분할해야 하는 등의 기술적 제약이 존재하였는데, Inception-v4 부터는 TensorFlow로 학습하여 구조를 크게 단순화 할 수 있었다.
본 논문에서는 기존의 Inception-v3를 버전업한 Inception-v4, Inception과 ResNet을 결합한 Inception-ResNet-v1, v2를 제안한다.
2. Related Work
왼쪽 그림은 기본적인 형태의 Residual Connection이고 오른쪽 그림은 1x1 Convolution을 사용하여 연산량을 줄인 형태의 Residual Connection이다.
본 논문에서는 Residual Connection을 사용하지 않고도 Deep Network를 잘 학습하였지만, Residual Connection을 사용할 때 학습 속도가 크게 빨라지기 때문에 Inception 구조와도 결합해 보았다.
3. Architectural Choices
Architecture [Inception-v4 / Inception-ResNet-v1, Inception-ResNet-v2]
왼쪽 그림은 Inception-v4의 구조, 오른쪽 그림은 Inception-ResNet-v1, v2의 구조이다.
3.1. Pure Inception Blocks
이전 Inception 모델은 메모리 제약 문제로 인해 전체 모델의 Replica를 여러 하위 네트워크로 분할하는 방식으로 학습하였지만, TensorFlow의 도입으로 최신 모델은 Replica로 분할하지 않고 학습할 수 있었다.
이전까지 Inception 아키텍저를 변경하는 것에 대해 매우 보수적이었지만, 네트워크를 단순화하기 위해 Inception-v4에서는 불팔요한 부분을 과감히 제거하였다. 한 Inception Block에서는 한가지 크기의 Grid Size를 사용하도록 하였다.
이미지에서 V로 표시된 부분은 Valid Padding이 적용되었고 V가 없는 부분은 Same Padding이 적용되었다. 따라서 V 표시된 부분은 Output Activation Map의 Grid Size가 감소하고 V 표시가 없는 부분은 Input과 Output의 Grid Size가 동일하다.
3.2. Residual Inception Blocks
Residual 버전의 Inception 네트워크에서는 Inception-v4보다 연산량이 적은 Inception Block을 사용했다. 각 Inception Block에는 Activation이 없는 1x1 Convolution Layer가 Filter-expansion Layer로 뒤따른다. 이는 Inception Block에서 감소한 차원을 다시 확장해주기 위함이다.
본 논문에서는 Inception-ResNet-v1과 Inception-ResNet-v2를 소개한다. Inception-ResNet-v1의 경우에는 Inception-v3의 계산 비용과 비슷하고 Inception-ResNet-v2는 Inception-v4의 계산 비용과 비슷하다.
Inception-ResNet은 기존 Layer에만 Batch-Norm을 사용하고 Layer가 합쳐지는 부분에는 사용하지 않았다. Batch-Norm을 모든 Layer에서 사용하는 것이 좋지만 단일 GPU에서 학습을 하기 위함이었다고 한다.
Inception-ResNet-v1에서는 독자적인 STEM을 사용하고 Inception-ResNet-v2는 Inception-v4와 같은 STEM을 사용한다.
STEM [Inception-v4, Inception-ResNet-v2 / Inception-ResNet-v1]
왼쪽 그림은 Inception-v4와 Inception-ResNet-v2 모델 앞단에 들어가는 STEM 구조이다. Inception-v3 모델에도 존재하던 앞단의 Convolution 부분을 더 성능이 좋도록 수정하였다. 오른쪽 그림은 Inception-ResNet-v1의 STEM 구조이다.
왼쪽 그림을 보면 Grid Size를 줄이는 부분에서 병렬적으로 처리해 준 것을 확인할 수 있다.
Inception-A [Inception-v4 / Inception-ResNet-v1 / Inception-ResNet-v2]
Inception 계층에서는 Grid Size의 변화가 없도록 설계하였다. Summation되는 부분인 1x1 Conv의 채널 수가 다르고 활성화 함수를 사용하지 않은 것을 확인할 수 있다. (Linear라고 쓰여있는 부분)
Inception-B [Inception-v4 / Inception-ResNet-v1 / Inception-ResNet-v2]
Inception-C [Inception-v4 / Inception-ResNet-v1 / Inception-ResNet-v2]
Reduction-A [Inception-v4, Inception-ResNet-v1, Inception-ResNet-v2]
Reduction 계층에서는 Grid Size가 절반으로 줄어든다. Inception-v4, Inception-ResNet-v1, Inception-ResNet-v2는 모두 동일한 Reduction-A 구조를 사용한다.
Reduction-B [Inception-v4 / Inception-ResNet-v1 / Inception-ResNet-v2]
3.3. Scaling of the Residuals
Filter의 수가 1000개를 초과할 때 Residual Variants가 불안정해졌고 학습 도중에 네트워크가 죽어버리는 문제가 발생했다. 그 이유는 수만번의 Iteration이 지나면 Average Pooling 이전에 0 값만을 반환하기 때문으로, 본 논문에서는 활성화 함수를 적용하기 이전에 잔차를 Scaling down하여 학습 과정을 완화하였다.
위 그림과 같이 2단계로 학습이 진행되며 0.1 ~ 0.3 사이의 Scaling Factor를 사용하였다.
4. Traning Methodology
TensorFlow FrameWork를 사용하였고 Stochastic Gradient 방법으로 학습을 진행하였다. 자세한 하이퍼파라미터는 논문을 참조
5. Experimental Results
학습 곡선이 비슷한 Inception-v3과 Inception-ResNet-v1, Inception-v4와 Inception-ResNet-v2를 비교하였다.
Inception-v4와 Inception-ResNet-v2의 높은 성능을 확인할 수 있다. 그래프와 테이블 결과를 통해 Inception-ResNet-v2의 성능이 미소하게나마 Inception-v4보다 좋은 것을 알 수 있다.
위 테이블은 Single Model-Multiple Crop, Single Model-144 Crop, Ensemble Model-144 Crop의 실험 결과이다.
6. Conclusions
본 논문에서는 3가지 아키텍처 네트워크를 제안한다.
- Inception-ResNet-v1
- Inception-ResNet-v2
- Inception-v4
Residual Connection을 사용한 Hybrid Inception version 2가지와 사용하지 않고 비슷한 성능을 낸 Inception-v4를 소개하며 자신들의 연구인 Inception에 대한 Pride와 최신 연구인 ResNet과의 결합을 훌륭히 이루어 냈다.
<참고자료>
https://deep-learning-study.tistory.com/525
세 줄 요약
1. 복잡한 구조의 Inception-v3를 개선한 새로운 버전의 Inception-v4를 제안
2. Inception-v4 뿐만 아니라 최근 성능이 좋다고 알려진 ResNet의 Residual Connection을 결합한 Inception-ResNet 모델을 제안
3. TensorFlow, Scaling 등의 기법을 같이 활용해 Pure Inception과 Inception-ResNet에서 모두 좋은 성능을 냄
'논문 paper 리뷰' 카테고리의 다른 글
[X:AI] Taskonomy 논문 이해하기 (0) | 2023.07.13 |
---|---|
[X:AI] StarGAN 논문 이해하기 (0) | 2023.05.25 |
[X:AI] VAE 논문 이해하기 (1) | 2023.05.12 |
댓글