Main Content

심층 신경망 디자이너를 사용하여 신경망 구축하기

심층 신경망 디자이너 앱을 사용하여 딥러닝 신경망을 대화형 방식으로 구축하고 편집합니다. 이 앱을 사용하면 신경망을 가져오거나 처음부터 구축하고, 계층 속성을 보고 편집하며, 신경망을 결합하고, 신경망 아키텍처를 만드는 코드를 생성할 수 있습니다.

다음과 같은 다양한 신경망 생성 작업에 심층 신경망 디자이너를 사용할 수 있습니다.

계층 라이브러리에서 블록을 끌어서 연결하여 신경망을 조합합니다. 계층을 빠르게 검색하려면 계층 라이브러리 창의 계층 필터링 검색 상자를 사용하십시오.

Designer pane of Deep Network Designer with an imageInputLayer connected to a convolution2dLayer and an unconnected reluLayer

You can add layers from the workspace to the network in the Designer pane.

  1. Click New.

  2. Pause on From Workspace and click Import.

  3. Choose the layers or network to import and click OK.

  4. Click Add to add the layers or network to the Designer pane.

You can also load pretrained networks by clicking New and selecting them from the start page.

계층 속성을 보고 편집하려면 계층을 선택하십시오. 계층 속성에 대한 자세한 정보를 보려면 계층 이름 옆에 있는 도움말 아이콘을 클릭하십시오.

Properties pane displaying the properties of a crossChannelNormalizationLayer

모든 계층 속성에 대한 정보를 보려면 딥러닝 계층 목록 페이지의 표에서 계층 이름을 클릭하십시오.

신경망을 생성한 후에는 분석하여 오차를 검사할 수 있습니다. 자세한 내용은 신경망 확인하기 항목을 참조하십시오.

전이 학습

전이 학습은 딥러닝 응용 분야에서 널리 사용됩니다. 사전 훈련된 신경망을 새로운 작업을 학습하기 위한 출발점으로 사용할 수 있습니다. 전이 학습으로 신경망을 미세 조정하는 것은 무작위로 초기화된 가중치를 사용하여 신경망을 처음부터 훈련시키는 것보다 일반적으로 훨씬 더 빠르고 쉽습니다. 학습된 특징을 보다 적은 개수의 훈련 영상을 사용하여 새로운 작업으로 빠르게 전이할 수 있습니다.

심층 신경망 디자이너에서 영상 데이터를 사용하는 전이 학습에 적합한 사전 훈련된 신경망을 선택할 수 있습니다.

사전 훈련된 신경망 불러오기

앱을 열고 사전 훈련된 신경망을 선택합니다. 새로 만들기를 클릭하여 사전 훈련된 신경망을 불러올 수도 있습니다. 신경망을 다운로드해야 할 경우에는 신경망에서 잠시 멈추고 설치를 클릭하여 애드온 탐색기를 엽니다.

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

Deep Network Designer start page showing available networks

사전 훈련된 신경망 조정하기

전이 학습을 위한 신경망을 준비하기 위해 마지막 학습 가능한 계층을 편집합니다.

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

    • 컨벌루션 계층을 선택합니다. 속성 창 하단에서 계층 잠금 해제를 클릭합니다. 이렇게 하면 계층 속성의 잠금이 해제되어 새 작업에 맞게 계층 속성을 조정할 수 있습니다. NumFilters 속성에서 클래스 개수를 새로 설정합니다.

    • 전이된 계층보다 새 계층에서 학습이 더 빨리 이루어지도록 WeightLearnRateFactorBiasLearnRateFactor 값을 늘려서 학습률을 변경합니다.

Convolution 2-D layer selected in Deep Network Designer. The Properties pane shows NumFilters set to 5.

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

    • 완전 연결 계층을 선택합니다. 속성 창 하단에서 계층 잠금 해제를 클릭합니다. 이렇게 하면 계층 속성의 잠금이 해제되어 새 작업에 맞게 계층 속성을 조정할 수 있습니다. OutputSize 속성에서 클래스 개수를 새로 설정합니다.

    • 전이된 계층보다 새 계층에서 학습이 더 빨리 이루어지도록 WeightLearnRateFactorBiasLearnRateFactor 값을 늘려서 학습률을 변경합니다.

Fully connected layer selected in Deep Network Designer. The Properties pane shows OutputSize set to 5.

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

새 영상을 분류하도록 사전 훈련된 신경망을 다시 훈련시키는 방법을 보여주는 예제는 심층 신경망 디자이너를 사용하는 전이 학습을 위해 신경망 준비하기 항목을 참조하십시오. Audio Toolbox™를 사용하고 있다면 오디오 작업에 적합한 사전 훈련된 신경망을 불러올 수도 있습니다. 새 오디오 신호 세트를 분류하도록 사전 훈련된 신경망을 다시 훈련시키는 방법을 보여주는 예제는 Adapt Pretrained Audio Network for New Data Using Deep Network Designer 항목을 참조하십시오.

이 앱을 사용하여 외부 플랫폼에서 신경망을 가져올 수도 있습니다. 자세한 내용은 Import PyTorch® Model Using Deep Network Designer 항목을 참조하십시오.

영상 분류

계층 라이브러리에서 계층을 끌어서 놓고 연결하여 심층 신경망 디자이너로 영상 분류 신경망을 구축할 수 있습니다. 또한 명령줄에서 신경망을 만든 다음 심층 신경망 디자이너로 신경망을 가져올 수도 있습니다.

예를 들어, 신경망을 만들어 10개 클래스로 나누어진 28×28 영상 데이터 세트를 대상으로 영상 분류를 위한 훈련을 합니다.

inputSize = [28 28 1];
numClasses = 10;

layers = [
    imageInputLayer(inputSize)
    convolution2dLayer(5,20)
    batchNormalizationLayer
    reluLayer
    fullyConnectedLayer(numClasses)
    softmaxLayer];

deepNetworkDesigner(layers)

Image classification network in Deep Network Designer. The network starts with an image input layer and ends with a softmax layer.

이 신경망을 사용자 소유의 데이터에 맞게 조정하려면 영상 입력 계층의 InputSize를 영상 입력 크기와 일치하도록 설정하고 완전 연결 계층의 OutputSize를 데이터의 클래스 개수로 설정하십시오. 더 복잡한 분류 작업의 경우, 더 깊은 심층 신경망을 만드십시오. 자세한 내용은 심층 신경망 항목을 참조하십시오.

영상 분류 신경망을 만들고 훈련시키는 방법을 보여주는 예제는 영상 분류 시작하기 항목을 참조하십시오.

시퀀스 분류

심층 신경망 디자이너를 사용하여 처음부터 시퀀스 신경망을 구축하거나 사전 작성된 훈련되지 않은 신경망 중 하나를 시작 페이지에서 선택해 사용할 수 있습니다. 심층 신경망 디자이너 시작 페이지를 엽니다. Sequence-to-Label에서 잠시 멈추고 열기를 클릭합니다. 이렇게 하면 시퀀스 분류 문제에 적합한 사전 작성된 신경망이 열립니다.

Sequence classification network in Deep Network Designer. The network starts with a sequence input layer and ends with a softmax layer.

이 시퀀스 신경망을 자체 데이터를 사용하는 훈련에 맞게 조정할 수 있습니다. 10개의 특징과 5개의 클래스가 있는 데이터가 있다고 가정하겠습니다. 이 신경망을 조정하려면 sequenceInputLayer를 선택하고 InputSize10으로 설정하십시오.

Sequence input layer selected in Deep Network Designer. The Properties pane shows InputSize set to 10.

그런 다음 fullyConnectedLayer를 선택하고 OutputSize를 클래스 개수인 5로 설정합니다.

Fully connected layer selected in Deep Network Designer. The Properties pane shows OutputSize set to 5.

시퀀스 분류 신경망을 만들고 훈련시키는 방법을 보여주는 예제는 심층 신경망 디자이너 시작하기 항목을 참조하십시오.

숫자형 데이터 분류

숫자형 특징으로 구성된 데이터 세트(예: 공간 차원 또는 시간 차원이 없는 숫자형 데이터의 모음)가 있는 경우, 특징 입력 계층을 사용하여 딥러닝 신경망을 훈련시킬 수 있습니다. 특징 입력 계층에 대한 자세한 내용은 featureInputLayer 항목을 참조하십시오.

심층 신경망 디자이너를 사용하여 적합한 신경망을 생성하거나, 명령줄에서 신경망을 만들고 심층 신경망 디자이너로 가져올 수 있습니다.

예를 들어, 10개의 클래스가 있는 숫자형 데이터를 위한 신경망을 만듭니다. 여기서 각 관측값은 20개의 특징으로 구성되어 있습니다.

inputSize = 20;
numClasses = 10;

layers = [
featureInputLayer(inputSize,Normalization="zscore")
fullyConnectedLayer(50)
batchNormalizationLayer
reluLayer
fullyConnectedLayer(numClasses)
softmaxLayer];

deepNetworkDesigner(layers)

Feature classification network in Deep Network Designer. The network starts with a feature input layer and ends with a softmax layer.

이 신경망을 사용자 소유의 데이터에 맞게 조정하려면 특징 입력 계층의 InputSize를 데이터의 특징 수와 일치하도록 설정하고 완전 연결 계층의 OutputSize를 데이터의 클래스 개수로 설정하십시오. 더 복잡한 분류 작업의 경우, 더 깊은 심층 신경망을 만드십시오. 자세한 내용은 심층 신경망 항목을 참조하십시오.

분류 신경망을 회귀 신경망으로 변환하기

신경망의 최종 계층을 조정하여 분류 신경망을 회귀 신경망으로 변환할 수 있습니다. 이러한 변환은 사전 훈련된 분류 신경망을 받아서 회귀 작업을 수행하도록 재훈련시키고자 할 때 유용합니다.

예를 들어 사전 훈련된 GoogLeNet 신경망이 있다고 가정하겠습니다. 이 신경망을 단일 응답 변수를 가진 회귀 신경망으로 변환하려면, 소프트맥스 계층을 제거하고 마지막 완전 연결 계층의 OutputSize를 1(응답 변수의 개수)로 설정합니다.

Diagram of the conversion of a classification network into a regression network. The final layer of the classification network, a softmax layer, is removed.

출력이 복수의 응답 변수를 가진다면 완전 연결 계층의 OutputSize 값을 해당 응답 변수의 개수로 변경합니다.

다중 입력 및 다중 출력 신경망

다중 입력값

신경망에서 여러 소스의 데이터 또는 다양한 형태의 데이터가 필요한 경우 다중 입력값을 갖는 신경망을 정의할 수 있습니다. 예를 들어, 어떤 신경망은 여러 센서에서 캡처한 다양한 해상도의 영상 데이터가 필요합니다.

심층 신경망 디자이너를 사용하여 각 계층의 입력값과 출력값을 제어할 수 있습니다. 예를 들어, 여러 영상 입력값을 사용하는 신경망을 만들려면 각각 영상 입력 계층에서 시작하는 두 개의 분지를 만듭니다.

Network with multiple inputs in Deep Network Designer. The network has two image input layers and a single softmax layer.

다중 출력값

다양한 형식의 여러 응답 변수가 필요한 작업(예: categorical형과 숫자형 출력값이 모두 필요한 작업)의 경우 다중 출력값을 사용하여 신경망을 정의할 수 있습니다.

심층 신경망 디자이너를 사용하여 각 계층의 출력값을 제어할 수 있습니다.

The end of a network with multiple outputs. The first branch ends with a fully connected layer and a softmax layer. The second branch ends with a fully connected layer.

심층 신경망

대규모 신경망을 구축하는 것은 어려울 수 있지만, 심층 신경망 디자이너를 사용하여 생성 속도를 높일 수 있습니다. 한 번에 여러 개의 계층 블록으로 작업할 수 있습니다. 여러 개의 계층을 선택한 다음 복사하여 붙여넣거나 삭제합니다. 예를 들어, 계층 블록을 사용하여 컨벌루션 계층, 배치 정규화 계층, ReLU 계층을 묶어 여러 복사본을 만들 수 있습니다.

Group selection of multiple layers in Deep Network Designer.

훈련된 신경망의 경우, 계층을 복사하면 가중치와 편향도 복사됩니다.

앱으로 작업 공간에서 하위 신경망을 복사하여 쉽게 연결할 수도 있습니다. 앱으로 신경망이나 계층을 가져오려면 새로 만들기 > 작업 공간에서 가져오기를 클릭하십시오. 추가를 클릭하여 계층을 현재 신경망에 추가합니다.

신경망 확인하기

신경망을 확인하고 계층을 더 자세히 살펴보려면 분석을 클릭하십시오. 신경망에서 크기 불일치를 해결하려면 문제를 검사하고 계층 속성을 검토하십시오. 심층 신경망 디자이너로 돌아가서 계층을 편집한 다음 다시 분석을 클릭하여 결과를 확인합니다. 딥러닝 신경망 분석기에 보고되는 오류가 없으면 편집한 신경망이 훈련시킬 준비가 된 것입니다.

Deep Learning Network Analyzer showing zero warnings or errors.

참고 항목

| |

관련 항목