신경망을 점진적으로 훈련시킬 수 있습니까?


23

출력 클래스가 처음부터 정의되지 않은 신경망을 훈련하고 싶습니다. 들어오는 데이터를 기반으로 점점 더 많은 클래스가 소개 될 예정입니다. 이것은 새로운 수업을 소개 할 때마다 NN을 재교육시켜야한다는 것을 의미합니다.

이전 교육 단계에서 이전에 획득 한 정보를 잊지 않고 어떻게 NN을 증분 교육 할 수 있습니까?

답변:


10

나는 당신의 질문이 머신 러닝의 전이 학습 이라는 중요한 개념에 영향을 미친다는 것을 이미 말하고 싶습니다 . 실제로, 시간이 많이 걸리고 충분한 크기의 데이터 세트를 갖는 것이 상대적으로 드물기 때문에 (임의의 초기화로) 처음부터 전체 회선 네트워크를 훈련시키는 사람은 거의 없습니다.

최신 ConvNet은 ImageNet에서 여러 GPU를 학습하는 데 2-3 주가 걸립니다. 따라서 사람들이 네트워크를 미세 조정하기 위해 사용할 수있는 다른 사람들의 이익을 위해 최종 ConvNet 체크 포인트를 공개하는 것이 일반적입니다. 예를 들어 Caffe 라이브러리에는 사람들이 네트워크 가중치를 공유 하는 모델 동물원 이 있습니다.

이미지 인식을 위해 ConvNet이 필요한 경우 응용 프로그램 도메인이 무엇이든 기존 네트워크를 고려해야합니다 (예 : VGGNet 이 일반적 선택).

편입 학습을 수행 할 때 명심해야 할 것이 몇 가지 있습니다 .

  • 사전 훈련 된 모델의 구속 조건. 사전 훈련 된 네트워크를 사용하려는 경우 새 데이터 세트에 사용할 수있는 아키텍처 측면에서 약간 제한 될 수 있습니다. 예를 들어 사전 훈련 된 네트워크에서 임의로 Conv 레이어를 가져올 수 없습니다. 그러나 일부 변경 사항은 간단합니다. 매개 변수 공유로 인해 공간 크기가 다른 이미지에서 사전 훈련 된 네트워크를 쉽게 실행할 수 있습니다. 전진 기능이 입력 볼륨 공간 크기 (보폭이 "적합"하는 한)와 무관하기 때문에 이것은 Conv / Pool 레이어의 경우 분명합니다.

  • 학습률. 새 데이터 세트의 클래스 점수를 계산하는 새 선형 분류기의 (무작위 초기화) 가중치와 비교하여 미세 조정중인 ConvNet 가중치에 대해 더 작은 학습 속도를 사용하는 것이 일반적입니다. 이는 ConvNet 가중치가 상대적으로 양호하기 때문에 너무 빠르고 너무 많이 왜곡하지 않기를 원하기 때문입니다 (특히 그 위에있는 새로운 선형 분류 기가 임의 초기화에서 학습되는 동안).

이 주제에 관심이있는 경우 추가 참조 : 심층 신경망의 기능은 어떻게 전송할 수 있습니까?


전이 학습 만이 증분 학습을 수행하는 유일한 방법은 아닙니다.
nbro

7

여기 당신이 할 수있는 한 가지 방법이 있습니다.

네트워크를 학습 한 후에는 가중치를 디스크에 저장할 수 있습니다. 이를 통해 새 데이터를 사용할 수있을 때이 가중치를로드하고 마지막 교육이 중단 된 시점부터 교육을 계속할 수 있습니다. 그러나이 새로운 데이터에는 추가 클래스가 제공 될 수 있으므로 이제 이전에 저장된 가중치로 네트워크에서 사전 훈련 또는 미세 조정 을 수행합니다. 이 시점에서 수행해야 할 유일한 것은 마지막 레이어에 새 데이터 세트가 도착함에 따라 도입 된 새 클래스를 수용하도록하는 것입니다. 가장 중요한 것은 추가 클래스를 포함하는 것입니다 (예 : 마지막 레이어 처음에는 10 개의 수업이 있었으며 이제 사전 훈련 / 미세 조정의 일부로 2 개의 수업이 더 있습니다. 12 개의 수업으로 교체했습니다. 간단히 말해서이 원을 반복하십시오.

반복


마지막 계층의 새 클래스 (훈련 클래스 + 새 클래스) 만 수용하는 경우 새 클래스로만 학습하고 모델은 (훈련 + 새로운 클래스)의 배열을 기대하기 때문에 모델을 적합 할 수 없습니다 ).
Joel Carneiro
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.