AI DeepLearning MachineLearning Augmentation 전이학습 파이썬 python Classification Fine Tuning Flowers17

우리는 사전 훈련 된 컨볼루션 신경망을 피처 추출기로 취급하는 방법을 배웠습니다. 이 피처 추출기를 사용하여 네트워크를 통해 이미지 데이터 세트를 전달하고 지정된 계층에서 활성화를 추출하고 값을 디스크에 저장했습니다. 그런 다음 SIFT, HOG, LBP와 같은 수작업으로 엔지니어링 된 기능을 사용하는 경우와 똑같이 CNN 피처 위에 표준 기계 학습 분류기(이 경우 로지스틱 회귀)를 훈련했습니다. 이 전이 학습이라고하는 CNN 피처 추출기 접근 방식은 Animals, CALTECH-101 또는 Flowers-17 데이터 세트에 대한 이전 실험보다 훨씬 높은 정확도를 얻었습니다.

그러나 충분한 데이터가있는 경우 실제로 피처 추출 방법을 능가 할 수 있는 다른 유형의 전이 학습이 있습니다. 이 방법을 파인 튜닝이라고하며 “네트워크 수술”을 수행해야 합니다. 먼저, 메스를 가져와 VGG, ResNet 또는 Inception과 같은 사전 훈련 된 컨볼 루션 신경망에서 완전히 연결된 레이어의 최종 세트 (즉, 네트워크의 “헤드”)를 잘라냅니다. 그런 다음 head를 임의 초기화를 사용하여 완전히 연결된 새로운 레이어 세트로 교체합니다. 이 경우 head 아래의 모든 레이어가 고정되어 가중치를 업데이트 할 수 없습니다 (즉, 역 전파의 역방향 패스가 해당 레이어에 도달하지 않음).

그런 다음 새로운 FC 계층 세트가 네트워크에서 이전에 학습 된 CONV 계층에서 패턴을 학습 할 수 있도록 매우 작은 학습률을 사용하여 네트워크를 훈련시킵니다. 선택적으로 나머지 네트워크를 고정 해제하고 훈련을 계속할 수 있습니다. 파인 튜닝을 적용하면 사전 훈련 된 네트워크를 적용하여 원래 훈련되지 않은 클래스를 인식 할 수 있습니다. 또한 이 방법은 특징 추출보다 더 높은 정확도로 이어질 수 있습니다.

이 장의 나머지 부분에서는 네트워크 수술을 포함하여 미세 조정에 대해 자세히 설명합니다. 마지막으로 Flowers-17 데이터 세트에 미세 조정을 적용하고 지금까지 이 책에서 시도한 다른 모든 접근 방식을 능가하는 예제를 제공합니다.

파인 튜닝은 전이 학습의 한 유형입니다. 주어진 데이터 세트에서 이미 훈련 된 딥러닝 모델에 파인 튜닝을 적용합니다. 일반적으로 이러한 네트워크는 ImageNet 데이터 세트에서 학습 된 VGG, ResNet 및 Inception과 같은 최첨단 아키텍처입니다.

특성 추출에 대한 23 장에서 알 수 있듯이 이러한 네트워크에는 이미 훈련 된 데이터 세트 및 클래스 레이블 외부에 사용할 수있는 풍부하고 차별적인 필터가 포함되어 있습니다. 그러나 단순히 특징 추출을 적용하는 대신 네트워크 수술을 수행하고 실제 아키텍처를 수정하여 네트워크의 일부를 다시 훈련시킬 수 있습니다.

미세 조정의 작동 방식을 이해하려면 VGG16 네트워크의 계층이있는 아래 그림(왼쪽)을 보십시오. 아시다시피, 최종 레이어 세트 (즉, “헤드”)는 소프트맥스 분류기와 함께 완전히 연결된 레이어입니다. 미세 조정을 수행 할 때 실제로 피처 추출 (중간)과 마찬가지로 네트워크에서 헤드를 제거합니다. 그러나 피처 추출과 달리 파인튜닝을 수행 할 때 실제로 완전히 연결된 새로운 헤드를 만들어 원래 아키텍처 위에 배치합니다 (오른쪽).

왼쪽 : 원래 VGG16 네트워크 아키텍처.

중간 : VGG16에서 FC 레이어를 제거하고 최종 POOL 레이어를 피처 추출기로 처리합니다.

오른쪽 : 원래 FC 레이어를 제거하고 새 FC 헤드로 교체합니다. 그런 다음 이러한 새 FC 레이어를 특정 데이터 세트에 맞게 미세 조정할 수 있습니다 (이전 FC 레이어는 더 이상 사용되지 않음).

대부분의 경우 새 FC 헤드는 원래 FC 헤드보다 적은 매개 변수를 갖습니다. 그러나 실제로는 특정 데이터 세트에 따라 다릅니다. 새 FC 헤드는 무작위로 초기화되고 (새 네트워크의 다른 레이어와 마찬가지로) 원래 네트워크의 본체에 연결되며 훈련 할 준비가되었습니다.

그러나 문제가 있습니다. CONV 레이어는 이미 풍부하고 차별적 인 필터를 배웠지만 FC 레이어는 완전히 새롭고 무작위입니다. 그래디언트가 이러한 임의의 값에서 네트워크 본문을 통해 역전파되도록 허용하면 이러한 강력한 기능이 파괴될 위험이 있습니다. 이를 우회하기 위해 대신 아래 그림(왼쪽)에서와 같이 네트워크 본문의 모든 레이어를 “고정”(아이러니하게도)하여 FC 헤드를 “워밍업 (warm up)”합니다

왼쪽 : 미세 조정 프로세스를 시작할 때 네트워크의 모든 CONV 레이어를 고정하고 그라데이션이 FC 레이어를 통해 역전파되도록 허용합니다. 이렇게 하면 네트워크가 “워밍업”할 수 있습니다.

오른쪽 : FC 레이어가 워밍업 된 후 네트워크의 모든 레이어를 고정 해제하고 각 레이어를 미세 조정하도록 선택할 수 있습니다.

훈련 데이터는 평소처럼 네트워크를 통해 전파됩니다. 그러나 역전파는 FC 계층 이후에 중지되므로 이러한 계층이 매우 차별적 인 CONV 계층에서 패턴을 학습 할 수 있습니다. 경우에 따라 새 FC 헤드가 충분한 정확도를 얻을 수 있으므로 네트워크 본체를 고정 해제하지 않을 수 있습니다. 그러나 일부 데이터 세트의 경우 미세 조정 프로세스 중에 원본 CONV 레이어를 수정하는 것이 유리한 경우가 많습니다 (위 그림 오른쪽). FC 헤드가 데이터 세트에서 패턴을 배우기 시작한 후 훈련을 일시 중지하고 바디 부분을 고정 해제 한 다음 훈련을 계속하지만 매우 작은 학습 속도로 CONV 필터를 크게 벗어나고 싶지 않습니다. 그런 다음 충분한 정확성을 얻을 때까지 교육을 계속할 수 있습니다.

파인 튜닝은 사용자 지정 데이터 세트의 사전 훈련 된 CNN에서 이미지 분류기를 얻을 수 있는 매우 강력한 방법으로, 대부분의 경우 특징 추출보다 훨씬 더 강력합니다.

단점은 미세 조정에 약간의 작업이 필요할 수 있고 FC 헤드 매개 변수 선택이 네트워크 정확도에 큰 영향을 미친다는 것입니다. 네트워크가 이미 사전 교육을 받았으므로 여기서 정규화 기술에 엄격하게 의존 할 수 없습니다. 네트워크에서 이미 수행중인 정규화에서 벗어날 수 없습니다.

둘째, 소규모 데이터 세트의 경우 네트워크가 ‘콜드’ FC 시작에서 ‘학습’을 시작하도록 하는 것이 어려울 수 있습니다. 이것이 바로 네트워크 바디를 먼저 동결하는 이유입니다. 그럼에도 불구하고 워밍업 단계를 통과하는 것은 약간의 도전이 될 수 있으며 SGD 이외의 옵티 마이저를 사용해야 할 수도 있습니다 (27 장 참조). 미세 조정에는 약간의 노력이 필요하지만 올바르게 수행하면 거의 항상 더 높은 정확도를 만들 수 있습니다.