머신 러닝 엔지니어의 학습 – 4 부 : 모델
시리즈 의이 최신 부분에서는 이미지 분류 모델을 선택하는 데 배운 내용과 해당 모델을 미세 조정하는 방법을 공유 할 것입니다. 또한 라벨링 프로세스를 가속화하기 위해 모델을 활용하는 방법과 사용 및 성능 통계를 생성하여 노력을 정당화하는 방법을 보여 드리겠습니다.
1 부에서는 이미지 분류 프로젝트에서 사용하는 이미지 데이터에 레이블을 지정하는 프로세스에 대해 논의했습니다. 나는 “좋은”이미지를 정의하고 하위 클래스를 만드는 방법을 보여주었습니다. 2 부에서는 벤치 마크 세트와 합성 데이터 및 중복 이미지를 처리하는 방법을 사용하여 일반적인 Train-Validation Test 세트를 넘어 다양한 데이터 세트를 살펴 보았습니다. 파트 3에서는 훈련 된 모델과 배포 된 모델에 다른 평가 기준을 적용하고 벤치 마크를 사용하여 모델을 배포 할시기를 결정하는 방법을 설명했습니다.
모델 선택
지금까지 나는 이미지 세트를 라벨링하고 큐 레이션하고 말 앞에 카트를 넣는 것과 같은 모델 성능을 평가하는 데 많은 시간을 초월했습니다. 나는 거대한 신경망을 설계하는 데 필요한 것을 최소화하려고하지 않습니다. 이것은 당신이 구축하는 응용 프로그램의 매우 중요한 부분입니다. 제 경우에는 청구서에 맞는 모델에 정착하기 전에 몇 주 동안 다양한 가용 모델을 실험하는 데 보냈습니다.
일단 모델 구조를 선택하면 일반적으로 주요 변경 사항을 변경하지 않습니다. 6 년 동안 배포 된 저는 여전히 같은 것을 사용하고 있습니다. 구체적으로, Inception v4는 입력 이미지 크기가 크고 미묘한 이미지 기능을 선택할 수있는 적절한 수의 레이어가 있기 때문에 선택했습니다. 또한 CPU에서 충분히 빠르게 추론을 수행하므로 모델을 제공하기 위해 고가의 하드웨어를 실행할 필요가 없습니다.
마일리지는 다를 수 있습니다. 그러나 주요 테이크 아웃은 데이터에 중점을두면 배당금을 지불하는 것보다 최고의 모델을 검색한다는 것입니다.
미세 조정
나는 매우 잘 작동하는 과정을 공유 할 것입니다. 모델을 사용하기로 결정한 후, 나는 무작위를 무작위로 초기화하고 93%와 같이 상당히 겸손한 정확도로 개선하기 전에 약 120 에포크에 대한 모델을 열었습니다. 이 시점에서 나는 데이터 세트를 정리하기 위해 훈련 된 모델 (파트 3 참조)의 평가를 수행했습니다. 또한 데이터 파이프 라인의 일부로 새로운 이미지를 통합하고 (1 부 참조) 다음 교육 실행을위한 데이터 세트를 준비했습니다.
다음 훈련 실행을 시작하기 전에 마지막으로 훈련 된 모델을 가져 와서 출력 레이어를 팝하고 무작위 무게로 다시 추가합니다. 제 경우에는 출력 클래스의 수가 지속적으로 증가하고 있기 때문에 새로운 클래스 수를 설명하기 위해 해당 계층을 팝업해야합니다. 중요하게도, 나는 훈련 된 나머지 무게를 그대로두고 새로운 클래스를 계속 업데이트 할 수 있도록 허용합니다.
이를 통해 개선이 중단되기 전에 모델이 훨씬 빠르게 훈련 할 수 있습니다. 이 과정을 수십 번 반복 한 후, 훈련은 약 20 개의 시대 후 고원에 도달하며 테스트 정확도는 99%에 도달 할 수 있습니다! 이 모델은 이전 실행에서 설정 한 낮은 수준의 기능을 바탕으로 출력 가중치를 다시 학습하여 오버 피트팅을 방지합니다.
이 과정을 신뢰하는 데 시간이 걸렸고 몇 년 동안 매번 처음부터 훈련 할 것입니다. 그러나 내가 이것을 시도하고 훈련 시간 (클라우드 GPU의 비용은 말할 것도없이)을 보았을 때 정확도가 계속 올라가는 동안 나는 프로세스를 수용하기 시작했다. 더 중요한 것은 배포 된 모델의 평가 지표를 계속보고 있습니다.
증가
훈련 중에 이미지 ( “증강”이라고 함)에 변환을 적용하여 데이터 세트로부터 더 많은 다양성을 제공 할 수 있습니다. 동물원 동물의 경우 왼쪽 오른쪽 플롭, 시계 방향 및 시계 반대 방향으로 약간의 회전을 적용하고 확대 및 축소되는 약간의 크기 조정이 매우 안전합니다.
이러한 변환을 염두에두고 이미지가 여전히 좋은 교육 이미지 역할을 할 수 있는지 확인하십시오. 다시 말해, 피사체가 이미 작은 이미지는 축소로 더 작아서 원본을 버리고 싶을 것입니다. 또한, 원래 사진 중 일부는 추가 회전으로 인해 비정상적인 것처럼 보이기 때문에 똑바로 세워 지도록 90도까지 반환해야 할 수도 있습니다.
대량 식별
1 부에서 언급했듯이 숙련 된 모델을 사용하여 이미지를 한 번에 하나씩 라벨링하는 데 도움이 될 수 있습니다. 그러나 이것을 더욱 발전시키는 방법은 새로 훈련 된 모델이 한 번에 수백을 식별하는 동시에 필터링 할 수있는 결과 목록을 작성하는 것입니다.
일반적으로 큰 컬렉션이 있습니다 벨라 벨로 표시되지 않습니다 응용 프로그램을 정기적으로 사용하거나 다른 수단을 통해 제공되는 이미지. Part 1에서 “알 수없는”레이블을 흥미로운 그림에 할당하지만 그것이 무엇인지 전혀 알 수 없습니다. 대량 식별 방법을 사용하면 컬렉션을 신속하게 선별하여 레이블을 타겟팅하면 자신이 무엇인지 알 수 있습니다.
현재 이미지 수를 대량 식별 결과와 결합하면 확장 된 커버리지가 필요한 클래스를 대상으로 할 수 있습니다. 대량 식별을 활용할 수있는 몇 가지 방법은 다음과 같습니다.
- 낮은 이미지 수를 늘리십시오 – 수업 중 일부는 훈련 세트에 컷오프를 거의 포함하지 않았을 수 있습니다. 즉, 커버리지를 개선하기 위해 더 많은 예가 필요합니다. 카운트가 낮은 이미지에 대한 필터.
- 준비 또는 합성 이미지를 교체하십시오 -일부 클래스는 전적으로 비실한 세계 이미지를 사용하여 구축 할 수 있습니다. 이 사진들은 시작하기에 충분할 수 있지만 일반적으로 나오는 것과 다르게 보이기 때문에 성능 문제를 야기 할 수 있습니다. 단계별 이미지에 의존하는 클래스 용 필터.
- 모양과 비슷한 수업을 찾으십시오 – 데이터 세트의 클래스는 다른 클래스처럼 보일 수 있습니다. 예를 들어, 모델이 영양을 식별 할 수 있으며 모델이 아직 식별 할 수없는 가젤처럼 보입니다. 영양 및 신뢰 점수가 낮은 필터를 설정하면 레이블을 지정할 수있는 가젤 이미지가 표시 될 수 있습니다.
- 알 수없는 레이블 – 수십 개의 귀여운 왈라비 사진을 식별하는 방법을 알지 못했을 수도 있으므로 좋은 이미지이기 때문에“알 수없는”아래에 저장했습니다. 이제 그것이 무엇인지 알았으므로 모양과 같은 캥거루를 필터링하고 새 클래스를 빠르게 추가 할 수 있습니다.
- 낮은 점수의 질량 제거 – 라벨링할만한 가치가없는 큰 표지되지 않은 이미지 모음을 정리하는 방법으로 가장 낮은 점수를 위해 필터를 설정하십시오.
던지기 훈련 실행
2 부에서 이미지 컷오프를하기로 결정한 결정을 기억하십시오. 이는 우리가 대중에게 모델을 훈련하고 서버하기 전에 클래스의 적절한 예제 이미지를 보장 할 수 있습니다. 문제는 여러 수업이있을 수 있다는 것입니다. 단지 컷오프 아래 (내 경우 40), 모델로 만들지 마십시오.
내가 이것에 접근하는 방식은 제작으로 이동하려고하지 않는“Throw-Away”교육 실행입니다. 하단 컷오프를 40에서 35로 줄이고 열차 검증 테스트 세트를 구축 한 다음 평소처럼 훈련하고 평가합니다. 이것의 가장 중요한 부분은 결국 벌크 식별입니다!
어딘가에는 대규모 unlabelled 이미지 모음의 어딘가에 내가 필요한 몇 안되는 것을 찾을 가능성이 있습니다. 이 던지기 모델로 대량 식별을 수행하면 찾는 데 도움이됩니다.
성능보고
기계 학습 응용 프로그램의 매우 중요한 측면 중 하나는 사용 및 성능 보고서를 표시 할 수 있다는 것입니다. 관리자는 애플리케이션이 비용을 정당화하는 데 몇 번 사용되는지 확인하고 싶을 것입니다. ML 엔지니어는 최신 모델에 비해 최신 모델이 어떻게 수행되는지 확인하고 싶을 것입니다.
시스템을 통해 모든 트랜잭션을 기록하기 위해 모델 서브에 로그를 작성해야합니다. 또한 파트 3의 수동 평가를 기록하여 시간이 지남에 따라 정확도, 모델 버전, 신뢰 점수, 클래스 등의 성능에 대한 성능에 대해보고해야합니다. 트렌드를 감지하고 개선을 위해 조정할 수 있습니다. 전반적인 솔루션.
보고 도구가 많이 있으므로 다른 사람보다 추천하지 않습니다. 이 대시 보드를 만들기 위해 최대한 많은 정보를 수집하고 있는지 확인하십시오. 이것은 응용 프로그램 유지 보수와 관련된 시간, 노력 및 비용을 정당화 할 것입니다.
결론
우리는 이미지 분류 프로젝트를 구축하고 실제 세계에 배치하는이 네 부분으로 구성된 시리즈의 많은 근거를 다루었습니다. 모두 데이터로 시작하여 최고 품질의 이미지 라이브러리를 유지하는 데 시간과 노력을 투자함으로써 비즈니스 파트너의 신뢰와 자신감을 얻을 수있는 인상적인 수준의 모델 성능에 도달 할 수 있습니다.
머신 러닝 엔지니어로서 귀하는 주로 모델을 구축하고 배포 할 책임이 있습니다. 그러나 그것은 멈추지 않습니다 – 데이터에 뛰어 들었습니다. 데이터에 익숙할수록 모델의 강점과 약점을 더 잘 이해할 수 있습니다. 평가를 면밀히 살펴보고 데이터 세트를 조정할 수있는 기회로 사용하십시오.
이 기사가 자신의 기계 학습 프로젝트를 개선 할 수있는 새로운 방법을 찾는 데 도움이 되었기를 바랍니다. 그건 그렇고, 기계가 모든 학습을하게하지 마십시오. 인간으로서 우리의 임무는 우리 자신의 학습을 계속하는 것입니다.
모델 최적화에 대한 데이터 중심의 접근 방식으로 저와 함께이 깊은 다이빙을 해주셔서 감사합니다. 귀하의 의견과 귀하의 응용 프로그램에이를 적용 할 수있는 방법을 기대합니다.
출처 참조
Post Comment