챕터 5
딥러닝 모델의 테스트 및 배포
딥러닝 워크플로는 데이터를 분류할 수 있는 모델을 얻는 것으로 끝나지 않습니다. 이 모델이 미지의 데이터에 대해 작동하고, 다른 시스템 구성요소와도 예상대로 상호작용할 것이라는 믿음을 가질 수 있어야 할 것입니다. 이 챕터에서는 특정한 성능 특성을 요구하는 타겟 기기에 모델을 배포하는 방법을 알아봅니다.
이제 신경망과 기타 시스템 논리가 제대로 작동하는지 알아보는 것이 합리적이고, 바로 여기서 테스트의 역할이 중요해집니다. 하이 파이브 카운터의 경우, 훈련 과정에서 40개의 검증 영상을 이용하여 모델의 정확도를 평가하였고 40개 중에 1개만 잘못 레이블을 지정했기 때문에 신경망 자체가 일정한 방식으로 작동한다는 점을 알 수 있습니다.
시작점으로는 좋습니다만, 비록 이 모델이 40개의 검증 영상에 대해 작동한다는 신뢰가 어느 정도 있다고 해도 아직 접하지 못한 영상에 대해서도 제대로 작동할지는 알 수 없습니다. 따라서 신경망의 정확도가 전체 해 공간에 걸쳐 적절한 수준인지 확인하기 위해, 훈련 중에 사용한 검증 데이터셋 이외에도 테스트 데이터셋을 사용하게 됩니다.
하이 파이브 카운터의 경우, 훈련 중에 신경망이 수렴하는지 검증하기 위해 40개의 영상으로 충분했습니다만 실제로 신경망이 접하게 될 모든 팔 동작을 포괄하기에는 충분하지 않았습니다. 이 신경망을 현장에 배포하기 전에 추가적인 테스트가 필요합니다. 그런 다음, 시스템을 테스트한 후 구현에 신뢰를 갖게 되었다면 Simulink Coder™를 사용하여 임베디드 C 코드를 구축하고, 심층 신경망을 포함한 이 모든 논리를 팔에 배포할 수 있습니다.
테스트의 일부는 하이 파이브 동작이나 하이 파이브 이외의 동작 등 시계에서 경험할 수 있는 다양한 팔 동작을 체계적으로 모두 시험해 보는 것입니다. 대표적인 훈련 세트를 구축하고 전체 해 공간을 포착하기 위해서는 가능하면 다양한 사람이 참여하는 것이 좋습니다. 시스템이 사용자 동작을 오분류하는 경우마다 그 데이터를 따로 저장하고 그것을 훈련 데이터셋에 추가하여 신경망을 재훈련하고 미세 조정할 것입니다.
중요한 점은 전체 해 공간의 부분 집합을 샘플링함으로써 완벽하게 기능하는 신경망을 갖게 된다고 보장할 수는 없지만, 그것이 작동할 것이라는 신뢰를 가질 수 있는 범위가 늘어나게 된다는 점입니다. 이것이 바로 심층 신경망에 대한 표준 접근 방식입니다. 현재 심층 신경망을 검증하는 체계적인 최적의 방법은 없습니다. 그래서 전체 해 공간에 걸쳐 신경망에 대한 신뢰를 갖기 위해 보통 몬테카를로 접근법 같은 샘플링 방법에 의존하게 됩니다.
재료 결함을 찾든, 오디오에서 음성 명령을 추출하든, RF 변조 방식을 분류하든, 여러분의 프로젝트에 대해서도 몬테카를로 접근법으로 테스트하게 될 가능성이 높습니다. 훈련된 신경망을 전체 시스템에 통합하고 다양한 상황에서 테스트하게 될 것입니다.
중요한 점은 여러분이 아무리 많은 테스트를 실행하더라도 테스트하지 않은 해 공간은 항상 있을 것입니다.
이 부분에서 합성 데이터가 강력한 역할을 할 수 있습니다. 신경망을 훈련하기 위해 RF 데이터를 합성하는 방법은 챕터 2에서 살펴보았습니다. 이와 유사하게 여러분은 합성 데이터를 이용하여 수백만 개의 다른 테스트 케이스를 생성하고 아주 조밀한 해 공간 샘플링을 생성할 수 있습니다. 이로써 시스템에 대해 높은 신뢰를 가질 수 있게 됩니다.
하이 파이브 프로젝트에서는 팔 동작으로 가능한 모든 가속 패턴을 정확하게 모델링하기 어렵고 어떤 동작이 하이 파이브인지 알기 어렵기 때문에 데이터 합성이 어려울 것입니다. 일부 프로젝트에서 테스트 데이터를 합성하는 것보다 신경망을 물리적으로 테스트하는 것이 더 쉬운 이유가 바로 이것입니다.
테스트 데이터를 합성할 수 있는지 여부와 무관하게, 궁극적으로는 실제 하드웨어에서 시스템을 테스트해야 할 것입니다.
신경망이 여전히 너무 크다면 더 작은 사전 훈련된 신경망을 찾아보는 대신에, 가지치기나 양자화를 통해 신경망의 크기 축소를 시도할 수 있습니다.
가지치기는 여러분의 특정 데이터 분류에 크게 기여하지 않는 일부 신경망 파라미터를 제거하는 것입니다.
양자화는 신경망에서 단일 정밀도 또는 이중 정밀도 가중치와 편향을 취해 그것들을 8비트로 스케일링한 정수 데이터형으로 양자화하는 것입니다. 고정밀도 데이터형을 사용하지 않고도 신경망에서 동일한 성능을 얻을 수 있다는 것이 골자입니다. 더 자세한 내용은 int8 양자화 소개 및 심층 신경망 분야에서 int8 양자화가 인기 있는 이유를 참조하십시오.
신경망을 축소하는 것이 어떤 의미인지 알 수 있도록 하나의 예를 들자면 아래에서 심층 신경망 양자화기 앱을 사용하여 하이 파이브 신경망을 8비트로 스케일링한 정수로 양자화한 결과를 볼 수 있습니다. 실행 시간은 몇 분 정도 걸렸으며, 그 후에 신경망은 75% 압축되었고 정확도에는 거의 차이가 없었습니다.
사전 훈련된 신경망, 전이 학습, 가지치기, 양자화를 통해 여러분의 응용 사례에 맞는 적절한 크기와 효율성을 가진 모델을 얻을 수 있다는 것을 알 수 있습니다.
신경망이 여전히 너무 크다면, 최후의 방법은 처음부터 새로 신경망 아키텍처를 구축하는 방법입니다. 시작할 때 신경망은 아무 개념이 없기 때문에 모든 것을 학습해야 하므로 이 방법은 가장 많은 훈련 데이터와 가장 긴 훈련 시간이 필요합니다.
또 다른 단점은 처음부터 새로 효율적인 신경망을 만들려면, 다양한 신경망 아키텍처를 완벽하게 이해하고 있어야 한다는 점입니다.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)