The Deep Learning Toolset — An Overview
원본 URL:
모든 문제 가치 해결 지원을 위한 훌륭한 도구가 필요합니다. 깊은 학습은 아무런 효과가 없습니다 . 무엇보다도 좋은 공구가 앞으로 더욱 중요해질 것입니다. 우리는 많은 초기 학습 엔지니어와 열광 자들이 효율적인 프로세스에 자신들의 방식을 해킹하고있는 초라한 초신성 초창기에 아직도 있습니다. 그러나 우리는 깊이있는 학습 과정을 용이하게하는 데 도움이되는 유용한 도구가 점점 늘어나고 있음을 관찰하고 있습니다.더 접근하기 쉽고 효율적입니다. 깊은 학습이 연구자와 전문가의 작업에서 필드 (접근성)로 이동하려는 DL 애호가와 프로세스를 합리화하고 복잡성 (효율성)을 줄이려는 성장하는 엔지니어링 팀의 광범위한 분야로 꾸준히 확산됨에 따라 우리는 최고의 DL 도구에 대한 개요를 정리했습니다.
깊은 학습에서 접근성과 효율성을 높일 수있는 도구를 더 잘 평가하려면 먼저 프로세스가 실제로 어떻게 보이는지 살펴 보겠습니다.
일반적인 (감독 된) 심층 학습 응용 프로그램의 수명주기는 원시 데이터에서 시작하여 예상치 못한 결과로 끝나는 여러 단계로 구성됩니다.
일반적인 심화 학습 라이프 사이클 © 2018 Luminovo
깊은 학습 애플리케이션을 향한 첫 걸음은 올바른 데이터를 소싱하는 것입니다. 때로 운이 좋고 역사적인 데이터를 쉽게 이용할 수 있습니다. 때로는 오픈 소스 데이터 세트를 검색하고, 웹을 긁어 내고, 원시 데이터를 구매하거나 시뮬레이션 된 데이터 세트를 사용해야 할 때가 있습니다. 이 단계는 현재 사용중인 응용 프로그램에 따라 매우 다양하기 때문에 툴링 환경에 포함하지 않았습니다. 그러나 올바른 데이터를 찾는 문제를 완화 할 수있는 Google의 데이터 집합 검색 또는 Fast.ai 데이터 집합과 같은 웹 사이트 가 있습니다.
대부분의 감독 된 심층 학습 애플리케이션은 이미지, 비디오, 텍스트 또는 오디오를 처리하며 모델을 교육하기 전에이 원시 데이터에 지상 진실 레이블을 주석으로 추가해야합니다. 비용이 많이 들고 시간도 많이 걸릴 수 있습니다. 이상적인 환경에서이 프로세스는 모델 교육 및 배포와 결합되어 있으며 숙련 된 심층 학습 모델을 최대한 활용합니다 (성능이 완벽하지는 않더라도).
시간이 지남에 따라 데이터가 많이 생성 될수록 (스마트 라벨링 프로세스를 설정하고 데이터 세트가 커짐에 따라 모델을 재교육한다고 가정 해 봅시다) 데이터 세트의 버전을 변경하는 것이 중요 할수록 (코드 및 교육 된 모델의 버전을 변경하는 것처럼) .
이 단계는 모델 교육 및 배포와 관련이 있습니다. 적합한 하드웨어에 대한 액세스 권한을 얻는 것입니다. 모델 개발 과정에서 지역 개발에서 대규모 실험으로 이동하는 경우 하드웨어를 적절하게 확장해야합니다. 모델을 배포 할 때 사용자 요구에 따라 확장하는 경우에도 마찬가지입니다.
모델 교육을 시작하려면 신경망의 모델 아키텍처를 선택해야합니다.
참고 : 인터넷 밈에서 고양이를 인식하는 것과 같이 표준적인 문제가있는 경우 오픈 소스 GitHub 저장소에서 제공되는 최첨단 최신 모델을 복사하여 붙여 넣기 만하는 것이 아니라 가끔씩 손을 더럽 히고 모델 아키텍처를 조정하여 성능을 향상시킵니다. Neural Architecture Search (NAS)와 같은 새로운 접근 방식을 사용하면 적합한 모델 아키텍처를 선택하는 것이 모델 교육 단계에서 점점 더 포괄적으로 이루어 지지만 대부분의 애플리케이션에서 2018 년까지 NAS 성능의 한계 증가는 추가 된 계산 비용에 가치가 없습니다.
이 단계는 사람들이 심층 학습 애플리케이션 코딩을 생각할 때 종종 생각하는 것입니다.하지만 알 수 있듯이이 과정은 여러 가지 중 하나 일뿐 아니라 종종 중요하지도 않습니다.
모델 교육을하는 동안 레이블이 지정된 데이터를 신경망에 공급하고 반복적으로 모델 가중치를 업데이트하여 교육 세트의 손실을 최소화합니다. 하나의 메트릭 (모델 평가 참조)을 선택하면 하이퍼 매개 변수 튜닝이라는 프로세스에서 다양한 하이퍼 매개 변수 세트 (예 : 학습 속도, 모델 아키텍처 및 사전 처리 단계 세트 중에서 선택)를 사용하여 모델을 교육 할 수 있습니다.
좋은 모델과 나쁜 모델을 구분할 수 없다면 신경망을 훈련 할 필요가 없습니다. 모델 평가 중에 대개 최적화 할 하나의 메트릭을 선택합니다 (가능한 많은 메트릭을 관찰 할 수 있음). 이 메트릭의 경우 교육 데이터에서 유효성 검사 데이터까지 일반화 된 최상의 성능 모델을 찾으십시오. 여기에는 다른 실험 (하이퍼 매개 변수, 아키텍처 및 데이터 집합이 다를 수 있음) 및 성능 메트릭을 추적하고, 훈련 된 모델의 출력을 시각화하고 서로 실험을 비교하는 작업이 포함됩니다. 올바른 툴링이 없으면 동일한 깊이 학습 파이프 라인에서 여러 엔지니어와 협력 할 때 특히 혼란스럽고 복잡해질 수 있습니다.
최종 모델 평가와 모델 배포 사이의 작은 단계 (그러나 언급할만한 가치가 있음) : 다른 버전으로 모델에 태그 지정. 이를 통해 최신 모델 버전이 기대치에 미치지 못하는 것을 발견하면 쉽게 작동하는 모델 버전으로 쉽게 롤백 할 수 있습니다.
프로덕션 환경에 적용 할 모델 버전이있는 경우 사용자 (사용자 또는 다른 응용 프로그램 일 수 있음)가 모델과 대화 할 수있는 방식으로 배포해야합니다. 데이터가있는 요청을 보내고 되돌려 놓을 수 있습니다 모델의 예측. 이상적으로는 모델 배포 도구가 다른 모델 버전 간 점진적 전환을 지원하므로 프로덕션 환경에 새 모델을 적용 할 때의 효과를 예상 할 수 있습니다.
모델을 배포 한 후에는 현실 세계에서 발생하는 예측을 계속 주시하고 사용자가 서비스를 불평하면서 문을 두드리기 전에 데이터 배포가 이동하고 성능이 저하 될 것을 경고합니다.
참고 : 순서도는 이미 일반적인 심층 학습 워크 플로의 순환 특성을 암시합니다. 실제로 배포 된 모델과 새로운 레이블 (종종 휴먼 인 더 루프 (human-in-the-loop)) 사이의 피드백 루프를 심층 학습 워크 플로우에서 일류 시민으로 대우하는 것이 많은 응용 프로그램에서 가장 중요한 성공 요인 중 하나 일 수 있습니다. 실생활에서의 심화 학습에서 일은 종종 순서도가 제시하는 것보다 더 복잡합니다. (예 : 미리 라벨링 된 데이터 세트로 작업 할 때) 여러 단계를 거치면 (모델 성능이 정확하지 않고 더 많은 데이터를 제공해야 함) 미친 루프에서 앞뒤로 이동해야합니다 ( 아키텍처 => 교육 => 평가 => 교육 => 평가 => 아키텍처).
에서 Luminovo , 우리는 우리의 엔지니어가보다 효율적 도구뿐만 아니라 활용 화려한 깊은 학습 사람들이 거기서 만든 강력한 도구를 만들기 위해 노력하고 있습니다. 위대한 코드는 공유 될 수 있으므로 다음 그래프는 현재 시장에 나와있는 가장 유망한 심층 학습 도구의 개요를 보여줍니다. DL 엔지니어를위한 DL 엔지니어 및 멋진 깊이있는 학습 응용 프로그램을 만드는 방법에 대해 자세히 알고 싶으신 분.
다른 도구에 대한 클릭 가능한 링크가있는 PDF는 여기 로 이동 하십시오 .
잠깐 만요 - 좋아하는 도구가 없습니다! 우리가 알기 쉽게 목록에 추가하고 야생에서의 깊은 학습 상태를 함께 발전시킬 수 있도록하십시오 : tooling@luminovo.ai.