GAP Transfer Learning (전이학습) / 주요 CNN 모델

GAP Transfer Learning (전이학습)
GlobalAveragePooling (GAP)
- 입력 Feature map의 채널별로 평균값을 추출하여 1 x 1 x channel 의 Feature map을 생성하는 Pooling
model.add(keras.layers.GlobalAveragePooling2D())
- GAP는 네트워크를 효율적으로 만들고, 과적합(overfitting)을 줄이고, 모델의 일반화 능력을 향상시키는 데 도움이 됨
- GAP는 가중치를 사용하지 않고 입력 특성의 평균을 계산하여 하나의 고정된 길이 벡터를 생성
- 출력이 클래스 수에 관계없이 항상 고정된 길이의 벡터가 되기 때문에, 다양한 크기의 입력 이미지에 대해 일관된 방식으로 처리 가능
- 파라미터 수가 줄어들어 모델이 더 가볍고 효율적으로 동작
- 전이 학습(Transfer Learning)과 함께 자주 사용
Transfer learning (전이학습)
- 대규모 데이터셋에서 사전에 학습된 모델을 사용하여 유용한 지식과 특징을 습득한 다음, 이를 새로운 작업에 적용하는 기법
- Transfer Learning을 이용해 해결할 수 있는 요소
- 데이터 부족문제
- 새로운 작업에 충분한 양의 데이터가 없는 경우에도 전이학습을 통해 높은 성능을 얻을 수 있음
- 과다한 계산량
- 미리 학습된 모델의 Layer들을 사용하기 때문에 새로 학습하는 것 보다 적은 학습으로 좋은 결과를 얻을 수 있음
- 사전에 학습된 모델은 대규모 데이터셋에서 학습된 지식을 포착하고 있으며, 이러한 지식은 다른 작업에도 유용하게 적용될 수 있음
- 보통 Pretrained Model에서 Feature Extraction 부분을 사용
- Computer Vision 문제의 경우 Bottom 쪽의 Convolution Layer(Feature Extractor)들은 이미지에 나타나는 일반적인 특성을 추출하므로 다른 대상을 가지고 학습했다고 하더라도 재사용할 수 있음
- 사용 방법
- 사전에 학습된 모델을 불러와서 새로운 작업에 맞게 미세 조정(fine-tuning)
- 사전에 학습된 모델의 일부 또는 전체 가중치를 고정시키고, 새로운 데이터셋에서 추가 학습을 진행하는 과정
- 새로운 작업에 맞게 추가적인 레이어를 추가하여 모델을 보완하는 것
Fine-tuning(미세조정)
- 전체 모델을 전부 학습시킨다.
- Pretrained 모델 Bottom layer들(Input과 가까운 Layer들)은 고정시키고 Top layer의 일부를 재학습시킨다.
- Pretrained 모델 전체를 고정시키고 classifier layer들만 학습시킨다.
주요 CNN 모델
ILSVRC 대회
- ILSVRC (ImageNet Large Scale Visual Recognition Challenge)
- 2010년부터 2017년까지 진행된 컴퓨터 비전 분야의 경진 대회
- ImageNet의 이미지 중에서 1000개 카테고리에 대한 약 120만 장의 학습용 이미지, 5만 장의 검증 이미지, 그리고 15만 장의 테스트 이미지를 활용하여 진행
- ILSVRC에서 우승하거나 좋은 성적을 올린 모델들은 컴퓨터 비전 분야의 발전에 큰 역할을 해왔습니다. 특히 딥러닝 알고리즘이 발전하는 데에 기여하며, 이후 다양한 컴퓨터 비전 분야에서의 네트워크 모델의 백본으로 사용되고 있음
VGGNet (VGG16)
- 2014년 ILSVRC 대회에서 준우승한 모델
- Visual Geometry Group에서 제안한 딥러닝 기반의 컴퓨터 비전 네트워크로, 간결한 구조와 뛰어난 성능으로 인해 많은 관심을 받고 있는 모델
- VGG16의 구조
- 모든 레이어에서 동일한 크기의 3x3 필터와 1x1 크기의 max pooling을 사용
- stride는 1로 고정
- 컨볼루션 레이어를 여러 번 쌓아 올려 구성되며, 필터의 수를 64, 128, 256, 512 두 배씩 키워가며 레이어를 쌓음
- 각각의 레이어에서 3x3 필터를 두 개를 연속으로 사용하여 5x5 필터 하나를 사용하는 것보다 더 적은 파라미터를 사용하여 좋은 성능
- VGG16의 단점
- 마지막에 분류를 위해 Fully Connected Layer 3개를 추가하여 파라미터 수가 많아진다는 점
- 대부분이 Fully Connected Layer에 속하며, 이로 인해 모델의 크기가 커지고 계산량이 증가하는 문제가 발생
ResNet (Residual Networks)
- ILSVRC 2015년 대회에서 우승을 차지한 모델
- Microsoft Research에서 2015년에 제안된 딥러닝 네트워크로, "Residual Learning"이라는 개념을 도입하여 딥러닝 네트워크의 깊이에 따른 최적화 문제를 해결
- 입력값 X를 통과시켜 얻은 출력값 H(X)를 실제 정답인 Y가 아닌 입력값 X와 합쳐서 최적화하는 것이 목표 → "잔차(Residual)"를 찾는 것
- ResNet의 구조
- Residual Block들을 쌓아서 네트워크를 구성
- 레이어를 통과해서 나온 값이 입력값과 동일하게 만들기 위한 Identity Block을 사용하여 Gradient Vanishing 문제를 해결
- 전달된 Gradient가 앞쪽 Layer로 그대로 전달되어 Gradient Vanishing 문제를 해결하고, 더 깊은 네트워크에서 더욱 풍부한 특성을 추출하여 성능을 향상
- 더 깊은 네트워크를 구성함으로써 다양한 특성을 추출하게 되어 성능이 향상
MobileNet
- 2017년에 Google에서 제안한 경량 딥러닝 네트워크
- 스마트폰과 같은 저성능 환경에서 딥러닝을 실행하기 위해 다양한 기법들이 사용
- 모델의 크기와 연산량을 줄여 스마트폰에서도 빠르고 효율적으로 딥러닝을 실행
- 일반 Convolution Layer를 먼저 쌓고, 이후에 Depthwise Separable Convolution을 계속 쌓는 구조
- MobileNet의 주요 기법
- Channel Reduction
- MobileNet은 입력 이미지의 채널 수를 줄이는 기법을 사용
- 불필요한 정보를 제거하여 모델의 크기를 줄이고 연산량을 감소
- 작은 모델 크기로도 효과적인 딥러닝 실행이 가능
- Distillation & Compression
- MobileNet은 큰 모델(Teacher Model)이 미리 학습한 정보를 작은 모델(Student Model)에 전달하여 성능을 향상시키는 기법을 사용
- 델 가지치기(Model Pruning) 등의 기법을 적용하여 네트워크의 크기를 줄이는 방법 사용
- Depthwise Separable Convolution
- MobileNet은 Depthwise Convolution과 Pointwise Convolution을 조합한 Depthwise Separable Convolution을 사용
- 연산량을 크게 줄이면서도 네트워크의 성능을 유지
- Depthwise Separable Convolution은 컴퓨팅 자원이 제한된 환경에서 효율적인 연산을 가능