사전 훈련된 모델 활용
- 작은 이미지 데이터셋에 딥러닝을 적용하는 일반적이고 매우 효과적인 방법은 사전 훈련된 모델을 사용하는 것
(정확도가 90프로까지 증가)
- 여기에서는 (1,400만 개의 레이블된 이미지와 1,000개의 클래스로 이루어진) ImageNet 데이터셋에서 훈련된 대규모 컨브넷을 사용
- 캐런 시몬연(Karen Simonyan)과 앤드류 지서먼(Andrew Zisserman)이 2014년에 개발한 VGG16 구조를 사용
- VGG16은 조금 오래되었고 최고 수준의 성능에는 못 미치며 최근의 다른 모델보다는 조금 무거움
- 이 모델의 구조가 이전에 보았던 것과 비슷해서 새로운 개념을 도입하지 않고 이해하기 쉽기 때문에 선택
- 이 외에도 ResNet, Inception, Xception 등이 있음
- 사전 훈련된 모델을 사용하는 두 가지 방법이 있음
- 특성 추출(feature extraction)과 미세 조정(fine tuning)
미세 조정(fine tuning) ;티쳐블 머신
사전 훈련된 모델을 사용한 특성 추출
특성 추출은 사전에 학습된 모델의 표현을 사용하여 새로운 샘플에서 흥미로운 특성을 뽑아내는 것
⚫ 이런 특성을 사용하여 새로운 분류기를 처음부터 훈련
⚫ 앞서 보았듯이 컨브넷은 이미지 분류를 위해 두 부분으로 구성
⚫ 먼저 연속된 합성곱과 풀링 층으로 시작해서 밀집 연결 분류기로 끝남
⚫ 첫 번째 부분을 모델의 합성곱 기반 층(convolutional base)이라고 간주
⚫ 컨브넷의 경우 특성 추출은 사전에 훈련된 모델의 합성곱 기반 층을 선택하여 새로운 데이터를 통과시키고, 그 출력으로 새로운 분류기를 훈련
conv1,conv2 더 풍부하게 하기 위해
pooling 은 특징에 층 포함이 안됨
conv1과 conv2 사이에 패딩 (엣지부분도 포함시키기 위해)
⚫ 이렇게 하려면 먼저 합성곱 기반 층을 동결해야 함
⚫ 하나 이상의 층을 동결(freezing)한다는 것은 훈련하는 동안 가중치가 업데이트되지 않도록 막는다는 뜻
true 가 디폴트값
⚫ 이제 다음을 연결하여 새로운 모델을 만들 수 있음 1. 데이터 증식 단계 2. 동결된 합성곱 기반 층 3. 밀집 분류기
컴파일 단계 후에 trainable 속성을 변경하면 반드시 모델을 다시 컴파일해야 함
⚫ 그렇지 않으면 변경 사항이 적용되지 않음
50번의 에포크를 시도해 보자 ⚫ 여기에서 볼 수 있듯이 검증 정확도가 98%에 도달 ⚫ 이전 모델보다 크게 향상\
지금까지는 초벌구이
동결 후 분류기 끌어올린 후에 상위 부분과 분류기를 같이 학습;미세조정
애초에 상위층만 냅두고 동결 시키면 안되나?
-> 이유는최적화된 w가 너무 다르면 란되기에,,
분류기는 랜덤
사전 훈련된 모델 미세 조정하기
⚫ 앞서 랜덤하게 초기화된 상단 분류기를 훈련하기 위해 VGG16의 합성곱 기반 층을 동결해야 한다고 말했음
⚫ 같은 이유로 맨 위에 있는 분류기가 훈련된 후 합성곱 기반의 상위 층을 미세 조정할 수 있음
⚫ 분류기가 미리 훈련되지 않으면 훈련되는 동안 너무 큰 오차 신호가 네트워크에 전파 - 이는 미세 조정될 층들이 사전에 학습한 표현들을 망가뜨리게 될 것
1. 사전에 훈련된 기반 네트워크 위에 새로운 네트워크를 추가
2. 기반 네트워크를 동결
3. 새로 추가한 네트워크를 훈련
4. 기반 네트워크에서 일부 층의 동결을 해제
5. 동결을 해제한 층과 새로 추가한 층을 함께 훈련
처음 세 단계는 특성 추출을 할 때 이미 완료
⚫ 네 번째 단계를 진행해 보자
⚫ conv_base의 동결을 해제하고 개별 층을 동결
⚫ 마지막 3개의 합성곱 층을 미세 조정하겠음
⚫ 즉, block4_pool까지 모든 층은 동결되고 block5_conv1, block5_conv2, block5_conv3 층은 학습 대상이 됨
끝에서 -4 전까지는 다 false
뒤에 네 개는 true
미세조정이기에 rate는 0.00001로 더 맞춤
'딥러닝실무응용 > 딥러닝' 카테고리의 다른 글
[인공지능과 경영] 03 :: 딥러닝 개요 (0) | 2024.08.30 |
---|---|
[딥러닝] 전이학습(transfer learning) 및 티쳐블 머신(Teachable Machine) 실무 (0) | 2024.08.23 |
[딥러닝] 합성곱신경망 코랩(Colab) 실습 (0) | 2024.08.23 |
[딥러닝] 합성곱신경망모델 (2) (0) | 2024.08.22 |
[딥러닝] 합성곱신경망모델(Convolution Neural Network) (0) | 2024.08.21 |