미리 훈련된 기성 모델 미세 조정
이것은 사전 훈련된 모델에서 추출한 특징에 직접적으로 의존하고 최종 레이어를 교체할 뿐만 아니라 이전 레이어 중 일부를 선택적으로 다시 훈련하는 보다 매력적인 기술이다.
심층 신경망은 계층 구조이며 조정 가능한 하이퍼파라미터가 많다. 초기 레이어의 역할은 일반적인 기능을 캡처하는 반면, 나중 레이어는 당면한 명시적 작업에 더 중점을 둔다. 기본 모델에서 고차 기능 표현을 미세 조정하여 특정 작업과 더 관련성 있게 만드는 것이 좋다. 훈련에서 일부를 고정시키면서 모델의 일부 레이어를 다시 훈련할 수 있다.
다음 그림은 객체 감지 작업에 대한 예를 보여준다. 여기서 네트워크의 초기 하위 계층은 매우 일반적인 기능을 학습하고 상위 계층은 작업별 기능을 학습한다.
동결 vs 미세 조정 (Freezing vs Fine-tuning)
모델의 성능을 더욱 향상시키는 한 가지 논리적인 방법은 추가한 분류기의 훈련과 함께 사전 훈련된 모델의 최상위 계층 가중치를 다시 훈련 (또는 "미세 조정")하는 것이다.
이렇게 하면 모델이 소스 작업에서 학습한 일반 기능 맵에서 가중치가 업데이트된다. 미세 조정을 통해 모델은 대상 영역에서 과거 지식을 적용하고 몇 가지를 다시 배울 수 있다.
또한 전체 모델이 아닌 소수의 상위 레이어를 미세 조정해야 한다. 처음 몇 개의 계층은 거의 모든 유형의 데이터에 일반화되는 기본 및 일반 기능을 배운다.
따라서 이러한 계층을 동결하고 과거 교육에서 파생된 기본 지식을 재사용하는 것이 좋다. 위로 올라갈수록 기능은 모델이 훈련된 데이터 세트에 점점 더 구체적이다. 미세 조정은 일반 학습을 덮어쓰는 대신 이러한 특수 기능을 새 데이터 세트와 함께 작동하도록 조정하는 것을 목표로 한다.
6단계 전이 학습
1. 사전 훈련된 모델 얻기
첫 번째 단계는 작업에 따라 훈련의 기반으로 유지하려는 사전 훈련된 모델을 선택하는 것이다. 전이 학습은 사전 훈련된 소스 모델에 대한 지식과 대상 작업 도메인 간의 강력한 상관 관계가 있어야 호환 가능하다.
다음은 사용할 수 있는 사전 훈련된 모델 중 일부입니다.
컴퓨터 비전 |
|
NLP |
|
2. 기본 모델 생성
기본 모델은 ResNet 또는 Xception과 같은 아키텍처 중 하나이며 첫 번째 단계에서 작업과 밀접하게 관련되도록 선택한 것이다. 모델의 추가 훈련 시간을 절약하는 네트워크 가중치를 다운로드할 수 있다. 그렇지 않으면 네트워크 아키텍처를 사용하여 모델을 처음부터 훈련해야 한다.
기본 모델의 최종 출력 레이어에 사용 사례에서 필요한 것보다 더 많은 뉴런이 있는 경우가 있을 수 있다. 이러한 시나리오에서는 최종 출력 레이어를 제거하고 그에 따라 변경해야 한다.
3. 레이어 고정
사전 훈련된 모델에서 시작 레이어를 고정하는 것은 모델이 기본 기능을 학습하도록 하는 추가 작업을 피하기 위해 필수적이다.
초기 레이어를 고정하지 않으면 이미 수행된 모든 학습을 잃게 된다. 이것은 모델을 처음부터 훈련하는 것과 다르지 않으며 시간, 리소스 등이 손실된다.
4. 새로운 학습 가능한 레이어 추가
기본 모델에서 재사용하는 유일한 지식은 특징 추출 레이어이다. 모델의 특수 작업을 예측하려면 그 위에 추가 레이어를 추가해야 한다. 일반적으로 최종 출력 레이어이다.
5. 새 레이어 훈련
사전 훈련된 모델의 최종 출력은 우리가 원하는 모델과 다를 가능성이 크다. 예를 들어, ImageNet 데이터 세트에서 훈련된 사전 훈련된 모델은 1000개의 클래스를 출력한다.
그러나 두 클래스에서 작동하려면 모델이 필요하다. 이 경우 새로운 출력 레이어로 모델을 훈련시켜야 한다.
6. 모델 미세 조정
성능을 향상시키는 한 가지 방법은 미세 조정이다.
미세 조정에는 기본 모델의 일부를 고정 해제하고 매우 낮은 학습률로 전체 데이터 세트에서 전체 모델을 다시 교육하는 작업이 포함된다. 학습률이 낮으면 과적합을 방지하면서 새 데이터 세트에 대한 모델의 성능이 향상된다.
https://www.v7labs.com/blog/transfer-learning-guide
'Learning-driven Methodology > DL (Deep Learning)' 카테고리의 다른 글
[Deep Learning] Global Average Pooling (GAP) (0) | 2022.08.14 |
---|---|
[Deep Learning] 전이 학습 (Transfer Learning) (4) (0) | 2022.06.21 |
[Deep Learning] 전이 학습 (Transfer Learning) (2) (0) | 2022.06.21 |
[Deep Learning] 전이 학습 (Transfer Learning) (1) (0) | 2022.06.21 |
[Deep Learning] 딥러닝 프레임워크 비교 (0) | 2022.05.19 |