Main Content

이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

심층 신경망 디자이너

딥러닝 신경망의 설계, 시각화 및 훈련

설명

심층 신경망 디자이너 앱을 사용하여 딥러닝 신경망을 구축, 시각화, 편집 및 훈련시킬 수 있습니다. 이 앱을 사용하여 다음을 수행할 수 있습니다.

  • 전이 학습을 위해 사전 훈련된 신경망을 불러와 편집.

  • 신경망을 가져와서 편집한 후 새 신경망 구축.

  • 끌어서 놓기를 통해 새 계층을 추가하고 새 연결 만들기.

  • 계층 속성 보기 및 편집.

  • 신경망 아키텍처를 올바르게 정의했는지 확인하고 훈련 전에 문제를 파악할 수 있도록 신경망 분석.

  • 분류 문제를 위해 영상 데이터를 가져오고 증대 옵션 선택.

  • 영상 분류 작업을 위해 신경망 훈련시키기.

  • 정확도, 손실 및 검증 메트릭으로 구성된 플롯을 사용하여 훈련 모니터링.

  • MATLAB® 코드를 생성하여 신경망 구축 및 훈련시키기.

신경망 설계를 마친 후에는 신경망을 저장하거나 훈련시킬 수 있는 작업 공간으로 내보낼 수 있습니다. 심층 신경망 디자이너를 사용하여 영상 분류 문제를 위해 신경망을 훈련시킬 수도 있습니다. 훈련된 신경망과 결과를 작업 공간으로 내보낼 수 있습니다.

심층 신경망 디자이너 앱 열기

  • MATLAB 툴스트립: 탭의 머신러닝 및 딥러닝에서 앱 아이콘을 클릭합니다.

  • MATLAB 명령 프롬프트: deepNetworkDesigner를 입력합니다.

예제

모두 확장

사전 훈련된 간단한 신경망을 심층 신경망 디자이너 앱에서 살펴보겠습니다.

앱을 열고 사전 훈련된 신경망을 선택합니다. 디자이너 탭을 선택하고 새로 만들기를 클릭하여 사전 훈련된 신경망을 불러올 수도 있습니다. 신경망을 다운로드해야 할 경우에는 설치를 클릭하여 애드온 탐색기로 연결되는 링크를 표시합니다.

시작하려면 SqueezeNet이나 GoogLeNet과 같이 상대적으로 속도가 빠른 신경망을 선택해 보십시오. 어느 설정이 적절한지 파악했으면 Inception-v3이나 ResNet과 같이 보다 정확한 신경망을 사용해 보며 결과가 개선되는지 살펴봅니다. 사전 훈련된 신경망 선택에 대한 자세한 내용은 사전 훈련된 심층 신경망 항목을 참조하십시오.

디자이너 창에서 신경망을 시각화하고 살펴봅니다. 사용 가능한 신경망 목록과 이들을 비교하는 방법은 사전 훈련된 심층 신경망 항목을 참조하십시오.

심층 신경망 디자이너를 사용하여 신경망을 생성하는 방법에 대한 자세한 내용은 심층 신경망 디자이너를 사용하여 신경망 구축하기 항목을 참조하십시오.

훈련을 위해 심층 신경망 디자이너로 영상 데이터를 가져옵니다.

앱으로 데이터를 가져오려면 데이터 탭에서 데이터 가져오기를 클릭하십시오.

각 클래스별 영상으로 구성된 하위 폴더가 있는 폴더에서 데이터를 가져오거나 작업 공간의 imageDatastore에서 데이터를 가져올 수 있습니다.

심층 신경망 디자이너는 일련의 영상 증대 옵션을 제공합니다. 데이터에 무작위 방식의 증대를 적용하여 훈련 데이터의 양을 효과적으로 늘릴 수 있습니다. 데이터를 증대하도록 선택한 경우 심층 신경망 디자이너가 각 Epoch에 대해 훈련 데이터를 무작위로 섭동합니다. 그러면 각 Epoch에서 서로 약간씩 다른 데이터 세트를 사용하게 됩니다.

심층 신경망 디자이너는 다음과 같은 증대 옵션을 제공합니다.

  • x축에서의 무작위 반사

  • y축에서의 무작위 반사

  • 무작위 회전

  • 무작위 재스케일링

  • 무작위 가로 평행 이동

  • 무작위 세로 평행 이동

참고

특정 데이터 세트에는 일부 증대가 적절하지 않으므로 심층 신경망 디자이너는 기본적으로 데이터를 증대하지 않습니다. 자세한 내용은 무작위 기하 변환을 사용하여 훈련용 영상 증대하기 항목을 참조하십시오.

폴더를 선택하거나 작업 공간에서 imageDatastore를 가져와서 검증 데이터를 가져옵니다. 훈련 데이터에서 검증 데이터를 분할하도록 선택할 수도 있습니다. 검증 데이터는 성능을 모니터링하고 과적합을 방지하는 데 도움을 줍니다.

훈련 데이터의 위치를 선택한 후에는 검증 데이터를 지정하고 증대 옵션을 설정한 다음(있는 경우) 가져오기를 클릭하여 데이터 세트를 가져옵니다.

전이 학습을 위해 심층 신경망 디자이너 앱에서 신경망을 편집하여 준비합니다.

전이 학습은 사전 훈련된 딥러닝 신경망이 새로운 작업을 학습하도록 미세 조정하는 과정입니다. 학습된 특징을 보다 적은 개수의 훈련 영상을 사용하여 새로운 작업으로 빠르게 전이할 수 있습니다. 따라서 전이 학습을 사용하는 것은 신경망을 처음부터 훈련시키는 것보다 훨씬 쉽고 빠릅니다. 사전 훈련된 신경망을 전이 학습을 위해 사용하려면 클래스 개수가 새로운 데이터 세트와 일치하도록 변경해야 합니다.

심층 신경망 디자이너를 엽니다.

deepNetworkDesigner

심층 신경망 디자이너 시작 페이지에서 사전 훈련된 신경망을 선택하여 불러옵니다. 사전 훈련된 신경망 목록에서 SqueezeNet을 선택해 보십시오. 열기를 클릭하여 신경망을 불러옵니다.

전이 학습을 위해 신경망을 준비하려면 마지막 학습 가능한 계층과 마지막 분류 계층을 바꾸십시오.

  • 마지막 학습 가능한 계층이 2차원 컨벌루션 계층(예: SqueezeNet의 'conv10' 계층)인 경우:

    • 캔버스에 새 convolutional2dLayer를 끌어서 놓습니다. NumFilters 속성을 새 클래스 개수로 설정하고 FilterSize1,1로 설정합니다.

    • 마지막 convolutional2dLayer를 삭제하고 새로 추가한 계층을 대신 연결합니다.

  • 마지막 학습 가능한 계층이 완전 연결 계층(GoogLeNet과 같은 대부분의 사전 훈련된 신경망의 경우)인 경우:

    • 새로운 fullyConnectedLayer를 캔버스에 끌어서 놓은 다음 OutputSize 속성을 새 클래스 개수로 설정합니다.

    • 마지막 fullyConnectedLayer를 삭제하고 새로 추가한 계층을 대신 연결합니다.

다음으로, 분류 출력 계층을 삭제합니다. 그런 다음 새 classificationLayer를 캔버스에 끌어서 놓고 이 계층을 대신 연결합니다. 출력 계층의 디폴트 설정으로 인해 훈련 중에 클래스의 개수를 학습하게 됩니다.

신경망이 훈련 준비가 되었는지 확인하려면 디자이너 탭에서 분석을 클릭하십시오.

신경망을 훈련시키려면 훈련 탭을 선택하십시오. 자세한 내용은 심층 신경망 디자이너를 사용한 전이 학습 항목을 참조하십시오.

계층 속성을 이해하고 편집하는 데 도움이 필요하면 계층 이름 옆에 있는 도움말 아이콘을 클릭하십시오.

디자이너 창에서 계층을 선택하여 속성을 확인하고 편집합니다. 계층 속성에 대한 자세한 정보를 보려면 계층 이름 옆에 있는 도움말 아이콘을 클릭하십시오.

계층 속성에 대한 자세한 내용은 딥러닝 계층 목록 항목을 참조하십시오.

심층 신경망 디자이너 앱에서 영상 분류 신경망을 훈련시킵니다.

심층 신경망 디자이너로 가져온 영상 데이터에 대해 신경망을 훈련시키려면 훈련 탭에서 훈련을 클릭하십시오. 훈련을 보다 세부적으로 제어하려면 훈련 옵션을 클릭하고 훈련 설정을 선택합니다. 훈련 옵션 선택에 대한 자세한 내용은 trainingOptions 항목을 참조하십시오.

영상 분류 신경망을 훈련시키는 방법을 보여주는 예제는 심층 신경망 디자이너를 사용한 전이 학습 항목을 참조하십시오.

다른 유형의 데이터에 대해 신경망을 훈련시키려면 디자이너 탭을 선택하고 내보내기를 클릭하여 초기 신경망 아키텍처를 내보내십시오. 그런 다음 프로그래밍 방식으로 신경망을 훈련시킬 수 있습니다. 간단한 예제는 Create Simple Sequence Classification Network Using Deep Network Designer 항목을 참조하십시오.

심층 신경망 디자이너에서 만든 신경망 아키텍처를 작업 공간으로 내보냅니다.

  • 초기 가중치와 함께 신경망 아키텍처를 내보내려면 디자이너 탭에서 내보내기를 클릭하십시오.

  • 훈련된 가중치와 함께 신경망 아키텍처를 내보내려면 훈련 탭에서 내보내기를 클릭하십시오.

심층 신경망 디자이너 앱에서 만든 신경망 계층을 다시 만들기 위해 MATLAB 코드를 생성합니다.

신경망 계층을 다시 만들려면 디자이너 탭에서 내보내기 > 코드 생성을 선택하십시오.

또는 내보내기 > 초기 파라미터로 코드 생성을 선택하여 학습 가능한 파라미터를 포함한 신경망을 다시 만들 수도 있습니다.

스크립트를 생성한 후에는 다음 작업을 수행할 수 있습니다.

  • 앱에서 만든 신경망 계층을 다시 만들기 위해 스크립트를 실행합니다.

  • 신경망을 훈련시키기 위해, 스크립트를 실행한 후 trainNetwork 함수에 계층을 입력합니다.

  • 코드를 검토하여 프로그래밍 방식으로 계층을 만들고 연결하는 방법을 알아봅니다.

  • 계층을 수정하기 위해 코드를 편집합니다. 스크립트를 실행하고 편집을 위해 신경망을 다시 앱으로 가져올 수도 있습니다.

자세한 내용은 Generate MATLAB Code to Recreate Network Layers 항목을 참조하십시오.

심층 신경망 디자이너에서 수행한 데이터 가져오기 및 훈련을 다시 생성하려면 MATLAB 코드를 생성하십시오.

데이터 가져오기 및 훈련을 다시 생성하려면 훈련 탭에서 내보내기 > 훈련에 사용할 코드 생성을 선택하십시오.

스크립트를 생성한 후에는 다음 작업을 수행할 수 있습니다.

  • 신경망 계층 및 앱에서 수행한 훈련을 다시 생성하기 위해 스크립트를 실행합니다.

  • 코드를 검토하여 프로그래밍 방식으로 데이터를 가져오고 신경망을 생성 및 훈련시키는 방법을 알아봅니다.

  • 코드를 수정하여 다른 신경망 아키텍처와 훈련 옵션을 사용해 보며 이것이 결과에 미치는 영향을 살펴봅니다.

자세한 내용은 Generate MATLAB Code to Train Network 항목을 참조하십시오.

관련 예제

여러 신경망을 훈련시키고 결과를 비교하려면 실험 관리자를 사용해 보십시오.

R2018b에 개발됨