사전 훈련 된 CNN 분류기를 사용하여 다른 이미지 데이터 세트에 적용


11

당신은 어떻게 할 최적화 사전에 훈련 된 neural network 별도의 문제에 적용 할 수 있습니까? 사전 훈련 된 모델 에 더 많은 레이어를 추가 하고 데이터 세트에서 테스트 하시겠습니까?

예를 들어, 작업이 CNN 을 사용하여 배경 화면 그룹 을 분류하는 경우 이미지 분류 기인 경우에도 이미지 고양이와 개에 대해 훈련 된 사전 훈련 된 네트워크 를 직접 분류하는 것은 효과가 없을 것 입니다.

답변:


15

읽기-전학 학습이 불리 할 때? (@ media 덕분에) (나에게 유익한 것으로 보이 므로이 답변을 완전한 답변으로 만들기 위해 여기에 추가했습니다 ...)

귀하의 질문에 대한 답변. (여기서 시작)

편입 학습은 당신이 찾고있는 것입니다 ..

  • 예를 들어 이미지의 데이터 세트에 대해 Convolutional Neural Network (Covnet)를 훈련시키는 딥 러닝 과제가 주어지면 첫 번째 본능은 네트워크를 처음부터 훈련시키는 것입니다. 그러나 실제로 Covnet과 같은 심층 신경망은 종종 수백만 범위의 매개 변수를 가지고 있습니다. 작은 데이터 집합 (매개 변수 수보다 작은 것)에 대해 Covnet을 교육하면 Covnet의 일반화 기능에 큰 영향을 미치며, 종종 초과 피팅이 발생합니다.

  • 따라서 실제로는 더 작은 데이터 세트에 대해 계속 학습하여 (즉, 역 전파를 실행하여) ImageNet (1.2M 레이블이있는 이미지)과 같은 대규모 데이터 세트에서 학습 된 기존 네트워크를 미세 조정하는 경우가 더 많습니다. 데이터 집합이 원본 데이터 집합 (예 : ImageNet)과 크게 다르지 않은 경우 사전 훈련 된 모델은 이미 자체 분류 문제와 관련된 기능을 학습했을 것입니다.

모델을 미세 조정할 때?

  • 일반적으로 사전 훈련 된 모델이 훈련 된 데이터 집합과 맥락이 크게 다르지 않으면 미세 조정을 수행해야합니다. ImageNet과 같이 크고 다양한 데이터 세트에서 사전 훈련 된 네트워크는 초기 계층의 곡선 및 모서리와 같은 보편적 인 기능을 캡처하여 대부분의 분류 문제와 관련이 있습니다.

  • 물론 데이터 세트가 의료 이미지 또는 중국어 필기 문자와 같이 매우 특정한 도메인을 나타내며 해당 도메인에서 사전 훈련 된 네트워크를 찾을 수없는 경우 네트워크를 처음부터 교육하는 것을 고려해야합니다.

  • 또 다른 문제는 데이터 세트가 작은 경우 작은 데이터 세트에서 사전 훈련 된 네트워크를 미세 조정하면 특히 VGG 네트워크의 경우와 같이 네트워크의 마지막 몇 레이어가 완전히 연결된 레이어 인 경우 과적 합으로 이어질 수 있다는 것입니다. 내 경험에 따르면, 수천 개의 원시 샘플이 있고 일반적인 데이터 확대 전략 (번역, 회전, 뒤집기 등)을 구현하면 미세 조정이 일반적으로 더 나은 결과를 얻을 수 있습니다.

  • 데이터 세트가 실제로 작은 경우 (예 : 천 개 미만의 샘플) 더 나은 접근 방법은 완전히 연결된 레이어에 앞서 중간 레이어의 출력을 피쳐 (병목 피쳐)로 취하고 선형 분류기 (예 : SVM)를 훈련시키는 것입니다. 그것. SVM은 특히 작은 데이터 집합에서 의사 결정 경계를 그리는 데 효과적입니다.

미세 조정 기법

다음은 미세 조정 구현을위한 일반적인 지침입니다.

  • 일반적인 방법은 사전 훈련 된 네트워크의 마지막 계층 (softmax 계층)을 자르고 자체 문제와 관련된 새로운 softmax 계층으로 대체하는 것입니다. 예를 들어 ImageNet의 사전 훈련 된 네트워크에는 1000 개 범주의 softmax 레이어가 제공됩니다.

  • 우리의 과제가 10 개 범주로 분류 된 경우, 네트워크의 새로운 softmax 계층은 1000 개 범주가 아닌 10 개 범주입니다. 그런 다음 사전 훈련 된 가중치를 미세 조정하기 위해 네트워크에서 전파를 다시 실행합니다. 네트워크가 일반화 될 수 있도록 교차 검증이 수행되는지 확인하십시오.

  • 더 작은 학습 속도를 사용하여 네트워크를 훈련하십시오. 우리는 미리 훈련 된 가중치가 무작위로 초기화 된 가중치와 비교할 때 이미 꽤 좋을 것으로 기대하기 때문에 너무 빨리 너무 많이 왜곡하고 싶지 않습니다. 일반적인 연습은 처음 학습 속도를 스크래치 훈련에 사용 된 것보다 10 배 작게 만드는 것입니다.

  • 사전 훈련 된 네트워크의 처음 몇 계층의 가중치를 고정하는 것도 일반적인 관행입니다. 처음 몇 개의 레이어는 새로운 문제와 관련된 커브 및 가장자리와 같은 보편적 인 기능을 캡처하기 때문입니다. 우리는 그 무게를 그대로 유지하고 싶습니다. 대신, 네트워크가 후속 계층의 데이터 세트 별 기능을 학습하는 데 집중할 수있게됩니다.

이 경우에 내가 틀리지 않은 것처럼 다시 훈련시켜야합니다. 배경 화면은 Image-net 모델의 클래스가 아닙니다. 또한 여기 ..)

내 대답의 원천은이 놀라운 코스의 번역입니다

추가 자료를 원하시면


레이어를 미세 조정할 때와 같이 피쳐 추출 만 수행하는 경우. 마지막 고밀도 레이어를 선형 분류 자로 대체해야하는 이유가 있습니까? 왜 새로운 고밀도 층으로 유지하고 모든 바닥 층을 얼린 상태로 재교육해야합니까? 선형 분류기를 훈련시키는 것이 새로운 조밀 한 층을 훈련시키는 것보다 빠르기 때문입니까?
CMCDragonkai

1
피쳐 추출을 위해 레이어를 추가 할 필요는 없지만 풀링 및 모양 크기 조정과 같은 레이어는 딤과 일치하도록 추가되어 중간 값을 줄일 수 있습니다. 분명히 NN보다 선형 모델을 훈련시키는 것이 더 빠르지 만 둘 다 시도하고 사용 사례에 가장 적합한 것이 무엇인지 확인할 수 있습니다. 마지막 조밀 한 층을 동결 해제하고 현재의 문제에 맞게 몇 개의 추가 층으로 재 훈련하는 것이 일반적인 관행입니다
Aditya
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.