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

MATLAB의 심층 학습

심층 학습이란?

심층 학습은 인간에게는 자연스러운 능력인 경험으로부터의 학습을 컴퓨터에게 가르치는 기계 학습의 한 분야입니다. 기계 학습 알고리즘은 미리 정해진 방정식을 모델로 하는 방법에 의존하지 않고 연산 방법을 사용하여 데이터로부터 직접 정보를 “학습”합니다. 심층 학습은 특히 얼굴 인식, 움직임 감지와 같은 문제를 해결할 때 중요한 이미지 인식과 자율 주행, 차선 검출, 보행자 검출, 자율 주차와 같은 고급 운전자 보조 기술에 특히 적합합니다.

Deep Learning Toolbox™는 심층 신경망의 계층을 만들고 상호 연결하는 간단한 MATLAB® 명령을 제공합니다. 다양한 예제와 사전 훈련된 네트워크가 제공되기 때문에 고급 컴퓨터 비전 알고리즘이나 신경망에 대한 사전 지식이 없어도 쉽게 MATLAB을 심층 학습에 사용할 수 있습니다.

Deep Learning Onramp에서는 실용적인 심층 학습 기법들을 실습을 통해 무료로 소개합니다.

수행하고자 하는 작업자세히 알아보기
전이 학습을 수행하여 데이터로 네트워크 미세 조정

전이 학습을 사용하여 더 빠르게 심층 학습 시작하기

사전 훈련된 네트워크가 새로운 작업을 학습하도록 미세 조정하는 것이 일반적으로 새로운 네트워크를 훈련시키는 것보다 훨씬 더 빠르고 쉽습니다.

사전 훈련된 네트워크로 이미지 분류사전 훈련된 심층 신경망
분류 또는 회귀를 위한 새로운 심층 신경망 만들기

간단한 분류용 심층 학습 네트워크 만들기

회귀를 위해 컨벌루션 신경망 훈련시키기

훈련 또는 예측을 위해 이미지 크기 조정, 회전 또는 전처리심층 학습을 위해 이미지 전처리하기
폴더 이름을 바탕으로 이미지 데이터에 자동으로 레이블을 지정하거나 앱을 사용하여 대화형 방식으로 레이블 지정

이미지 분류를 위해 네트워크 훈련시키기

Image Labeler

시퀀스 및 시계열 데이터를 위한 심층 학습 네트워크 만들기

심층 학습을 사용한 시퀀스 분류

심층 학습을 사용한 시계열 예측

이미지 내 각각의 픽셀 분류(예: 도로, 차, 보행자)Getting Started With Semantic Segmentation Using Deep Learning (Computer Vision Toolbox)
이미지 내 사물 검출 및 인식Deep Learning, Semantic Segmentation, and Detection (Computer Vision Toolbox)
텍스트 데이터 분류 심층 학습을 사용하여 텍스트 데이터 분류하기
음성 인식을 위해 오디오 데이터 분류심층 학습을 사용해 음성 명령 인식하기
네트워크가 학습한 특징 시각화

AlexNet을 사용한 딥 드림 이미지

컨벌루션 신경망의 활성화 시각화하기

데스크탑에서 병렬로 또는 클라우드의 클러스터에서 CPU, GPU, 복수의 GPU로 훈련시키고, 커서 메모리에 담을 수 없는 데이터 세트를 사용해 작업Deep Learning with Big Data on GPUs and in Parallel

자율 주행을 비롯해 심층 학습 응용 분야에 대한 자세한 내용은 심층 학습 응용 사례 항목을 참조하십시오.

사전 훈련된 네트워크를 사용할지 혹은 새로운 심층 네트워크를 만들지 선택하려면 다음 표에 나와 있는 시나리오를 살펴보십시오.

 전이 학습을 위해 사전 훈련된 네트워크 사용새로운 심층 네트워크 만들기
훈련 데이터수백에서 수천 개까지의 레이블 지정 이미지(작음)수천 개에서 수백만 개까지의 레이블 지정 이미지
연산적당한 연산(GPU는 선택 사항)연산 집약적(속도를 위해 GPU 필요)
훈련 시간몇 초에서 몇 분현실 세계 문제의 경우 며칠에서 몇 주
모델 정확도양호, 사전 훈련된 모델에 따라 다름높음, 그러나 작은 데이터 세트에 대해 과적합될 수 있음

자세한 내용은 Choose Network Architecture 항목을 참조하십시오.

심층 학습은 신경망을 사용하여 데이터에서 특징의 유용한 표현을 직접 학습합니다. 신경망은 생물 신경계에서 영감을 얻은 병렬로 동작하는 단순한 요소들을 사용하여 여러 비선형 처리 계층을 결합합니다. 심층 학습 모델은 사물 분류에서 뛰어난 정확도를 달성할 수 있으며, 때로는 인간의 정확도를 능가하기도 합니다.

모델은 대규모의 레이블 지정된 데이터와 많은 계층을 포함하는(보통 컨벌루션 계층도 포함) 신경망 아키텍처를 사용하여 훈련됩니다. 이러한 모델을 훈련시키는 데는 많은 양의 연산이 필요하며, 일반적으로 고성능 GPU를 사용하여 훈련 속도를 높일 수 있습니다. 다음 도식은 컨벌루션 신경망이 여러 이미지에서 자동으로 특징을 학습하는 계층들을 결합하여 새로운 이미지를 분류하는 방식을 보여줍니다.

많은 심층 학습 응용 분야에서 이미지 파일을 사용하며, 때로는 수백만 개의 이미지 파일이 사용되기도 합니다. 심층 학습에 사용할 수많은 이미지에 효율적으로 액세스할 수 있도록 MATLAB은 imageDatastore 함수를 제공합니다. 이 함수를 사용하여 다음을 수행할 수 있습니다.

  • 기계 학습 및 컴퓨터 비전 응용 분야에서 더 빠른 처리 속도를 위해 이미지 배치 자동으로 읽어 들이기

  • 너무 커서 메모리에 담을 수 없는 이미지 컬렉션에서 데이터 가져오기

  • 폴더 이름을 바탕으로 이미지 데이터에 자동으로 레이블 지정하기

MATLAB 코드 10줄로 시작해 보는 심층 학습

이 예제에서는 MATLAB 코드 10줄 만으로 심층 학습을 사용하여 라이브 웹캠의 사물을 식별하는 방법을 보여줍니다. 이 예제를 실행해 보면 MATLAB에서 심층 학습을 사용하는 것이 얼마나 간단한지 알 수 있습니다.

  1. 다음 명령을 실행하여 필요한 다운로드를 받아서 웹캠을 연결하고 사전 훈련된 신경망을 가져옵니다.

    camera = webcam; % Connect to the camera
    net = alexnet;   % Load the neural network

    webcamalexnet 애드온을 설치해야 하는 경우 각 함수에서 링크가 포함된 메시지를 표시합니다. 이 링크를 통해 애드온 탐색기를 실행하여 무료 애드온을 다운로드할 수 있습니다. 또는 Deep Learning Toolbox Model for AlexNet NetworkMATLAB Support Package for USB Webcams를 참조하십시오.

    Deep Learning Toolbox Model for AlexNet Network를 설치한 후에 이를 사용하여 이미지를 분류할 수 있습니다. AlexNet은 사전 훈련된 컨벌루션 신경망(CNN)입니다. 1백만 개가 넘는 이미지에 대해 훈련된 AlexNet은 이미지를 키보드, 마우스, 커피 머그잔, 연필, 각종 동물 등 1,000가지 사물 범주로 분류할 수 있습니다.

  2. 다음 코드를 실행하여 라이브 이미지를 표시하고 분류합니다. 웹캠으로 사물을 가리키면 신경망에서 웹캠이 보여주는 사물이 어떤 클래스인지 추정해서 보고합니다. 사용자가 Ctrl+C를 누를 때까지 신경망은 계속해서 이미지를 분류합니다. 이 코드는 imresize를 사용하여 네트워크에 적합하게 이미지 크기를 조정합니다.

    while true
        im = snapshot(camera);       % Take a picture
        image(im);                   % Show the picture
        im = imresize(im,[227 227]); % Resize the picture for alexnet
        label = classify(net,im);    % Classify the picture
        title(char(label));          % Show the class label
        drawnow
    end

    이 예제에서 네트워크는 커피 머그잔을 올바르게 분류합니다. 주변의 사물을 사용하여 네트워크가 얼마나 정확한지 실험해 보십시오.

    이 예제를 비디오로 시청하려면 Deep Learning in 11 Lines of MATLAB Code를 참조하십시오.

    이 예제를 확장하여 클래스의 확률 점수를 표시하는 방법을 알아보려면 심층 학습을 사용하여 웹캠 이미지 분류하기 항목을 참조하십시오.

    심층 학습의 다음 단계로 넘어가서 다른 작업에도 사전 훈련된 네트워크를 사용해 볼 수 있습니다. 전이 학습이나 특징 추출을 사용하여 이미지 데이터를 대상으로 새로운 분류 문제를 풀어 보십시오. 예제는 전이 학습을 사용하여 더 빠르게 심층 학습 시작하기사전 훈련된 네트워크에서 추출한 특징을 사용하여 분류기 훈련시키기 항목을 참조하십시오. 다른 사전 훈련된 네트워크를 사용해 보려면 사전 훈련된 심층 신경망 항목을 참조하십시오.

전이 학습을 사용하여 더 빠르게 심층 학습 시작하기

전이 학습은 심층 학습 응용 분야에서 널리 사용됩니다. 사전 훈련된 네트워크를 새로운 작업을 학습하기 위한 출발점으로 사용할 수 있습니다. 전이 학습을 통해 네트워크를 미세 조정하는 것이 처음부터 훈련시키는 것보다 훨씬 더 빠르고 쉽습니다. 보다 적은 개수의 훈련 이미지를 사용하여 네트워크가 새로운 작업을 빠르게 학습하도록 할 수 있습니다. 전이 학습의 이점은 사전 훈련된 네트워크가 다양한 이외의 비슷한 작업에 적용할 수 있는 수많은 특징을 이미 학습했다는 데 있습니다.

예를 들어, 수천 또는 수백만 개의 이미지에서 훈련된 네트워크를 가져오는 경우, 새로운 사물 검출에는 수백 개의 이미지만 사용하여 다시 훈련시키면 됩니다. 원래의 훈련 데이터에 비해 훨씬 작은 데이터 세트를 사용하여 사전 훈련된 네트워크를 효과적으로 미세 조정할 수 있습니다. 데이터셋의 크기가 매우 큰 경우에는 전이 학습이 새로운 네트워크를 훈련시키는 것보다 더 빠르지 않을 수 있습니다.

전이 학습을 사용하면 다음과 같은 이점이 있습니다.

  • 사전 훈련된 네트워크의 학습된 특징을 새로운 문제로 옮길 수 있습니다.

  • 전이 학습은 새로운 네트워크를 훈련시키는 것보다 훨씬 쉽고 빠릅니다.

  • 훈련 시간과 데이터셋 크기를 줄일 수 있습니다.

  • 새로운 네트워크를 처음부터 만드는 방법을 익히지 않고 심층 학습을 수행할 수 있습니다.

대화형 방식 예제는 심층 네트워크 디자이너를 사용한 전이 학습 항목을 참조하십시오.

프로그래밍 방식 예제는 Get Started with Transfer Learning새로운 이미지를 분류하도록 심층 학습 네트워크 훈련시키기 항목을 참조하십시오.

사전 훈련된 네트워크에서 추출한 특징을 사용하여 분류기 훈련시키기

특징 추출을 사용하면 훈련에 시간과 노력을 투입하지 않고도 사전 훈련된 네트워크의 강력한 기능을 사용할 수 있습니다. 특징 추출은 심층 학습을 사용하는 가장 빠른 방법이 될 수 있습니다. 사전 훈련된 네트워크에서 학습된 특징을 추출한 다음 예를 들어 서포트 벡터 머신(SVM — Statistics and Machine Learning Toolbox™ 필요)과 같은 분류기를 훈련시키는 데 이렇게 추출한 특징을 사용할 수 있습니다. 예를 들어, alexnet을 사용하여 훈련된 SVM이 훈련 및 검증 세트에 대해 90%를 상회하는 정확도를 달성할 수 있는 경우, 전이 학습을 사용하여 미미한 정확도 개선을 얻는 것이 그다지 크게 득이 되지 않을 수 있습니다. 작은 데이터셋에서 미세 조정을 수행하는 경우에는 과적합의 위험이 따릅니다. 응용 사례에서 SVM으로 양호한 정확도를 달성하기 어려운 경우에는 미세 조정이라는 수고를 들여서 더 높은 정확도를 달성하는 것이 좋을 수 있습니다.

예제는 Extract Image Features Using Pretrained Network 항목을 참조하십시오.

CPU, GPU, 병렬 및 클라우드에서 빅 데이터를 사용한 심층 학습

신경망은 본질적으로 병렬 알고리즘입니다. Parallel Computing Toolbox™를 사용하여 멀티코어 CPU, GPU(그래픽 처리 장치) 및 여러 개의 CPU와 GPU가 탑재된 컴퓨터 클러스터로 훈련을 분산하여 이러한 병렬 처리의 이점을 활용할 수 있습니다.

심층 네트워크를 훈련시키는 데는 엄청나게 많은 양의 연산이 필요하며, 일반적으로 고성능 GPU를 사용하여 훈련 속도를 높일 수 있습니다. 적합한 GPU가 없는 경우에는 대신 하나 이상의 CPU 코어에서 훈련시킬 수 있습니다. 단일 GPU나 CPU에서, 여러 개의 GPU나 CPU 코어에서 또는 클러스터에서 병렬로 컨벌루션 신경망을 훈련시킬 수 있습니다. GPU 또는 병렬 옵션을 사용하려면 Parallel Computing Toolbox가 필요합니다.

메모리에 담을 수 없을 정도로 큰 데이터 세트가 사용되는 문제를 풀기 위해 여러 개의 컴퓨터가 필요하지 않습니다. 컴퓨터 클러스터 없이도 imageDatastore 함수를 사용하여 데이터 배치로 작업할 수 있습니다. 그러나 클러스터를 사용할 수 있다면 다량의 데이터를 이리저리 이동하는 것보다 코드를 데이터 리포지토리에 두는 것이 도움이 될 수 있습니다.

심층 학습 하드웨어 및 메모리 설정에 대한 자세한 내용은 Deep Learning with Big Data on GPUs and in Parallel 항목을 참조하십시오.

관련 항목